cognite-neat 0.85.6__tar.gz → 0.85.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 (323) hide show
  1. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/PKG-INFO +1 -1
  2. cognite_neat-0.85.8/cognite/neat/_version.py +1 -0
  3. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/routers/data_exploration.py +2 -2
  4. cognite_neat-0.85.8/cognite/neat/graph/extractors/_classic_cdf/_assets.py +223 -0
  5. cognite_neat-0.85.8/cognite/neat/graph/extractors/_classic_cdf/_events.py +153 -0
  6. cognite_neat-0.85.8/cognite/neat/graph/extractors/_classic_cdf/_files.py +181 -0
  7. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/extractors/_classic_cdf/_labels.py +20 -11
  8. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/extractors/_classic_cdf/_relationships.py +35 -20
  9. cognite_neat-0.85.8/cognite/neat/graph/extractors/_classic_cdf/_sequences.py +140 -0
  10. cognite_neat-0.85.8/cognite/neat/graph/extractors/_classic_cdf/_timeseries.py +176 -0
  11. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/extractors/_mock_graph_generator.py +6 -2
  12. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/loaders/_base.py +3 -3
  13. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/loaders/_rdf2dms.py +13 -11
  14. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/queries/_base.py +16 -6
  15. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/queries/_shared.py +2 -2
  16. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/extractors/_mock_graph_generator.py +4 -2
  17. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/_asset_loader.py +5 -5
  18. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/core/rdf_to_assets.py +4 -4
  19. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/core/rdf_to_relationships.py +2 -2
  20. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/transformations/query_generator/sparql.py +2 -2
  21. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/transformations/transformer.py +2 -2
  22. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_rules2ontology.py +6 -6
  23. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_graph2rules.py +4 -4
  24. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2classes.py +3 -3
  25. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2properties.py +5 -5
  26. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/exporters/_rules2ontology.py +6 -6
  27. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_inference2rules.py +35 -25
  28. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_owl2rules/_owl2classes.py +3 -3
  29. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_owl2rules/_owl2properties.py +5 -5
  30. cognite_neat-0.85.8/cognite/neat/utils/__init__.py +3 -0
  31. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/utils.py +6 -6
  32. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/pyproject.toml +1 -1
  33. cognite_neat-0.85.6/cognite/neat/_version.py +0 -1
  34. cognite_neat-0.85.6/cognite/neat/graph/extractors/_classic_cdf/_assets.py +0 -114
  35. cognite_neat-0.85.6/cognite/neat/graph/extractors/_classic_cdf/_events.py +0 -123
  36. cognite_neat-0.85.6/cognite/neat/graph/extractors/_classic_cdf/_files.py +0 -137
  37. cognite_neat-0.85.6/cognite/neat/graph/extractors/_classic_cdf/_sequences.py +0 -102
  38. cognite_neat-0.85.6/cognite/neat/graph/extractors/_classic_cdf/_timeseries.py +0 -128
  39. cognite_neat-0.85.6/cognite/neat/utils/__init__.py +0 -3
  40. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/LICENSE +0 -0
  41. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/README.md +0 -0
  42. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/__init__.py +0 -0
  43. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/_shared.py +0 -0
  44. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/__init__.py +0 -0
  45. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/asgi/metrics.py +0 -0
  46. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/configuration.py +0 -0
  47. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/context_manager/__init__.py +0 -0
  48. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/context_manager/manager.py +0 -0
  49. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/data_classes/__init__.py +0 -0
  50. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/data_classes/rest.py +0 -0
  51. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/explorer.py +0 -0
  52. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/routers/configuration.py +0 -0
  53. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/routers/core.py +0 -0
  54. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/routers/crud.py +0 -0
  55. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/routers/metrics.py +0 -0
  56. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/routers/rules.py +0 -0
  57. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/routers/workflows.py +0 -0
  58. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/utils/__init__.py +0 -0
  59. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/utils/data_mapping.py +0 -0
  60. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/utils/logging.py +0 -0
  61. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/api/utils/query_templates.py +0 -0
  62. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/main.py +0 -0
  63. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/monitoring/__init__.py +0 -0
  64. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/monitoring/metrics.py +0 -0
  65. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/index.html +0 -0
  66. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/.gitignore +0 -0
  67. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/README.md +0 -0
  68. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/asset-manifest.json +0 -0
  69. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/favicon.ico +0 -0
  70. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/img/architect-icon.svg +0 -0
  71. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/img/developer-icon.svg +0 -0
  72. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/img/sme-icon.svg +0 -0
  73. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/index.html +0 -0
  74. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/logo192.png +0 -0
  75. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/manifest.json +0 -0
  76. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/robots.txt +0 -0
  77. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/static/css/main.38a62222.css +0 -0
  78. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/static/css/main.38a62222.css.map +0 -0
  79. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js +0 -0
  80. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js.LICENSE.txt +0 -0
  81. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js.map +0 -0
  82. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/app/ui/neat-app/build/static/media/logo.8093b84df9ed36a174c629d6fe0b730d.svg +0 -0
  83. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/config.py +0 -0
  84. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/constants.py +0 -0
  85. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/exceptions.py +0 -0
  86. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/__init__.py +0 -0
  87. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/_shared.py +0 -0
  88. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/_tracking/__init__.py +0 -0
  89. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/_tracking/base.py +0 -0
  90. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/_tracking/log.py +0 -0
  91. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  92. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/examples/Knowledge-Graph-Nordic44.xml +0 -0
  93. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/examples/__init__.py +0 -0
  94. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  95. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/exceptions.py +0 -0
  96. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/extractors/__init__.py +0 -0
  97. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/extractors/_base.py +0 -0
  98. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/extractors/_classic_cdf/__init__.py +0 -0
  99. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/extractors/_dexpi.py +0 -0
  100. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/extractors/_rdf_file.py +0 -0
  101. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/issues/__init__.py +0 -0
  102. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/issues/loader.py +0 -0
  103. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/loaders/__init__.py +0 -0
  104. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/loaders/_rdf2asset.py +0 -0
  105. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/models.py +0 -0
  106. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/queries/__init__.py +0 -0
  107. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/queries/_construct.py +0 -0
  108. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/stores/__init__.py +0 -0
  109. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/stores/_base.py +0 -0
  110. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/stores/_oxrdflib.py +0 -0
  111. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/stores/_provenance.py +0 -0
  112. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/transformers/__init__.py +0 -0
  113. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/transformers/_base.py +0 -0
  114. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/graph/transformers/_classic_cdf.py +0 -0
  115. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/issues.py +0 -0
  116. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/__init__.py +0 -0
  117. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/__init__.py +0 -0
  118. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  119. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/examples/Knowledge-Graph-Nordic44.xml +0 -0
  120. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/examples/__init__.py +0 -0
  121. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  122. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/exceptions.py +0 -0
  123. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/extractors/__init__.py +0 -0
  124. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/extractors/_base.py +0 -0
  125. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/extractors/_dexpi.py +0 -0
  126. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/extractors/_graph_capturing_sheet.py +0 -0
  127. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/__init__.py +0 -0
  128. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/_base.py +0 -0
  129. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/_exceptions.py +0 -0
  130. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/core/__init__.py +0 -0
  131. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/core/labels.py +0 -0
  132. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/core/models.py +0 -0
  133. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/rdf_to_dms.py +0 -0
  134. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/loaders/validator.py +0 -0
  135. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/models.py +0 -0
  136. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/stores/__init__.py +0 -0
  137. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/stores/_base.py +0 -0
  138. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/stores/_graphdb_store.py +0 -0
  139. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/stores/_memory_store.py +0 -0
  140. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/stores/_oxigraph_store.py +0 -0
  141. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/stores/_oxrdflib.py +0 -0
  142. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/stores/_rdf_to_graph.py +0 -0
  143. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/transformations/__init__.py +0 -0
  144. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/transformations/entity_matcher.py +0 -0
  145. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/graph/transformations/query_generator/__init__.py +0 -0
  146. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/__init__.py +0 -0
  147. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/analysis.py +0 -0
  148. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/Rules-Nordic44-to-graphql.xlsx +0 -0
  149. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/Rules-Nordic44.xlsx +0 -0
  150. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/__init__.py +0 -0
  151. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/power-grid-containers.yaml +0 -0
  152. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/power-grid-example.xlsx +0 -0
  153. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/power-grid-model.yaml +0 -0
  154. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/rules-template.xlsx +0 -0
  155. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/sheet2cdf-transformation-rules.xlsx +0 -0
  156. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/skos-rules.xlsx +0 -0
  157. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/source-to-solution-mapping-rules.xlsx +0 -0
  158. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/examples/wind-energy.owl +0 -0
  159. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exceptions.py +0 -0
  160. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/__init__.py +0 -0
  161. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_base.py +0 -0
  162. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_core/__init__.py +0 -0
  163. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_core/rules2labels.py +0 -0
  164. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_rules2dms.py +0 -0
  165. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_rules2excel.py +0 -0
  166. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_rules2graphql.py +0 -0
  167. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_rules2pydantic_models.py +0 -0
  168. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_rules2rules.py +0 -0
  169. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_rules2triples.py +0 -0
  170. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/exporters/_validation.py +0 -0
  171. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/__init__.py +0 -0
  172. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_base.py +0 -0
  173. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_dict2rules.py +0 -0
  174. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_dms2rules.py +0 -0
  175. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_json2rules.py +0 -0
  176. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_owl2rules/__init__.py +0 -0
  177. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2metadata.py +0 -0
  178. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2rules.py +0 -0
  179. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_spreadsheet2rules.py +0 -0
  180. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_xsd2rules.py +0 -0
  181. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/importers/_yaml2rules.py +0 -0
  182. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/models/__init__.py +0 -0
  183. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/models/_base.py +0 -0
  184. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/models/raw_rules.py +0 -0
  185. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/models/rdfpath.py +0 -0
  186. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/models/rules.py +0 -0
  187. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/models/tables.py +0 -0
  188. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/rules/models/value_types.py +0 -0
  189. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/workflows/examples/Export_DMS/workflow.yaml +0 -0
  190. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/workflows/examples/Export_Rules_to_Ontology/workflow.yaml +0 -0
  191. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/workflows/examples/Extract_DEXPI_Graph_and_Export_Rules/workflow.yaml +0 -0
  192. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/workflows/examples/Extract_RDF_Graph_and_Generate_Assets/workflow.yaml +0 -0
  193. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/workflows/examples/Import_DMS/workflow.yaml +0 -0
  194. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/workflows/examples/Ontology_to_Data_Model/workflow.yaml +0 -0
  195. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/workflows/examples/Validate_Rules/workflow.yaml +0 -0
  196. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/workflows/examples/Validate_Solution_Model/workflow.yaml +0 -0
  197. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/workflows/examples/Visualize_Data_Model_Using_Mock_Graph/workflow.yaml +0 -0
  198. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/legacy/workflows/examples/Visualize_Semantic_Data_Model/workflow.yaml +0 -0
  199. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/py.typed +0 -0
  200. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/__init__.py +0 -0
  201. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/_shared.py +0 -0
  202. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/analysis/__init__.py +0 -0
  203. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/analysis/_base.py +0 -0
  204. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/analysis/_information_rules.py +0 -0
  205. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/examples/__init__.py +0 -0
  206. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/examples/wind-energy.owl +0 -0
  207. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/exceptions.py +0 -0
  208. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/exporters/__init__.py +0 -0
  209. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/exporters/_base.py +0 -0
  210. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/exporters/_rules2dms.py +0 -0
  211. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/exporters/_rules2excel.py +0 -0
  212. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/exporters/_rules2yaml.py +0 -0
  213. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/exporters/_validation.py +0 -0
  214. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/__init__.py +0 -0
  215. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_base.py +0 -0
  216. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_dms2rules.py +0 -0
  217. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_dtdl2rules/__init__.py +0 -0
  218. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_dtdl2rules/_unit_lookup.py +0 -0
  219. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py +0 -0
  220. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_dtdl2rules/dtdl_importer.py +0 -0
  221. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_dtdl2rules/spec.py +0 -0
  222. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_owl2rules/__init__.py +0 -0
  223. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_owl2rules/_owl2metadata.py +0 -0
  224. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_owl2rules/_owl2rules.py +0 -0
  225. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_spreadsheet2rules.py +0 -0
  226. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/importers/_yaml2rules.py +0 -0
  227. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/issues/__init__.py +0 -0
  228. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/issues/base.py +0 -0
  229. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/issues/dms.py +0 -0
  230. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/issues/fileread.py +0 -0
  231. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/issues/formatters.py +0 -0
  232. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/issues/importing.py +0 -0
  233. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/issues/spreadsheet.py +0 -0
  234. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/issues/spreadsheet_file.py +0 -0
  235. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/__init__.py +0 -0
  236. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/_base.py +0 -0
  237. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/_constants.py +0 -0
  238. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/_rdfpath.py +0 -0
  239. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/_types/__init__.py +0 -0
  240. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/_types/_base.py +0 -0
  241. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/_types/_field.py +0 -0
  242. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/asset/__init__.py +0 -0
  243. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/asset/_converter.py +0 -0
  244. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/asset/_rules.py +0 -0
  245. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/asset/_rules_input.py +0 -0
  246. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/asset/_serializer.py +0 -0
  247. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/asset/_validation.py +0 -0
  248. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/data_types.py +0 -0
  249. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/dms/__init__.py +0 -0
  250. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/dms/_converter.py +0 -0
  251. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/dms/_exporter.py +0 -0
  252. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/dms/_rules.py +0 -0
  253. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/dms/_rules_input.py +0 -0
  254. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/dms/_schema.py +0 -0
  255. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/dms/_serializer.py +0 -0
  256. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/dms/_validation.py +0 -0
  257. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/domain.py +0 -0
  258. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/entities.py +0 -0
  259. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/information/__init__.py +0 -0
  260. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/information/_converter.py +0 -0
  261. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/information/_rules.py +0 -0
  262. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/information/_rules_input.py +0 -0
  263. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/information/_serializer.py +0 -0
  264. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/information/_validation.py +0 -0
  265. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/rules/models/wrapped_entities.py +0 -0
  266. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/auth.py +0 -0
  267. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/auxiliary.py +0 -0
  268. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/cdf.py +0 -0
  269. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/cdf_classes.py +0 -0
  270. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/cdf_loaders/__init__.py +0 -0
  271. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/cdf_loaders/_base.py +0 -0
  272. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/cdf_loaders/_data_modeling.py +0 -0
  273. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/cdf_loaders/_ingestion.py +0 -0
  274. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/cdf_loaders/data_classes.py +0 -0
  275. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/exceptions.py +0 -0
  276. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/spreadsheet.py +0 -0
  277. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/text.py +0 -0
  278. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/upload.py +0 -0
  279. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/utils/xml_.py +0 -0
  280. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/__init__.py +0 -0
  281. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/_exceptions.py +0 -0
  282. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/base.py +0 -0
  283. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/cdf_store.py +0 -0
  284. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/examples/Export_DMS/workflow.yaml +0 -0
  285. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/examples/Export_Rules_to_Ontology/workflow.yaml +0 -0
  286. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/examples/Extract_DEXPI_Graph_and_Export_Rules/workflow.yaml +0 -0
  287. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/examples/Extract_RDF_Graph_and_Generate_Assets/workflow.yaml +0 -0
  288. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/examples/Import_DMS/workflow.yaml +0 -0
  289. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/examples/Ontology_to_Data_Model/workflow.yaml +0 -0
  290. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/examples/Validate_Rules/workflow.yaml +0 -0
  291. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/examples/Validate_Solution_Model/workflow.yaml +0 -0
  292. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/examples/Visualize_Data_Model_Using_Mock_Graph/workflow.yaml +0 -0
  293. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/examples/Visualize_Semantic_Data_Model/workflow.yaml +0 -0
  294. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/manager.py +0 -0
  295. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/migration/__init__.py +0 -0
  296. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/migration/steps.py +0 -0
  297. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/migration/wf_manifests.py +0 -0
  298. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/model.py +0 -0
  299. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/__init__.py +0 -0
  300. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/data_contracts.py +0 -0
  301. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/__init__.py +0 -0
  302. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/current/__init__.py +0 -0
  303. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/current/graph_extractor.py +0 -0
  304. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/current/graph_loader.py +0 -0
  305. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/current/graph_store.py +0 -0
  306. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/current/rules_exporter.py +0 -0
  307. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/current/rules_importer.py +0 -0
  308. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/current/rules_validator.py +0 -0
  309. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/io/__init__.py +0 -0
  310. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/io/io_steps.py +0 -0
  311. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/legacy/__init__.py +0 -0
  312. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/legacy/graph_contextualization.py +0 -0
  313. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/legacy/graph_extractor.py +0 -0
  314. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/legacy/graph_loader.py +0 -0
  315. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/legacy/graph_store.py +0 -0
  316. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/legacy/graph_transformer.py +0 -0
  317. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/legacy/rules_exporter.py +0 -0
  318. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/lib/legacy/rules_importer.py +0 -0
  319. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps/step_model.py +0 -0
  320. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/steps_registry.py +0 -0
  321. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/tasks.py +0 -0
  322. {cognite_neat-0.85.6 → cognite_neat-0.85.8}/cognite/neat/workflows/triggers.py +0 -0
  323. {cognite_neat-0.85.6 → cognite_neat-0.85.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.85.6
3
+ Version: 0.85.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.85.8"
@@ -17,7 +17,7 @@ from cognite.neat.app.api.data_classes.rest import (
17
17
  from cognite.neat.app.api.utils.data_mapping import rdf_result_to_api_response
18
18
  from cognite.neat.app.api.utils.query_templates import query_templates
19
19
  from cognite.neat.legacy.graph.transformations import query_generator
20
- from cognite.neat.utils.utils import remove_namespace
20
+ from cognite.neat.utils.utils import remove_namespace_from_uri
21
21
  from cognite.neat.workflows.steps.data_contracts import RulesData, SolutionGraph, SourceGraph
22
22
 
23
23
  router = APIRouter()
@@ -51,7 +51,7 @@ def get_datatype_properties(request: DatatypePropertyRequest):
51
51
  {
52
52
  "id": row[rdflib.Variable("property")],
53
53
  "count": int(row[rdflib.Variable("occurrence")]),
54
- "name": remove_namespace(row[rdflib.Variable("property")]),
54
+ "name": remove_namespace_from_uri(row[rdflib.Variable("property")]),
55
55
  }
56
56
  for row in results["rows"]
57
57
  ]
@@ -0,0 +1,223 @@
1
+ import json
2
+ import re
3
+ from collections.abc import Callable, Iterable
4
+ from datetime import datetime, timezone
5
+ from pathlib import Path
6
+ from typing import cast
7
+
8
+ from cognite.client import CogniteClient
9
+ from cognite.client.data_classes import Asset, AssetFilter, AssetList
10
+ from rdflib import RDF, Literal, Namespace
11
+
12
+ from cognite.neat.constants import DEFAULT_NAMESPACE
13
+ from cognite.neat.graph.extractors._base import BaseExtractor
14
+ from cognite.neat.graph.models import Triple
15
+ from cognite.neat.utils.utils import create_sha256_hash, string_to_ideal_type
16
+
17
+
18
+ class AssetsExtractor(BaseExtractor):
19
+ """Extract data from Cognite Data Fusions Assets into Neat.
20
+
21
+ Args:
22
+ assets (Iterable[Asset]): An iterable of assets.
23
+ namespace (Namespace, optional): The namespace to use. Defaults to DEFAULT_NAMESPACE.
24
+ to_type (Callable[[Asset], str | None], optional): A function to convert an asset to a type. Defaults to None.
25
+ If None or if the function returns None, the asset will be set to the default type "Asset".
26
+ total (int, optional): The total number of assets to load. If passed, you will get a progress bar if rich
27
+ is installed. Defaults to None.
28
+ limit (int, optional): The maximal number of assets to load. Defaults to None. This is typically used for
29
+ testing setup of the extractor. For example, if you are extracting 100 000 assets, you might want to
30
+ limit the extraction to 1000 assets to test the setup.
31
+ unpack_metadata (bool, optional): Whether to unpack metadata. Defaults to False, which yields the metadata as
32
+ a JSON string.
33
+ """
34
+
35
+ _SPACE_PATTERN = re.compile(r"\s+")
36
+
37
+ def __init__(
38
+ self,
39
+ assets: Iterable[Asset],
40
+ namespace: Namespace | None = None,
41
+ to_type: Callable[[Asset], str | None] | None = None,
42
+ total: int | None = None,
43
+ limit: int | None = None,
44
+ unpack_metadata: bool = False,
45
+ ):
46
+ self.namespace = namespace or DEFAULT_NAMESPACE
47
+ self.assets = assets
48
+ self.to_type = to_type
49
+ self.total = total
50
+ self.limit = min(limit, total) if limit and total else limit
51
+ self.unpack_metadata = unpack_metadata
52
+
53
+ @classmethod
54
+ def from_dataset(
55
+ cls,
56
+ client: CogniteClient,
57
+ data_set_external_id: str,
58
+ namespace: Namespace | None = None,
59
+ to_type: Callable[[Asset], str | None] | None = None,
60
+ limit: int | None = None,
61
+ unpack_metadata: bool = False,
62
+ ):
63
+ total = client.assets.aggregate_count(filter=AssetFilter(data_set_ids=[{"externalId": data_set_external_id}]))
64
+
65
+ return cls(
66
+ cast(
67
+ Iterable[Asset],
68
+ client.assets(data_set_external_ids=data_set_external_id),
69
+ ),
70
+ namespace,
71
+ to_type,
72
+ total,
73
+ limit,
74
+ unpack_metadata=unpack_metadata,
75
+ )
76
+
77
+ @classmethod
78
+ def from_hierarchy(
79
+ cls,
80
+ client: CogniteClient,
81
+ root_asset_external_id: str,
82
+ namespace: Namespace | None = None,
83
+ to_type: Callable[[Asset], str | None] | None = None,
84
+ limit: int | None = None,
85
+ unpack_metadata: bool = False,
86
+ ):
87
+ total = client.assets.aggregate_count(
88
+ filter=AssetFilter(asset_subtree_ids=[{"externalId": root_asset_external_id}])
89
+ )
90
+
91
+ return cls(
92
+ cast(
93
+ Iterable[Asset],
94
+ client.assets(asset_subtree_external_ids=root_asset_external_id),
95
+ ),
96
+ namespace,
97
+ to_type,
98
+ total,
99
+ limit,
100
+ unpack_metadata=unpack_metadata,
101
+ )
102
+
103
+ @classmethod
104
+ def from_file(
105
+ cls,
106
+ file_path: str,
107
+ namespace: Namespace | None = None,
108
+ to_type: Callable[[Asset], str] | None = None,
109
+ limit: int | None = None,
110
+ unpack_metadata: bool = False,
111
+ ):
112
+ return cls(
113
+ AssetList.load(Path(file_path).read_text()),
114
+ namespace,
115
+ to_type,
116
+ limit,
117
+ unpack_metadata=unpack_metadata,
118
+ )
119
+
120
+ def extract(self) -> Iterable[Triple]:
121
+ """Extracts an asset with the given asset_id."""
122
+ if self.total:
123
+ try:
124
+ from rich.progress import track
125
+ except ModuleNotFoundError:
126
+ to_iterate = self.assets
127
+ else:
128
+ to_iterate = track(
129
+ self.assets,
130
+ total=self.limit or self.total,
131
+ description="Extracting Assets",
132
+ )
133
+ else:
134
+ to_iterate = self.assets
135
+ for no, asset in enumerate(to_iterate):
136
+ yield from self._asset2triples(asset)
137
+ if self.limit and no >= self.limit:
138
+ break
139
+
140
+ def _asset2triples(self, asset: Asset) -> list[Triple]:
141
+ """Converts an asset to triples."""
142
+ id_ = self.namespace[f"Asset_{asset.id}"]
143
+
144
+ # Set rdf type
145
+ type_ = "Asset"
146
+ if self.to_type:
147
+ type_ = self.to_type(asset) or type_
148
+ type_ = self._SPACE_PATTERN.sub("_", type_)
149
+
150
+ triples: list[Triple] = [(id_, RDF.type, self.namespace[type_])]
151
+
152
+ # Create attributes
153
+ if asset.name:
154
+ triples.append((id_, self.namespace.name, Literal(asset.name)))
155
+
156
+ if asset.description:
157
+ triples.append((id_, self.namespace.description, Literal(asset.description)))
158
+
159
+ if asset.external_id:
160
+ triples.append((id_, self.namespace.external_id, Literal(asset.external_id)))
161
+
162
+ if asset.source:
163
+ triples.append((id_, self.namespace.source, Literal(asset.source)))
164
+
165
+ # properties ref creation and update
166
+ triples.append(
167
+ (
168
+ id_,
169
+ self.namespace.created_time,
170
+ Literal(datetime.fromtimestamp(asset.created_time / 1000, timezone.utc)),
171
+ )
172
+ )
173
+ triples.append(
174
+ (
175
+ id_,
176
+ self.namespace.last_updated_time,
177
+ Literal(datetime.fromtimestamp(asset.last_updated_time / 1000, timezone.utc)),
178
+ )
179
+ )
180
+
181
+ if asset.labels:
182
+ for label in asset.labels:
183
+ # external_id can create ill-formed URIs, so we create websafe URIs
184
+ # since labels do not have internal ids, we use the external_id as the id
185
+ triples.append(
186
+ (
187
+ id_,
188
+ self.namespace.label,
189
+ self.namespace[f"Label_{create_sha256_hash(label.dump()['externalId'])}"],
190
+ )
191
+ )
192
+
193
+ if asset.metadata:
194
+ if self.unpack_metadata:
195
+ for key, value in asset.metadata.items():
196
+ if value:
197
+ triples.append(
198
+ (
199
+ id_,
200
+ self.namespace[key],
201
+ Literal(string_to_ideal_type(value)),
202
+ )
203
+ )
204
+ else:
205
+ triples.append((id_, self.namespace.metadata, Literal(json.dumps(asset.metadata))))
206
+
207
+ # Create connections:
208
+ if asset.parent_id:
209
+ triples.append((id_, self.namespace.parent, self.namespace[f"Asset_{asset.parent_id}"]))
210
+
211
+ if asset.root_id:
212
+ triples.append((id_, self.namespace.root, self.namespace[f"Asset_{asset.root_id}"]))
213
+
214
+ if asset.data_set_id:
215
+ triples.append(
216
+ (
217
+ id_,
218
+ self.namespace.dataset,
219
+ self.namespace[f"Dataset_{asset.data_set_id}"],
220
+ )
221
+ )
222
+
223
+ return triples
@@ -0,0 +1,153 @@
1
+ import json
2
+ from collections.abc import Iterable
3
+ from datetime import datetime, timezone
4
+ from pathlib import Path
5
+ from typing import cast
6
+
7
+ from cognite.client import CogniteClient
8
+ from cognite.client.data_classes import Event, EventList
9
+ from pydantic import AnyHttpUrl, ValidationError
10
+ from rdflib import RDF, Literal, Namespace, URIRef
11
+
12
+ from cognite.neat.constants import DEFAULT_NAMESPACE
13
+ from cognite.neat.graph.extractors._base import BaseExtractor
14
+ from cognite.neat.graph.models import Triple
15
+ from cognite.neat.utils.utils import string_to_ideal_type
16
+
17
+
18
+ class EventsExtractor(BaseExtractor):
19
+ """Extract data from Cognite Data Fusions Events into Neat.
20
+
21
+ Args:
22
+ events (Iterable[Event]): An iterable of events.
23
+ namespace (Namespace, optional): The namespace to use. Defaults to DEFAULT_NAMESPACE.
24
+ unpack_metadata (bool, optional): Whether to unpack metadata. Defaults to False, which yields the metadata as
25
+ a JSON string.
26
+ """
27
+
28
+ def __init__(
29
+ self,
30
+ events: Iterable[Event],
31
+ namespace: Namespace | None = None,
32
+ unpack_metadata: bool = False,
33
+ ):
34
+ self.namespace = namespace or DEFAULT_NAMESPACE
35
+ self.events = events
36
+ self.unpack_metadata = unpack_metadata
37
+
38
+ @classmethod
39
+ def from_dataset(
40
+ cls,
41
+ client: CogniteClient,
42
+ data_set_external_id: str,
43
+ namespace: Namespace | None = None,
44
+ unpack_metadata: bool = False,
45
+ ):
46
+ return cls(
47
+ cast(
48
+ Iterable[Event],
49
+ client.events(data_set_external_ids=data_set_external_id),
50
+ ),
51
+ namespace,
52
+ unpack_metadata,
53
+ )
54
+
55
+ @classmethod
56
+ def from_file(
57
+ cls,
58
+ file_path: str,
59
+ namespace: Namespace | None = None,
60
+ unpack_metadata: bool = False,
61
+ ):
62
+ return cls(EventList.load(Path(file_path).read_text()), namespace, unpack_metadata)
63
+
64
+ def extract(self) -> Iterable[Triple]:
65
+ """Extract events as triples."""
66
+ for event in self.events:
67
+ yield from self._event2triples(event)
68
+
69
+ def _event2triples(self, event: Event) -> list[Triple]:
70
+ id_ = self.namespace[f"Event_{event.id}"]
71
+
72
+ # Set rdf type
73
+ triples: list[Triple] = [(id_, RDF.type, self.namespace.Event)]
74
+
75
+ # Create attributes
76
+
77
+ if event.external_id:
78
+ triples.append((id_, self.namespace.external_id, Literal(event.external_id)))
79
+
80
+ if event.source:
81
+ triples.append((id_, self.namespace.type, Literal(event.source)))
82
+
83
+ if event.type:
84
+ triples.append((id_, self.namespace.type, Literal(event.type)))
85
+
86
+ if event.subtype:
87
+ triples.append((id_, self.namespace.subtype, Literal(event.subtype)))
88
+
89
+ if event.metadata:
90
+ if self.unpack_metadata:
91
+ for key, value in event.metadata.items():
92
+ if value:
93
+ type_aware_value = string_to_ideal_type(value)
94
+ try:
95
+ triples.append((id_, self.namespace[key], URIRef(str(AnyHttpUrl(type_aware_value))))) # type: ignore
96
+ except ValidationError:
97
+ triples.append((id_, self.namespace[key], Literal(type_aware_value)))
98
+ else:
99
+ triples.append((id_, self.namespace.metadata, Literal(json.dumps(event.metadata))))
100
+
101
+ if event.description:
102
+ triples.append((id_, self.namespace.description, Literal(event.description)))
103
+
104
+ if event.created_time:
105
+ triples.append(
106
+ (
107
+ id_,
108
+ self.namespace.created_time,
109
+ Literal(datetime.fromtimestamp(event.created_time / 1000, timezone.utc)),
110
+ )
111
+ )
112
+
113
+ if event.last_updated_time:
114
+ triples.append(
115
+ (
116
+ id_,
117
+ self.namespace.last_updated_time,
118
+ Literal(datetime.fromtimestamp(event.last_updated_time / 1000, timezone.utc)),
119
+ )
120
+ )
121
+
122
+ if event.start_time:
123
+ triples.append(
124
+ (
125
+ id_,
126
+ self.namespace.start_time,
127
+ Literal(datetime.fromtimestamp(event.start_time / 1000, timezone.utc)),
128
+ )
129
+ )
130
+
131
+ if event.end_time:
132
+ triples.append(
133
+ (
134
+ id_,
135
+ self.namespace.end_time,
136
+ Literal(datetime.fromtimestamp(event.end_time / 1000, timezone.utc)),
137
+ )
138
+ )
139
+
140
+ if event.data_set_id:
141
+ triples.append(
142
+ (
143
+ id_,
144
+ self.namespace.data_set_id,
145
+ self.namespace[f"Dataset_{event.data_set_id}"],
146
+ )
147
+ )
148
+
149
+ if event.asset_ids:
150
+ for asset_id in event.asset_ids:
151
+ triples.append((id_, self.namespace.asset, self.namespace[f"Asset_{asset_id}"]))
152
+
153
+ return triples
@@ -0,0 +1,181 @@
1
+ import json
2
+ from collections.abc import Iterable
3
+ from datetime import datetime, timezone
4
+ from pathlib import Path
5
+ from typing import cast
6
+ from urllib.parse import quote
7
+
8
+ from cognite.client import CogniteClient
9
+ from cognite.client.data_classes import FileMetadata, FileMetadataList
10
+ from pydantic import AnyHttpUrl, ValidationError
11
+ from rdflib import RDF, Literal, Namespace, URIRef
12
+
13
+ from cognite.neat.constants import DEFAULT_NAMESPACE
14
+ from cognite.neat.graph.extractors._base import BaseExtractor
15
+ from cognite.neat.graph.models import Triple
16
+ from cognite.neat.utils.utils import string_to_ideal_type
17
+
18
+
19
+ class FilesExtractor(BaseExtractor):
20
+ """Extract data from Cognite Data Fusions files metadata into Neat.
21
+
22
+ Args:
23
+ files_metadata (Iterable[FileMetadata]): An iterable of files metadata.
24
+ namespace (Namespace, optional): The namespace to use. Defaults to DEFAULT_NAMESPACE.
25
+ unpack_metadata (bool, optional): Whether to unpack metadata. Defaults to False, which yields the metadata as
26
+ a JSON string.
27
+ """
28
+
29
+ def __init__(
30
+ self,
31
+ files_metadata: Iterable[FileMetadata],
32
+ namespace: Namespace | None = None,
33
+ unpack_metadata: bool = False,
34
+ ):
35
+ self.namespace = namespace or DEFAULT_NAMESPACE
36
+ self.files_metadata = files_metadata
37
+ self.unpack_metadata = unpack_metadata
38
+
39
+ @classmethod
40
+ def from_dataset(
41
+ cls,
42
+ client: CogniteClient,
43
+ data_set_external_id: str,
44
+ namespace: Namespace | None = None,
45
+ unpack_metadata: bool = False,
46
+ ):
47
+ return cls(
48
+ cast(
49
+ Iterable[FileMetadata],
50
+ client.files(data_set_external_ids=data_set_external_id),
51
+ ),
52
+ namespace,
53
+ unpack_metadata,
54
+ )
55
+
56
+ @classmethod
57
+ def from_file(
58
+ cls,
59
+ file_path: str,
60
+ namespace: Namespace | None = None,
61
+ unpack_metadata: bool = False,
62
+ ):
63
+ return cls(
64
+ FileMetadataList.load(Path(file_path).read_text()),
65
+ namespace,
66
+ unpack_metadata,
67
+ )
68
+
69
+ def extract(self) -> Iterable[Triple]:
70
+ """Extract files metadata as triples."""
71
+ for event in self.files_metadata:
72
+ yield from self._file2triples(event)
73
+
74
+ def _file2triples(self, file: FileMetadata) -> list[Triple]:
75
+ id_ = self.namespace[f"File_{file.id}"]
76
+
77
+ # Set rdf type
78
+ triples: list[Triple] = [(id_, RDF.type, self.namespace.File)]
79
+
80
+ # Create attributes
81
+
82
+ if file.external_id:
83
+ triples.append((id_, self.namespace.external_id, Literal(file.external_id)))
84
+
85
+ if file.source:
86
+ triples.append((id_, self.namespace.type, Literal(file.source)))
87
+
88
+ if file.mime_type:
89
+ triples.append((id_, self.namespace.mime_type, Literal(file.mime_type)))
90
+
91
+ if file.uploaded:
92
+ triples.append((id_, self.namespace.uploaded, Literal(file.uploaded)))
93
+
94
+ if file.source:
95
+ triples.append((id_, self.namespace.source, Literal(file.source)))
96
+
97
+ if file.metadata:
98
+ if self.unpack_metadata:
99
+ for key, value in file.metadata.items():
100
+ if value:
101
+ type_aware_value = string_to_ideal_type(value)
102
+ try:
103
+ triples.append((id_, self.namespace[key], URIRef(str(AnyHttpUrl(type_aware_value))))) # type: ignore
104
+ except ValidationError:
105
+ triples.append((id_, self.namespace[key], Literal(type_aware_value)))
106
+ else:
107
+ triples.append((id_, self.namespace.metadata, Literal(json.dumps(file.metadata))))
108
+
109
+ if file.source_created_time:
110
+ triples.append(
111
+ (
112
+ id_,
113
+ self.namespace.source_created_time,
114
+ Literal(datetime.fromtimestamp(file.source_created_time / 1000, timezone.utc)),
115
+ )
116
+ )
117
+ if file.source_modified_time:
118
+ triples.append(
119
+ (
120
+ id_,
121
+ self.namespace.source_created_time,
122
+ Literal(datetime.fromtimestamp(file.source_modified_time / 1000, timezone.utc)),
123
+ )
124
+ )
125
+ if file.uploaded_time:
126
+ triples.append(
127
+ (
128
+ id_,
129
+ self.namespace.uploaded_time,
130
+ Literal(datetime.fromtimestamp(file.uploaded_time / 1000, timezone.utc)),
131
+ )
132
+ )
133
+
134
+ if file.created_time:
135
+ triples.append(
136
+ (
137
+ id_,
138
+ self.namespace.created_time,
139
+ Literal(datetime.fromtimestamp(file.created_time / 1000, timezone.utc)),
140
+ )
141
+ )
142
+
143
+ if file.last_updated_time:
144
+ triples.append(
145
+ (
146
+ id_,
147
+ self.namespace.last_updated_time,
148
+ Literal(datetime.fromtimestamp(file.last_updated_time / 1000, timezone.utc)),
149
+ )
150
+ )
151
+
152
+ if file.labels:
153
+ for label in file.labels:
154
+ # external_id can create ill-formed URIs, so we create websafe URIs
155
+ # since labels do not have internal ids, we use the external_id as the id
156
+ triples.append(
157
+ (
158
+ id_,
159
+ self.namespace.label,
160
+ self.namespace[f"Label_{quote(label.dump()['externalId'])}"],
161
+ )
162
+ )
163
+
164
+ if file.security_categories:
165
+ for category in file.security_categories:
166
+ triples.append((id_, self.namespace.security_categories, Literal(category)))
167
+
168
+ if file.data_set_id:
169
+ triples.append(
170
+ (
171
+ id_,
172
+ self.namespace.data_set_id,
173
+ self.namespace[f"Dataset_{file.data_set_id}"],
174
+ )
175
+ )
176
+
177
+ if file.asset_ids:
178
+ for asset_id in file.asset_ids:
179
+ triples.append((id_, self.namespace.asset, self.namespace[f"Asset_{asset_id}"]))
180
+
181
+ return triples
@@ -37,7 +37,11 @@ class LabelsExtractor(BaseExtractor):
37
37
  namespace: Namespace | None = None,
38
38
  ):
39
39
  return cls(
40
- cast(Iterable[LabelDefinition], client.labels(data_set_external_ids=data_set_external_id)), namespace
40
+ cast(
41
+ Iterable[LabelDefinition],
42
+ client.labels(data_set_external_ids=data_set_external_id),
43
+ ),
44
+ namespace,
41
45
  )
42
46
 
43
47
  @classmethod
@@ -47,36 +51,41 @@ class LabelsExtractor(BaseExtractor):
47
51
  def extract(self) -> Iterable[Triple]:
48
52
  """Extract labels as triples."""
49
53
  for label in self.labels:
50
- yield from self._labels2triples(label, self.namespace)
54
+ yield from self._labels2triples(label)
51
55
 
52
- @classmethod
53
- def _labels2triples(cls, label: LabelDefinition, namespace: Namespace) -> list[Triple]:
56
+ def _labels2triples(self, label: LabelDefinition) -> list[Triple]:
54
57
  if label.external_id:
55
- id_ = namespace[f"Label_{create_sha256_hash(label.external_id)}"]
58
+ id_ = self.namespace[f"Label_{create_sha256_hash(label.external_id)}"]
56
59
 
57
60
  # Set rdf type
58
- triples: list[Triple] = [(id_, RDF.type, namespace.Label)]
61
+ triples: list[Triple] = [(id_, RDF.type, self.namespace.Label)]
59
62
 
60
63
  # Create attributes
61
- triples.append((id_, namespace.external_id, Literal(label.external_id)))
64
+ triples.append((id_, self.namespace.external_id, Literal(label.external_id)))
62
65
 
63
66
  if label.name:
64
- triples.append((id_, namespace.name, Literal(label.name)))
67
+ triples.append((id_, self.namespace.name, Literal(label.name)))
65
68
 
66
69
  if label.description:
67
- triples.append((id_, namespace.description, Literal(label.description)))
70
+ triples.append((id_, self.namespace.description, Literal(label.description)))
68
71
 
69
72
  if label.created_time:
70
73
  triples.append(
71
74
  (
72
75
  id_,
73
- namespace.created_time,
76
+ self.namespace.created_time,
74
77
  Literal(datetime.fromtimestamp(label.created_time / 1000, timezone.utc)),
75
78
  )
76
79
  )
77
80
 
78
81
  if label.data_set_id:
79
- triples.append((id_, namespace.data_set_id, namespace[f"Dataset_{label.data_set_id}"]))
82
+ triples.append(
83
+ (
84
+ id_,
85
+ self.namespace.data_set_id,
86
+ self.namespace[f"Dataset_{label.data_set_id}"],
87
+ )
88
+ )
80
89
 
81
90
  return triples
82
91
  return []