cognite-neat 0.81.9__tar.gz → 0.81.11__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 (306) hide show
  1. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/PKG-INFO +1 -1
  2. cognite_neat-0.81.11/cognite/neat/_version.py +1 -0
  3. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_classic_cdf/_assets.py +4 -3
  4. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_classic_cdf/_labels.py +22 -18
  5. cognite_neat-0.81.11/cognite/neat/graph/extractors/_classic_cdf/_relationships.py +152 -0
  6. cognite_neat-0.81.11/cognite/neat/graph/transformers/__init__.py +26 -0
  7. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/transformers/_classic_cdf.py +97 -0
  8. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/pyproject.toml +1 -1
  9. cognite_neat-0.81.9/cognite/neat/_version.py +0 -1
  10. cognite_neat-0.81.9/cognite/neat/graph/extractors/_classic_cdf/_relationships.py +0 -152
  11. cognite_neat-0.81.9/cognite/neat/graph/transformers/__init__.py +0 -5
  12. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/LICENSE +0 -0
  13. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/README.md +0 -0
  14. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/__init__.py +0 -0
  15. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/__init__.py +0 -0
  16. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/asgi/metrics.py +0 -0
  17. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/configuration.py +0 -0
  18. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/context_manager/__init__.py +0 -0
  19. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/context_manager/manager.py +0 -0
  20. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/data_classes/__init__.py +0 -0
  21. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/data_classes/rest.py +0 -0
  22. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/explorer.py +0 -0
  23. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/routers/configuration.py +0 -0
  24. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/routers/core.py +0 -0
  25. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/routers/crud.py +0 -0
  26. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/routers/data_exploration.py +0 -0
  27. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/routers/metrics.py +0 -0
  28. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/routers/rules.py +0 -0
  29. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/routers/workflows.py +0 -0
  30. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/utils/__init__.py +0 -0
  31. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/utils/data_mapping.py +0 -0
  32. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/utils/logging.py +0 -0
  33. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/api/utils/query_templates.py +0 -0
  34. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/main.py +0 -0
  35. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/monitoring/__init__.py +0 -0
  36. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/monitoring/metrics.py +0 -0
  37. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/index.html +0 -0
  38. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/.gitignore +0 -0
  39. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/README.md +0 -0
  40. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/asset-manifest.json +0 -0
  41. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/favicon.ico +0 -0
  42. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/img/architect-icon.svg +0 -0
  43. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/img/developer-icon.svg +0 -0
  44. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/img/sme-icon.svg +0 -0
  45. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/index.html +0 -0
  46. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/logo192.png +0 -0
  47. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/manifest.json +0 -0
  48. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/robots.txt +0 -0
  49. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/static/css/main.38a62222.css +0 -0
  50. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/static/css/main.38a62222.css.map +0 -0
  51. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js +0 -0
  52. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js.LICENSE.txt +0 -0
  53. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/static/js/main.ec7f72e2.js.map +0 -0
  54. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/app/ui/neat-app/build/static/media/logo.8093b84df9ed36a174c629d6fe0b730d.svg +0 -0
  55. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/config.py +0 -0
  56. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/constants.py +0 -0
  57. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/exceptions.py +0 -0
  58. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/__init__.py +0 -0
  59. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/_shared.py +0 -0
  60. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/_tracking/__init__.py +0 -0
  61. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/_tracking/base.py +0 -0
  62. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/_tracking/log.py +0 -0
  63. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  64. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/examples/Knowledge-Graph-Nordic44.xml +0 -0
  65. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/examples/__init__.py +0 -0
  66. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  67. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/exceptions.py +0 -0
  68. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/__init__.py +0 -0
  69. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_base.py +0 -0
  70. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_classic_cdf/__init__.py +0 -0
  71. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_classic_cdf/_events.py +0 -0
  72. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_classic_cdf/_files.py +0 -0
  73. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_classic_cdf/_sequences.py +0 -0
  74. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_classic_cdf/_timeseries.py +0 -0
  75. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_dexpi.py +0 -0
  76. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_mock_graph_generator.py +0 -0
  77. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/extractors/_rdf_file.py +0 -0
  78. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/issues/__init__.py +0 -0
  79. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/issues/loader.py +0 -0
  80. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/loaders/__init__.py +0 -0
  81. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/loaders/_base.py +0 -0
  82. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/loaders/_rdf2dms.py +0 -0
  83. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/models.py +0 -0
  84. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/stores/__init__.py +0 -0
  85. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/stores/_base.py +0 -0
  86. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/stores/_oxrdflib.py +0 -0
  87. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/stores/_provenance.py +0 -0
  88. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/graph/transformers/_base.py +0 -0
  89. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/issues.py +0 -0
  90. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/__init__.py +0 -0
  91. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/__init__.py +0 -0
  92. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  93. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/examples/Knowledge-Graph-Nordic44.xml +0 -0
  94. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/examples/__init__.py +0 -0
  95. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  96. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/exceptions.py +0 -0
  97. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/extractors/__init__.py +0 -0
  98. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/extractors/_base.py +0 -0
  99. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/extractors/_dexpi.py +0 -0
  100. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/extractors/_graph_capturing_sheet.py +0 -0
  101. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/extractors/_mock_graph_generator.py +0 -0
  102. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/__init__.py +0 -0
  103. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/_asset_loader.py +0 -0
  104. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/_base.py +0 -0
  105. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/_exceptions.py +0 -0
  106. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/core/__init__.py +0 -0
  107. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/core/labels.py +0 -0
  108. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/core/models.py +0 -0
  109. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/core/rdf_to_assets.py +0 -0
  110. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/core/rdf_to_relationships.py +0 -0
  111. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/rdf_to_dms.py +0 -0
  112. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/loaders/validator.py +0 -0
  113. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/models.py +0 -0
  114. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/stores/__init__.py +0 -0
  115. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/stores/_base.py +0 -0
  116. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/stores/_graphdb_store.py +0 -0
  117. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/stores/_memory_store.py +0 -0
  118. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/stores/_oxigraph_store.py +0 -0
  119. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/stores/_oxrdflib.py +0 -0
  120. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/stores/_rdf_to_graph.py +0 -0
  121. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/transformations/__init__.py +0 -0
  122. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/transformations/entity_matcher.py +0 -0
  123. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/transformations/query_generator/__init__.py +0 -0
  124. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/transformations/query_generator/sparql.py +0 -0
  125. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/graph/transformations/transformer.py +0 -0
  126. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/__init__.py +0 -0
  127. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/analysis.py +0 -0
  128. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/Rules-Nordic44-to-TNT.xlsx +0 -0
  129. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/Rules-Nordic44-to-graphql.xlsx +0 -0
  130. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/__init__.py +0 -0
  131. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/power-grid-containers.yaml +0 -0
  132. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/power-grid-example.xlsx +0 -0
  133. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/power-grid-model.yaml +0 -0
  134. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/rules-template.xlsx +0 -0
  135. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/sheet2cdf-transformation-rules.xlsx +0 -0
  136. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/skos-rules.xlsx +0 -0
  137. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/source-to-solution-mapping-rules.xlsx +0 -0
  138. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/examples/wind-energy.owl +0 -0
  139. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exceptions.py +0 -0
  140. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/__init__.py +0 -0
  141. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_base.py +0 -0
  142. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_core/__init__.py +0 -0
  143. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_core/rules2labels.py +0 -0
  144. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_rules2dms.py +0 -0
  145. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_rules2excel.py +0 -0
  146. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_rules2graphql.py +0 -0
  147. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_rules2ontology.py +0 -0
  148. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_rules2pydantic_models.py +0 -0
  149. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_rules2rules.py +0 -0
  150. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_rules2triples.py +0 -0
  151. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/exporters/_validation.py +0 -0
  152. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/__init__.py +0 -0
  153. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_base.py +0 -0
  154. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_dict2rules.py +0 -0
  155. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_dms2rules.py +0 -0
  156. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_graph2rules.py +0 -0
  157. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_json2rules.py +0 -0
  158. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_owl2rules/__init__.py +0 -0
  159. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2classes.py +0 -0
  160. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2metadata.py +0 -0
  161. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2properties.py +0 -0
  162. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_owl2rules/_owl2rules.py +0 -0
  163. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_spreadsheet2rules.py +0 -0
  164. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_xsd2rules.py +0 -0
  165. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/importers/_yaml2rules.py +0 -0
  166. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/models/__init__.py +0 -0
  167. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/models/_base.py +0 -0
  168. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/models/raw_rules.py +0 -0
  169. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/models/rdfpath.py +0 -0
  170. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/models/rules.py +0 -0
  171. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/models/tables.py +0 -0
  172. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/rules/models/value_types.py +0 -0
  173. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/workflows/examples/Export_DMS/workflow.yaml +0 -0
  174. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/workflows/examples/Export_Rules_to_Ontology/workflow.yaml +0 -0
  175. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/workflows/examples/Extract_DEXPI_Graph_and_Export_Rules/workflow.yaml +0 -0
  176. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/workflows/examples/Extract_RDF_Graph_and_Generate_Assets/workflow.yaml +0 -0
  177. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/workflows/examples/Import_DMS/workflow.yaml +0 -0
  178. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/workflows/examples/Ontology_to_Data_Model/workflow.yaml +0 -0
  179. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/workflows/examples/Validate_Rules/workflow.yaml +0 -0
  180. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/workflows/examples/Validate_Solution_Model/workflow.yaml +0 -0
  181. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/workflows/examples/Visualize_Data_Model_Using_Mock_Graph/workflow.yaml +0 -0
  182. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/legacy/workflows/examples/Visualize_Semantic_Data_Model/workflow.yaml +0 -0
  183. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/py.typed +0 -0
  184. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/__init__.py +0 -0
  185. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/_shared.py +0 -0
  186. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/analysis/__init__.py +0 -0
  187. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/analysis/_base.py +0 -0
  188. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/analysis/_information_rules.py +0 -0
  189. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/examples/__init__.py +0 -0
  190. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/examples/wind-energy.owl +0 -0
  191. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/exceptions.py +0 -0
  192. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/exporters/__init__.py +0 -0
  193. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/exporters/_base.py +0 -0
  194. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/exporters/_rules2dms.py +0 -0
  195. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/exporters/_rules2excel.py +0 -0
  196. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/exporters/_rules2ontology.py +0 -0
  197. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/exporters/_rules2yaml.py +0 -0
  198. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/exporters/_validation.py +0 -0
  199. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/__init__.py +0 -0
  200. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_base.py +0 -0
  201. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_dms2rules.py +0 -0
  202. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_dtdl2rules/__init__.py +0 -0
  203. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_dtdl2rules/_unit_lookup.py +0 -0
  204. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py +0 -0
  205. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_dtdl2rules/dtdl_importer.py +0 -0
  206. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_dtdl2rules/spec.py +0 -0
  207. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_inference2rules.py +0 -0
  208. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_owl2rules/__init__.py +0 -0
  209. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_owl2rules/_owl2classes.py +0 -0
  210. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_owl2rules/_owl2metadata.py +0 -0
  211. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_owl2rules/_owl2properties.py +0 -0
  212. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_owl2rules/_owl2rules.py +0 -0
  213. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_spreadsheet2rules.py +0 -0
  214. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/importers/_yaml2rules.py +0 -0
  215. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/issues/__init__.py +0 -0
  216. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/issues/base.py +0 -0
  217. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/issues/dms.py +0 -0
  218. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/issues/fileread.py +0 -0
  219. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/issues/formatters.py +0 -0
  220. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/issues/importing.py +0 -0
  221. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/issues/spreadsheet.py +0 -0
  222. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/issues/spreadsheet_file.py +0 -0
  223. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/__init__.py +0 -0
  224. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/_base.py +0 -0
  225. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/_constants.py +0 -0
  226. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/_rdfpath.py +0 -0
  227. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/_types/__init__.py +0 -0
  228. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/_types/_base.py +0 -0
  229. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/_types/_field.py +0 -0
  230. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/data_types.py +0 -0
  231. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/dms/__init__.py +0 -0
  232. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/dms/_converter.py +0 -0
  233. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/dms/_exporter.py +0 -0
  234. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/dms/_rules.py +0 -0
  235. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/dms/_rules_input.py +0 -0
  236. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/dms/_schema.py +0 -0
  237. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/dms/_serializer.py +0 -0
  238. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/dms/_validation.py +0 -0
  239. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/domain.py +0 -0
  240. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/entities.py +0 -0
  241. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/information/__init__.py +0 -0
  242. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/information/_converter.py +0 -0
  243. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/information/_rules.py +0 -0
  244. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/information/_rules_input.py +0 -0
  245. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/information/_serializer.py +0 -0
  246. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/information/_validation.py +0 -0
  247. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/rules/models/wrapped_entities.py +0 -0
  248. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/__init__.py +0 -0
  249. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/auxiliary.py +0 -0
  250. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/cdf.py +0 -0
  251. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/cdf_classes.py +0 -0
  252. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/cdf_loaders/__init__.py +0 -0
  253. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/cdf_loaders/_base.py +0 -0
  254. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/cdf_loaders/_data_modeling.py +0 -0
  255. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/cdf_loaders/_ingestion.py +0 -0
  256. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/cdf_loaders/data_classes.py +0 -0
  257. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/exceptions.py +0 -0
  258. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/spreadsheet.py +0 -0
  259. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/text.py +0 -0
  260. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/upload.py +0 -0
  261. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/utils.py +0 -0
  262. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/utils/xml.py +0 -0
  263. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/__init__.py +0 -0
  264. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/_exceptions.py +0 -0
  265. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/base.py +0 -0
  266. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/cdf_store.py +0 -0
  267. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/examples/Export_DMS/workflow.yaml +0 -0
  268. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/examples/Export_Rules_to_Ontology/workflow.yaml +0 -0
  269. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/examples/Extract_DEXPI_Graph_and_Export_Rules/workflow.yaml +0 -0
  270. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/examples/Extract_RDF_Graph_and_Generate_Assets/workflow.yaml +0 -0
  271. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/examples/Import_DMS/workflow.yaml +0 -0
  272. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/examples/Ontology_to_Data_Model/workflow.yaml +0 -0
  273. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/examples/Validate_Rules/workflow.yaml +0 -0
  274. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/examples/Validate_Solution_Model/workflow.yaml +0 -0
  275. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/examples/Visualize_Data_Model_Using_Mock_Graph/workflow.yaml +0 -0
  276. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/examples/Visualize_Semantic_Data_Model/workflow.yaml +0 -0
  277. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/manager.py +0 -0
  278. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/migration/__init__.py +0 -0
  279. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/migration/steps.py +0 -0
  280. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/migration/wf_manifests.py +0 -0
  281. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/model.py +0 -0
  282. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/__init__.py +0 -0
  283. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/data_contracts.py +0 -0
  284. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/__init__.py +0 -0
  285. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/current/__init__.py +0 -0
  286. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/current/graph_extractor.py +0 -0
  287. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/current/graph_loader.py +0 -0
  288. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/current/graph_store.py +0 -0
  289. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/current/rules_exporter.py +0 -0
  290. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/current/rules_importer.py +0 -0
  291. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/current/rules_validator.py +0 -0
  292. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/io/__init__.py +0 -0
  293. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/io/io_steps.py +0 -0
  294. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/legacy/__init__.py +0 -0
  295. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/legacy/graph_contextualization.py +0 -0
  296. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/legacy/graph_extractor.py +0 -0
  297. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/legacy/graph_loader.py +0 -0
  298. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/legacy/graph_store.py +0 -0
  299. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/legacy/graph_transformer.py +0 -0
  300. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/legacy/rules_exporter.py +0 -0
  301. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/lib/legacy/rules_importer.py +0 -0
  302. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps/step_model.py +0 -0
  303. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/steps_registry.py +0 -0
  304. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/tasks.py +0 -0
  305. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/cognite/neat/workflows/triggers.py +0 -0
  306. {cognite_neat-0.81.9 → cognite_neat-0.81.11}/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.81.9
3
+ Version: 0.81.11
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.81.11"
@@ -2,7 +2,6 @@ from collections.abc import Iterable
2
2
  from datetime import datetime, timezone
3
3
  from pathlib import Path
4
4
  from typing import cast
5
- from urllib.parse import quote
6
5
 
7
6
  from cognite.client import CogniteClient
8
7
  from cognite.client.data_classes import Asset, AssetList
@@ -11,7 +10,7 @@ from rdflib import RDF, Literal, Namespace
11
10
  from cognite.neat.constants import DEFAULT_NAMESPACE
12
11
  from cognite.neat.graph.extractors._base import BaseExtractor
13
12
  from cognite.neat.graph.models import Triple
14
- from cognite.neat.utils.utils import string_to_ideal_type
13
+ from cognite.neat.utils.utils import create_sha256_hash, string_to_ideal_type
15
14
 
16
15
 
17
16
  class AssetsExtractor(BaseExtractor):
@@ -86,7 +85,9 @@ class AssetsExtractor(BaseExtractor):
86
85
  for label in asset.labels:
87
86
  # external_id can create ill-formed URIs, so we create websafe URIs
88
87
  # since labels do not have internal ids, we use the external_id as the id
89
- triples.append((id_, namespace.label, namespace[f"Label_{quote(label.dump()['externalId'])}"]))
88
+ triples.append(
89
+ (id_, namespace.label, namespace[f"Label_{create_sha256_hash(label.dump()['externalId'])}"])
90
+ )
90
91
 
91
92
  if asset.metadata:
92
93
  for key, value in asset.metadata.items():
@@ -2,7 +2,6 @@ from collections.abc import Iterable
2
2
  from datetime import datetime, timezone
3
3
  from pathlib import Path
4
4
  from typing import cast
5
- from urllib.parse import quote
6
5
 
7
6
  from cognite.client import CogniteClient
8
7
  from cognite.client.data_classes import LabelDefinition, LabelDefinitionList
@@ -11,6 +10,7 @@ from rdflib import RDF, Literal, Namespace
11
10
  from cognite.neat.constants import DEFAULT_NAMESPACE
12
11
  from cognite.neat.graph.extractors._base import BaseExtractor
13
12
  from cognite.neat.graph.models import Triple
13
+ from cognite.neat.utils.utils import create_sha256_hash
14
14
 
15
15
 
16
16
  class LabelsExtractor(BaseExtractor):
@@ -44,28 +44,32 @@ class LabelsExtractor(BaseExtractor):
44
44
 
45
45
  @classmethod
46
46
  def _labels2triples(cls, label: LabelDefinition, namespace: Namespace) -> list[Triple]:
47
- id_ = namespace[f"Label_{quote(label.dump()['externalId'])}"]
48
-
49
- # Set rdf type
50
- triples: list[Triple] = [(id_, RDF.type, namespace.Label)]
47
+ if label.external_id:
48
+ id_ = namespace[f"Label_{create_sha256_hash(label.external_id)}"]
51
49
 
52
- # Create attributes
50
+ # Set rdf type
51
+ triples: list[Triple] = [(id_, RDF.type, namespace.Label)]
53
52
 
54
- if label.external_id:
53
+ # Create attributes
55
54
  triples.append((id_, namespace.external_id, Literal(label.external_id)))
56
55
 
57
- if label.name:
58
- triples.append((id_, namespace.name, Literal(label.name)))
56
+ if label.name:
57
+ triples.append((id_, namespace.name, Literal(label.name)))
59
58
 
60
- if label.description:
61
- triples.append((id_, namespace.description, Literal(label.description)))
59
+ if label.description:
60
+ triples.append((id_, namespace.description, Literal(label.description)))
62
61
 
63
- if label.created_time:
64
- triples.append(
65
- (id_, namespace.created_time, Literal(datetime.fromtimestamp(label.created_time / 1000, timezone.utc)))
66
- )
62
+ if label.created_time:
63
+ triples.append(
64
+ (
65
+ id_,
66
+ namespace.created_time,
67
+ Literal(datetime.fromtimestamp(label.created_time / 1000, timezone.utc)),
68
+ )
69
+ )
67
70
 
68
- if label.data_set_id:
69
- triples.append((id_, namespace.data_set_id, namespace[f"Dataset_{label.data_set_id}"]))
71
+ if label.data_set_id:
72
+ triples.append((id_, namespace.data_set_id, namespace[f"Dataset_{label.data_set_id}"]))
70
73
 
71
- return triples
74
+ return triples
75
+ return []
@@ -0,0 +1,152 @@
1
+ from collections.abc import Iterable
2
+ from datetime import datetime, timezone
3
+ from pathlib import Path
4
+ from typing import cast
5
+ from urllib.parse import quote
6
+
7
+ from cognite.client import CogniteClient
8
+ from cognite.client.data_classes import Relationship, RelationshipList
9
+ from rdflib import RDF, Literal, Namespace
10
+
11
+ from cognite.neat.constants import DEFAULT_NAMESPACE
12
+ from cognite.neat.graph.extractors._base import BaseExtractor
13
+ from cognite.neat.graph.models import Triple
14
+ from cognite.neat.utils.utils import create_sha256_hash
15
+
16
+
17
+ class RelationshipsExtractor(BaseExtractor):
18
+ def __init__(
19
+ self,
20
+ relationships: Iterable[Relationship],
21
+ namespace: Namespace | None = None,
22
+ ):
23
+ self.namespace = namespace or DEFAULT_NAMESPACE
24
+ self.relationships = relationships
25
+
26
+ @classmethod
27
+ def from_dataset(
28
+ cls,
29
+ client: CogniteClient,
30
+ data_set_external_id: str,
31
+ namespace: Namespace | None = None,
32
+ ):
33
+ return cls(
34
+ cast(Iterable[Relationship], client.relationships(data_set_external_ids=data_set_external_id)), namespace
35
+ )
36
+
37
+ @classmethod
38
+ def from_file(cls, file_path: str, namespace: Namespace | None = None):
39
+ return cls(RelationshipList.load(Path(file_path).read_text()), namespace)
40
+
41
+ def extract(self) -> Iterable[Triple]:
42
+ """Extracts an asset with the given asset_id."""
43
+ for relationship in self.relationships:
44
+ yield from self._relationship2triples(relationship, self.namespace)
45
+
46
+ @classmethod
47
+ def _relationship2triples(cls, relationship: Relationship, namespace: Namespace) -> list[Triple]:
48
+ """Converts an asset to triples."""
49
+
50
+ if relationship.external_id and relationship.source_external_id and relationship.target_external_id:
51
+ # relationships do not have an internal id, so we generate one
52
+ id_ = namespace[f"Relationship_{create_sha256_hash(relationship.external_id)}"]
53
+
54
+ # Set rdf type
55
+ triples: list[Triple] = [(id_, RDF.type, namespace["Relationship"])]
56
+
57
+ # Set source and target types
58
+ if source_type := relationship.source_type:
59
+ triples.append(
60
+ (
61
+ id_,
62
+ namespace.source_type,
63
+ namespace[source_type.title()],
64
+ )
65
+ )
66
+
67
+ if target_type := relationship.target_type:
68
+ triples.append(
69
+ (
70
+ id_,
71
+ namespace.target_type,
72
+ namespace[target_type.title()],
73
+ )
74
+ )
75
+
76
+ # Create attributes
77
+
78
+ triples.append((id_, namespace.external_id, Literal(relationship.external_id)))
79
+
80
+ triples.append(
81
+ (
82
+ id_,
83
+ namespace.source_external_id,
84
+ Literal(relationship.source_external_id),
85
+ )
86
+ )
87
+
88
+ triples.append(
89
+ (
90
+ id_,
91
+ namespace.target_external_id,
92
+ Literal(relationship.target_external_id),
93
+ )
94
+ )
95
+
96
+ if relationship.start_time:
97
+ triples.append(
98
+ (
99
+ id_,
100
+ namespace.start_time,
101
+ Literal(datetime.fromtimestamp(relationship.start_time / 1000, timezone.utc)),
102
+ )
103
+ )
104
+
105
+ if relationship.end_time:
106
+ triples.append(
107
+ (
108
+ id_,
109
+ namespace.end_time,
110
+ Literal(datetime.fromtimestamp(relationship.end_time / 1000, timezone.utc)),
111
+ )
112
+ )
113
+
114
+ if relationship.created_time:
115
+ triples.append(
116
+ (
117
+ id_,
118
+ namespace.created_time,
119
+ Literal(datetime.fromtimestamp(relationship.created_time / 1000, timezone.utc)),
120
+ )
121
+ )
122
+
123
+ if relationship.last_updated_time:
124
+ triples.append(
125
+ (
126
+ id_,
127
+ namespace.last_updated_time,
128
+ Literal(datetime.fromtimestamp(relationship.last_updated_time / 1000, timezone.utc)),
129
+ )
130
+ )
131
+
132
+ if relationship.confidence:
133
+ triples.append(
134
+ (
135
+ id_,
136
+ namespace.confidence,
137
+ Literal(relationship.confidence),
138
+ )
139
+ )
140
+
141
+ if relationship.labels:
142
+ for label in relationship.labels:
143
+ # external_id can create ill-formed URIs, so we create websafe URIs
144
+ # since labels do not have internal ids, we use the external_id as the id
145
+ triples.append((id_, namespace.label, namespace[f"Label_{quote(label.dump()['externalId'])}"]))
146
+
147
+ # Create connection
148
+ if relationship.data_set_id:
149
+ triples.append((id_, namespace.dataset, namespace[f"Dataset_{relationship.data_set_id}"]))
150
+
151
+ return triples
152
+ return []
@@ -0,0 +1,26 @@
1
+ from ._classic_cdf import (
2
+ AddAssetDepth,
3
+ AssetEventConnector,
4
+ AssetFileConnector,
5
+ AssetRelationshipConnector,
6
+ AssetSequenceConnector,
7
+ AssetTimeSeriesConnector,
8
+ )
9
+
10
+ __all__ = [
11
+ "AddAssetDepth",
12
+ "AssetTimeSeriesConnector",
13
+ "AssetSequenceConnector",
14
+ "AssetFileConnector",
15
+ "AssetEventConnector",
16
+ "AssetRelationshipConnector",
17
+ ]
18
+
19
+ Transformers = (
20
+ AddAssetDepth
21
+ | AssetTimeSeriesConnector
22
+ | AssetSequenceConnector
23
+ | AssetFileConnector
24
+ | AssetEventConnector
25
+ | AssetRelationshipConnector
26
+ )
@@ -169,3 +169,100 @@ class AssetFileConnector(BaseTransformer):
169
169
  # files can be connected to multiple assets in the graph
170
170
  for (asset_id,) in cast(list[tuple], assets_id_res):
171
171
  graph.add((asset_id, DEFAULT_NAMESPACE.file, file_id))
172
+
173
+
174
+ class AssetEventConnector(BaseTransformer):
175
+ description: str = "Connects assets to events, thus forming bi-directional connection"
176
+ _use_only_once: bool = True
177
+ _need_changes = frozenset({str(extractors.AssetsExtractor.__name__), str(extractors.EventsExtractor.__name__)})
178
+ _asset_template: str = """SELECT ?asset_id WHERE {{
179
+ <{event_id}> <{asset_prop}> ?asset_id .
180
+ ?asset_id a <{asset_type}>}}"""
181
+
182
+ def __init__(
183
+ self,
184
+ asset_type: URIRef | None = None,
185
+ event_type: URIRef | None = None,
186
+ asset_prop: URIRef | None = None,
187
+ ):
188
+ self.asset_type = asset_type or DEFAULT_NAMESPACE.Asset
189
+ self.event_type = event_type or DEFAULT_NAMESPACE.Event
190
+ self.asset_prop = asset_prop or DEFAULT_NAMESPACE.asset
191
+
192
+ def transform(self, graph: Graph) -> None:
193
+ for event_id_result in graph.query(f"SELECT DISTINCT ?event_id WHERE {{?event_id a <{self.event_type}>}}"):
194
+ event_id: URIRef = cast(tuple, event_id_result)[0]
195
+
196
+ if assets_id_res := list(
197
+ graph.query(
198
+ self._asset_template.format(
199
+ event_id=event_id,
200
+ asset_prop=self.asset_prop,
201
+ asset_type=self.asset_type,
202
+ )
203
+ )
204
+ ):
205
+ # files can be connected to multiple assets in the graph
206
+ for (asset_id,) in cast(list[tuple], assets_id_res):
207
+ graph.add((asset_id, DEFAULT_NAMESPACE.event, event_id))
208
+
209
+
210
+ class AssetRelationshipConnector(BaseTransformer):
211
+ description: str = "Connects assets via relationships"
212
+ _use_only_once: bool = True
213
+ _need_changes = frozenset(
214
+ {str(extractors.AssetsExtractor.__name__), str(extractors.RelationshipsExtractor.__name__)}
215
+ )
216
+ _asset_template: str = """SELECT ?source ?target WHERE {{
217
+ <{relationship_id}> <{relationship_source_xid_prop}> ?source_xid .
218
+ ?source <{asset_xid_property}> ?source_xid .
219
+ ?source a <{asset_type}> .
220
+
221
+ <{relationship_id}> <{relationship_target_xid_prop}> ?target_xid .
222
+ ?target <{asset_xid_property}> ?target_xid .
223
+ ?target a <{asset_type}> .}}"""
224
+
225
+ def __init__(
226
+ self,
227
+ asset_type: URIRef | None = None,
228
+ relationship_type: URIRef | None = None,
229
+ relationship_source_xid_prop: URIRef | None = None,
230
+ relationship_target_xid_prop: URIRef | None = None,
231
+ asset_xid_property: URIRef | None = None,
232
+ ):
233
+ self.asset_type = asset_type or DEFAULT_NAMESPACE.Asset
234
+ self.relationship_type = relationship_type or DEFAULT_NAMESPACE.Relationship
235
+ self.relationship_source_xid_prop = relationship_source_xid_prop or DEFAULT_NAMESPACE.source_external_id
236
+ self.relationship_target_xid_prop = relationship_target_xid_prop or DEFAULT_NAMESPACE.target_external_id
237
+ self.asset_xid_property = asset_xid_property or DEFAULT_NAMESPACE.external_id
238
+
239
+ def transform(self, graph: Graph) -> None:
240
+ for relationship_id_result in graph.query(
241
+ f"SELECT DISTINCT ?relationship_id WHERE {{?relationship_id a <{self.relationship_type}>}}"
242
+ ):
243
+ relationship_id: URIRef = cast(tuple, relationship_id_result)[0]
244
+
245
+ if assets_id_res := list(
246
+ graph.query(
247
+ self._asset_template.format(
248
+ relationship_id=relationship_id,
249
+ asset_xid_property=self.asset_xid_property,
250
+ relationship_source_xid_prop=self.relationship_source_xid_prop,
251
+ relationship_target_xid_prop=self.relationship_target_xid_prop,
252
+ asset_type=self.asset_type,
253
+ )
254
+ )
255
+ ):
256
+ # files can be connected to multiple assets in the graph
257
+ for source_asset_id, target_asset_id in cast(list[tuple], assets_id_res):
258
+ # create a relationship between the two assets
259
+ graph.add((source_asset_id, DEFAULT_NAMESPACE.relationship, relationship_id))
260
+ graph.add((target_asset_id, DEFAULT_NAMESPACE.relationship, relationship_id))
261
+
262
+ # add source and target to the relationship
263
+ graph.add((relationship_id, DEFAULT_NAMESPACE.source, source_asset_id))
264
+ graph.add((relationship_id, DEFAULT_NAMESPACE.target, target_asset_id))
265
+
266
+ # remove properties that are not needed, specifically the external ids
267
+ graph.remove((relationship_id, self.relationship_source_xid_prop, None))
268
+ graph.remove((relationship_id, self.relationship_target_xid_prop, None))
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "cognite-neat"
3
- version = "0.81.9"
3
+ version = "0.81.11"
4
4
  readme = "README.md"
5
5
  description = "Knowledge graph transformation"
6
6
  authors = [
@@ -1 +0,0 @@
1
- __version__ = "0.81.9"
@@ -1,152 +0,0 @@
1
- import uuid
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 Relationship, RelationshipList
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
-
16
-
17
- class RelationshipsExtractor(BaseExtractor):
18
- def __init__(
19
- self,
20
- relationships: Iterable[Relationship],
21
- namespace: Namespace | None = None,
22
- ):
23
- self.namespace = namespace or DEFAULT_NAMESPACE
24
- self.relationships = relationships
25
-
26
- @classmethod
27
- def from_dataset(
28
- cls,
29
- client: CogniteClient,
30
- data_set_external_id: str,
31
- namespace: Namespace | None = None,
32
- ):
33
- return cls(
34
- cast(Iterable[Relationship], client.relationships(data_set_external_ids=data_set_external_id)), namespace
35
- )
36
-
37
- @classmethod
38
- def from_file(cls, file_path: str, namespace: Namespace | None = None):
39
- return cls(RelationshipList.load(Path(file_path).read_text()), namespace)
40
-
41
- def extract(self) -> Iterable[Triple]:
42
- """Extracts an asset with the given asset_id."""
43
- for relationship in self.relationships:
44
- yield from self._relationship2triples(relationship, self.namespace)
45
-
46
- @classmethod
47
- def _relationship2triples(cls, relationship: Relationship, namespace: Namespace) -> list[Triple]:
48
- """Converts an asset to triples."""
49
-
50
- # relationships do not have an internal id, so we generate one
51
- id_ = namespace[f"Relationship_{uuid.uuid4()}"]
52
-
53
- # Set rdf type
54
- triples: list[Triple] = [(id_, RDF.type, namespace["Relationship"])]
55
-
56
- # Set source and target types
57
- if source_type := relationship.source_type:
58
- triples.append(
59
- (
60
- id_,
61
- namespace.source_type,
62
- namespace[source_type.title()],
63
- )
64
- )
65
-
66
- if target_type := relationship.target_type:
67
- triples.append(
68
- (
69
- id_,
70
- namespace.target_type,
71
- namespace[target_type.title()],
72
- )
73
- )
74
-
75
- # Create attributes
76
- if relationship.external_id:
77
- triples.append((id_, namespace.external_id, Literal(relationship.external_id)))
78
-
79
- if relationship.source_external_id:
80
- triples.append(
81
- (
82
- id_,
83
- namespace.source_external_id,
84
- Literal(relationship.source_external_id),
85
- )
86
- )
87
-
88
- if relationship.target_external_id:
89
- triples.append(
90
- (
91
- id_,
92
- namespace.target_external_id,
93
- Literal(relationship.target_external_id),
94
- )
95
- )
96
-
97
- if relationship.start_time:
98
- triples.append(
99
- (
100
- id_,
101
- namespace.start_time,
102
- Literal(datetime.fromtimestamp(relationship.start_time / 1000, timezone.utc)),
103
- )
104
- )
105
-
106
- if relationship.end_time:
107
- triples.append(
108
- (
109
- id_,
110
- namespace.end_time,
111
- Literal(datetime.fromtimestamp(relationship.end_time / 1000, timezone.utc)),
112
- )
113
- )
114
-
115
- if relationship.created_time:
116
- triples.append(
117
- (
118
- id_,
119
- namespace.created_time,
120
- Literal(datetime.fromtimestamp(relationship.created_time / 1000, timezone.utc)),
121
- )
122
- )
123
-
124
- if relationship.last_updated_time:
125
- triples.append(
126
- (
127
- id_,
128
- namespace.last_updated_time,
129
- Literal(datetime.fromtimestamp(relationship.last_updated_time / 1000, timezone.utc)),
130
- )
131
- )
132
-
133
- if relationship.confidence:
134
- triples.append(
135
- (
136
- id_,
137
- namespace.confidence,
138
- Literal(relationship.confidence),
139
- )
140
- )
141
-
142
- if relationship.labels:
143
- for label in relationship.labels:
144
- # external_id can create ill-formed URIs, so we create websafe URIs
145
- # since labels do not have internal ids, we use the external_id as the id
146
- triples.append((id_, namespace.label, namespace[f"Label_{quote(label.dump()['externalId'])}"]))
147
-
148
- # Create connection
149
- if relationship.data_set_id:
150
- triples.append((id_, namespace.dataset, namespace[f"Dataset_{relationship.data_set_id}"]))
151
-
152
- return triples
@@ -1,5 +0,0 @@
1
- from ._classic_cdf import AddAssetDepth, AssetFileConnector, AssetSequenceConnector, AssetTimeSeriesConnector
2
-
3
- __all__ = ["AddAssetDepth", "AssetTimeSeriesConnector", "AssetSequenceConnector", "AssetFileConnector"]
4
-
5
- Transformers = AddAssetDepth | AssetTimeSeriesConnector | AssetSequenceConnector | AssetFileConnector
File without changes
File without changes