iris-vector-graph 1.95.0__tar.gz → 1.98.0__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.
Files changed (594) hide show
  1. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/PKG-INFO +102 -2
  2. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/README.md +95 -0
  3. iris_vector_graph-1.98.0/iris_src/src/Graph/KG/Centrality.cls +154 -0
  4. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/EdgeScan.cls +86 -4
  5. iris_vector_graph-1.98.0/iris_src/src/Graph/KG/EmbedQueue.cls +114 -0
  6. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/__init__.py +8 -0
  7. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/_validate.py +27 -0
  8. iris_vector_graph-1.98.0/iris_vector_graph/cli.py +208 -0
  9. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/translator.py +279 -2
  10. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher_api.py +29 -6
  11. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/dbapi_utils.py +3 -3
  12. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/embedded.py +5 -0
  13. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/engine.py +451 -58
  14. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/schema.py +55 -0
  15. iris_vector_graph-1.98.0/iris_vector_graph/sdk.py +270 -0
  16. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/store_protocol.py +12 -1
  17. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/stores/iris_sql_store.py +544 -38
  18. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/pyproject.toml +9 -2
  19. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/conftest.py +68 -49
  20. iris_vector_graph-1.98.0/tests/e2e/fixtures/__init__.py +13 -0
  21. iris_vector_graph-1.98.0/tests/e2e/fixtures/centrality_graphs.py +103 -0
  22. iris_vector_graph-1.98.0/tests/e2e/test_centrality_e2e.py +465 -0
  23. iris_vector_graph-1.98.0/tests/e2e/test_embed_queue_e2e.py +66 -0
  24. iris_vector_graph-1.98.0/tests/unit/test_centrality_translator.py +92 -0
  25. iris_vector_graph-1.98.0/tests/unit/test_centrality_unit.py +198 -0
  26. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_engine_deep.py +3 -1
  27. iris_vector_graph-1.98.0/tests/unit/test_retrieve_and_vector_distance.py +90 -0
  28. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_store_protocol.py +18 -0
  29. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/.gitignore +0 -0
  30. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/LICENSE +0 -0
  31. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/demo_biomedical.py +0 -0
  32. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/demo_fraud_detection.py +0 -0
  33. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/demo_fraud_detection_sql.py +0 -0
  34. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/demo_utils.py +0 -0
  35. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/demo_working_system.py +0 -0
  36. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/__init__.py +0 -0
  37. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical/__init__.py +0 -0
  38. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical/loaders.py +0 -0
  39. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical/resolver.py +0 -0
  40. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical/types.py +0 -0
  41. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical_legacy/__init__.py +0 -0
  42. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
  43. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
  44. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
  45. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/fraud/__init__.py +0 -0
  46. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/fraud/loaders.py +0 -0
  47. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/fraud/resolver.py +0 -0
  48. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/domains/fraud/types.py +0 -0
  49. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/graphQL.http +0 -0
  50. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/hybrid_vector_graph_query.cypher +0 -0
  51. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/examples/rest.http +0 -0
  52. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
  53. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
  54. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
  55. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
  56. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
  57. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
  58. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Edge.cls +0 -0
  59. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
  60. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
  61. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Loader.cls +0 -0
  62. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/MCPService.cls +0 -0
  63. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
  64. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
  65. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Meta.cls +0 -0
  66. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
  67. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
  68. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/PageRank.cls +0 -0
  69. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/PyOps.cls +0 -0
  70. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Service.cls +0 -0
  71. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
  72. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
  73. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
  74. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
  75. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Traversal.cls +0 -0
  76. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
  77. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/IVG/CypherEngine.cls +0 -0
  78. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/IVG/Percentile.cls +0 -0
  79. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/PageRankEmbedded.cls +0 -0
  80. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/User.Exec.cls +0 -0
  81. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
  82. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/bolt_server.py +0 -0
  83. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
  84. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
  85. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
  86. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
  87. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
  88. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
  89. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
  90. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
  91. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
  92. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
  93. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
  94. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
  95. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
  96. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
  97. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
  98. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
  99. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
  100. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
  101. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
  102. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
  103. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
  104. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
  105. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
  106. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
  107. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
  108. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
  109. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
  110. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
  111. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
  112. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
  113. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
  114. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
  115. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
  116. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
  117. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
  118. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
  119. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
  120. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
  121. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
  122. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
  123. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
  124. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
  125. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
  126. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
  127. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
  128. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
  129. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
  130. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
  131. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
  132. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
  133. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
  134. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
  135. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
  136. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
  137. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
  138. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
  139. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
  140. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
  141. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
  142. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
  143. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
  144. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
  145. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
  146. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
  147. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
  148. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
  149. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
  150. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
  151. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
  152. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
  153. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
  154. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
  155. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
  156. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
  157. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
  158. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
  159. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
  160. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
  161. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
  162. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
  163. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
  164. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
  165. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
  166. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
  167. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
  168. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
  169. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
  170. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
  171. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
  172. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
  173. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
  174. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
  175. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
  176. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  177. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
  178. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
  179. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
  180. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
  181. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
  182. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
  183. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
  184. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
  185. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
  186. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
  187. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
  188. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
  189. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
  190. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
  191. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
  192. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
  193. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
  194. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
  195. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
  196. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
  197. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
  198. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
  199. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
  200. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
  201. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
  202. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
  203. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
  204. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
  205. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
  206. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
  207. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
  208. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
  209. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
  210. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
  211. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
  212. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
  213. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
  214. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
  215. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
  216. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
  217. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
  218. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
  219. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
  220. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
  221. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
  222. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
  223. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
  224. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
  225. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
  226. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
  227. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
  228. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
  229. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
  230. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
  231. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
  232. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
  233. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
  234. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
  235. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
  236. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
  237. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
  238. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
  239. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
  240. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
  241. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
  242. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
  243. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
  244. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
  245. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
  246. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
  247. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
  248. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
  249. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
  250. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
  251. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
  252. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
  253. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
  254. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
  255. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
  256. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
  257. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
  258. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
  259. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
  260. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
  261. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
  262. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
  263. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
  264. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
  265. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
  266. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
  267. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
  268. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
  269. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
  270. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/index.html +0 -0
  271. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/manifest.json +0 -0
  272. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
  273. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
  274. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
  275. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
  276. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
  277. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
  278. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
  279. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
  280. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
  281. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
  282. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
  283. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
  284. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
  285. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
  286. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
  287. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
  288. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
  289. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
  290. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
  291. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
  292. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
  293. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
  294. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
  295. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
  296. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
  297. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
  298. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
  299. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
  300. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
  301. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
  302. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
  303. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
  304. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
  305. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
  306. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
  307. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
  308. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
  309. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
  310. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
  311. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
  312. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
  313. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
  314. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
  315. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
  316. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
  317. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
  318. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
  319. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
  320. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
  321. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
  322. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
  323. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
  324. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
  325. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
  326. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
  327. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
  328. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
  329. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
  330. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
  331. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
  332. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
  333. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
  334. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
  335. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
  336. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
  337. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
  338. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
  339. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
  340. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
  341. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
  342. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
  343. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
  344. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
  345. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
  346. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
  347. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
  348. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/index.html +0 -0
  349. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
  350. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
  351. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
  352. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/bulk_loader.py +0 -0
  353. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/capabilities.py +0 -0
  354. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/__init__.py +0 -0
  355. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
  356. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
  357. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/aql/__init__.py +0 -0
  358. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/aql/ast.py +0 -0
  359. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/aql/lexer.py +0 -0
  360. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/aql/parser.py +0 -0
  361. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/aql/translator.py +0 -0
  362. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/ast.py +0 -0
  363. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/lexer.py +0 -0
  364. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/parser.py +0 -0
  365. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/fhir_bridge.py +0 -0
  366. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/fusion.py +0 -0
  367. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/__init__.py +0 -0
  368. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/constants.py +0 -0
  369. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/engine.py +0 -0
  370. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/pooling.py +0 -0
  371. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/resolvers.py +0 -0
  372. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/schema.py +0 -0
  373. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/index_protocol.py +0 -0
  374. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/models.py +0 -0
  375. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/operators.py +0 -0
  376. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/py.typed +0 -0
  377. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/result.py +0 -0
  378. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/security.py +0 -0
  379. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/status.py +0 -0
  380. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/stores/__init__.py +0 -0
  381. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/text_search.py +0 -0
  382. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/utils.py +0 -0
  383. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/iris_vector_graph/vector_utils.py +0 -0
  384. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/fhir_bridges.sql +0 -0
  385. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/fraud_sample_data.sql +0 -0
  386. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/globals_schema.sql +0 -0
  387. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/graph_path_globals.sql +0 -0
  388. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/graph_walk_tvf.sql +0 -0
  389. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/migrations/000_base_schema_iris.sql +0 -0
  390. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/migrations/001_add_nodepk_table.sql +0 -0
  391. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/migrations/001_rollback_nodepk.sql +0 -0
  392. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/migrations/002_add_fk_constraints.sql +0 -0
  393. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/operators.sql +0 -0
  394. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/operators_fixed.sql +0 -0
  395. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/procedures/kg_PageRank.sql +0 -0
  396. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/rdf_reifications.sql +0 -0
  397. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/sql/schema.sql +0 -0
  398. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/TESTING.md +0 -0
  399. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmark_parser.py +0 -0
  400. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/README.md +0 -0
  401. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/bench.py +0 -0
  402. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/bench_utils.py +0 -0
  403. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/benchmark_neo4j.py +0 -0
  404. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/bfs_benchmark.py +0 -0
  405. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/establish_baseline.py +0 -0
  406. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/graph_gen.py +0 -0
  407. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/ic2_profile.py +0 -0
  408. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/iris_baseline_run.py +0 -0
  409. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/iris_os_run.py +0 -0
  410. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/ldbc_full_loader.py +0 -0
  411. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/load_neo4j.py +0 -0
  412. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/benchmarks/synthetic_baseline.csv +0 -0
  413. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/contract/__init__.py +0 -0
  414. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/contract/test_cypher_api.py +0 -0
  415. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/contract/test_cypher_api_errors.py +0 -0
  416. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/contract/test_graphql_queries.py +0 -0
  417. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/contract/test_graphql_schema.py +0 -0
  418. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/contract/test_ppr_api.py +0 -0
  419. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/curl_suite.sh +0 -0
  420. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/__init__.py +0 -0
  421. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/conftest.py +0 -0
  422. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_approx_count_distinct.py +0 -0
  423. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_aql_e2e.py +0 -0
  424. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_arno_bfs_global.py +0 -0
  425. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_arno_bfs_unified.py +0 -0
  426. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_biomedical_demo.py +0 -0
  427. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_biomedical_ui.py +0 -0
  428. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
  429. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_cypher_gaps_e2e.py +0 -0
  430. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
  431. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_cypher_vector_search.py +0 -0
  432. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
  433. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
  434. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_execution_contexts.py +0 -0
  435. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_execution_contexts_new.py +0 -0
  436. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
  437. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_fraud_demo.py +0 -0
  438. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_fraud_ui.py +0 -0
  439. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_gql_autogen_startup.py +0 -0
  440. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
  441. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_gql_node_queries.py +0 -0
  442. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_gql_semantic_search.py +0 -0
  443. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_gql_traversal.py +0 -0
  444. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_graph_kernels_e2e.py +0 -0
  445. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_hla_kg_e2e.py +0 -0
  446. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_ic13_shortest_path.py +0 -0
  447. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_ic3_exact_count.py +0 -0
  448. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_index_protocol.py +0 -0
  449. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_introspection_api.py +0 -0
  450. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_ivf_insert.py +0 -0
  451. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_large_output_chunked.py +0 -0
  452. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_lazy_node_resolution.py +0 -0
  453. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_multi_query_engine_platform.py +0 -0
  454. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_named_paths_e2e.py +0 -0
  455. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_nkg_index_e2e.py +0 -0
  456. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_operator_wiring_e2e.py +0 -0
  457. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
  458. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_plaid.py +0 -0
  459. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_plaid_search_e2e.py +0 -0
  460. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
  461. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_ppr_guided_e2e.py +0 -0
  462. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_procedure_installation.py +0 -0
  463. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_reification_e2e.py +0 -0
  464. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_schema_procedures_e2e.py +0 -0
  465. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_store_injection_e2e.py +0 -0
  466. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_streaming_bfs.py +0 -0
  467. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_api.py +0 -0
  468. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_ingest.py +0 -0
  469. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_multi_context.py +0 -0
  470. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_search.py +0 -0
  471. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_setup.py +0 -0
  472. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_traversal.py +0 -0
  473. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_subgraph_e2e.py +0 -0
  474. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_subquery_call_e2e.py +0 -0
  475. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_temporal_store_e2e.py +0 -0
  476. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_untested_methods.py +0 -0
  477. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/e2e/test_vecindex_e2e.py +0 -0
  478. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/__init__.py +0 -0
  479. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/conftest.py +0 -0
  480. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/gql/__init__.py +0 -0
  481. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/gql/test_graphql_mutations.py +0 -0
  482. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
  483. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/gql/test_graphql_queries.py +0 -0
  484. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/gql/test_graphql_vector_search.py +0 -0
  485. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_bidirectional_ppr.py +0 -0
  486. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_cls_layer.py +0 -0
  487. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_advanced.py +0 -0
  488. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_enhancements.py +0 -0
  489. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_multi_type.py +0 -0
  490. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_rd.py +0 -0
  491. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_rel_vars.py +0 -0
  492. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_single_type.py +0 -0
  493. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_untyped.py +0 -0
  494. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_vector_search.py +0 -0
  495. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_embeddings_api.py +0 -0
  496. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_fastapi_graphql.py +0 -0
  497. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_fhir_bridges_integration.py +0 -0
  498. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_named_paths_integration.py +0 -0
  499. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
  500. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_constraints.py +0 -0
  501. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_graph_analytics.py +0 -0
  502. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_migration.py +0 -0
  503. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_performance.py +0 -0
  504. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_production_scale.py +0 -0
  505. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_objectscript_classes.py +0 -0
  506. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_pagerank_sql_optimization.py +0 -0
  507. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_reification_integration.py +0 -0
  508. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_schema_migration.py +0 -0
  509. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_stored_procedure_install.py +0 -0
  510. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/integration/test_subquery_call_integration.py +0 -0
  511. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/performance/conftest.py +0 -0
  512. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/performance/scale_benchmark.py +0 -0
  513. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/performance/test_ppr_stress.py +0 -0
  514. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/performance/test_stress_v1_5.py +0 -0
  515. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/python/run_all_tests.py +0 -0
  516. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/python/test_iris_rest_api.py +0 -0
  517. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/python/test_networkx_loader.py +0 -0
  518. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/python/test_performance_benchmarks.py +0 -0
  519. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/python/test_pyops_vector_conversion.py +0 -0
  520. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/python/test_python_operators.py +0 -0
  521. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/python/test_python_sdk.py +0 -0
  522. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/python/test_schema_validation.py +0 -0
  523. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/python/test_sql_queries.py +0 -0
  524. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/python/test_vector_functions.py +0 -0
  525. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/cypher/__init__.py +0 -0
  526. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/cypher/test_lexer.py +0 -0
  527. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/cypher/test_lexer_advanced.py +0 -0
  528. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/cypher/test_parser.py +0 -0
  529. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/cypher/test_parser_advanced.py +0 -0
  530. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_aql_lexer.py +0 -0
  531. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_aql_parser.py +0 -0
  532. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_aql_translator.py +0 -0
  533. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_batch_mutations.py +0 -0
  534. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_bfs_arno.py +0 -0
  535. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_bm25_index.py +0 -0
  536. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_bolt_server.py +0 -0
  537. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cls_deployment.py +0 -0
  538. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_coverage_boost.py +0 -0
  539. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_benchmark.py +0 -0
  540. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_benchmark_scale.py +0 -0
  541. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_case_when.py +0 -0
  542. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_e2e_new_features.py +0 -0
  543. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_functions.py +0 -0
  544. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_parser.py +0 -0
  545. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_posos_bugs.py +0 -0
  546. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_procedures.py +0 -0
  547. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_translator.py +0 -0
  548. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_union_exists.py +0 -0
  549. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_var_length.py +0 -0
  550. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_vector_search.py +0 -0
  551. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_edge_embeddings.py +0 -0
  552. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_edgeprop_ndjson.py +0 -0
  553. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_embed_nodes_params.py +0 -0
  554. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_embedded.py +0 -0
  555. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_embedded_wgproto.py +0 -0
  556. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_engine_dimension_fix.py +0 -0
  557. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_engine_embeddings.py +0 -0
  558. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_engine_mocked.py +0 -0
  559. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_engine_status.py +0 -0
  560. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_fhir_bridge.py +0 -0
  561. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_fhir_bridges.py +0 -0
  562. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_get_nodes.py +0 -0
  563. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_graph_kernels.py +0 -0
  564. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_graphql_dataloader.py +0 -0
  565. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_index_handle.py +0 -0
  566. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_index_protocol.py +0 -0
  567. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_ingest_formats.py +0 -0
  568. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_introspection_api.py +0 -0
  569. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_ivf_index.py +0 -0
  570. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_ivgresult.py +0 -0
  571. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_module_coverage.py +0 -0
  572. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_named_graphs.py +0 -0
  573. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_named_paths.py +0 -0
  574. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_operators_coverage.py +0 -0
  575. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_operators_wiring.py +0 -0
  576. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_plaid_search.py +0 -0
  577. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_ppr_guided_subgraph.py +0 -0
  578. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_reification.py +0 -0
  579. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_schema_init.py +0 -0
  580. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_schema_procedures.py +0 -0
  581. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_shortest_path.py +0 -0
  582. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_snapshot.py +0 -0
  583. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_sql_splitter.py +0 -0
  584. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_sql_table_bridge.py +0 -0
  585. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_subgraph.py +0 -0
  586. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_subquery_call.py +0 -0
  587. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_supporting_modules.py +0 -0
  588. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_temporal_cypher.py +0 -0
  589. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_temporal_edges.py +0 -0
  590. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_translator_coverage.py +0 -0
  591. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_unified_edge_store.py +0 -0
  592. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_validation.py +0 -0
  593. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_vector_search_routing.py +0 -0
  594. {iris_vector_graph-1.95.0 → iris_vector_graph-1.98.0}/tests/unit/test_weighted_shortest_path.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-vector-graph
3
- Version: 1.95.0
3
+ Version: 1.98.0
4
4
  Summary: Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs
5
5
  Project-URL: Homepage, https://github.com/intersystems-community/iris-vector-graph
6
6
  Project-URL: Documentation, https://github.com/intersystems-community/iris-vector-graph/tree/main/docs
@@ -29,6 +29,10 @@ Requires-Dist: biopython>=1.81; extra == 'biodata'
29
29
  Requires-Dist: bioservices>=1.11.0; extra == 'biodata'
30
30
  Requires-Dist: mygene>=3.2.0; extra == 'biodata'
31
31
  Requires-Dist: obonet>=1.0.0; extra == 'biodata'
32
+ Provides-Extra: cli
33
+ Requires-Dist: click>=8.0.0; extra == 'cli'
34
+ Requires-Dist: httpx>=0.28.1; extra == 'cli'
35
+ Requires-Dist: tabulate>=0.9.0; extra == 'cli'
32
36
  Provides-Extra: core
33
37
  Requires-Dist: intersystems-iris>=1.0.0; extra == 'core'
34
38
  Provides-Extra: demo
@@ -36,7 +40,7 @@ Requires-Dist: python-fasthtml>=0.12.0; extra == 'demo'
36
40
  Provides-Extra: dev
37
41
  Requires-Dist: black>=23.0.0; extra == 'dev'
38
42
  Requires-Dist: flake8>=6.0.0; extra == 'dev'
39
- Requires-Dist: iris-devtester>=1.14.0; extra == 'dev'
43
+ Requires-Dist: iris-devtester>=1.18.1; extra == 'dev'
40
44
  Requires-Dist: isort>=5.12.0; extra == 'dev'
41
45
  Requires-Dist: mypy>=1.5.0; extra == 'dev'
42
46
  Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
@@ -45,6 +49,7 @@ Requires-Dist: pytest>=7.4.0; extra == 'dev'
45
49
  Provides-Extra: full
46
50
  Requires-Dist: fastapi>=0.118.0; extra == 'full'
47
51
  Requires-Dist: httpx>=0.28.1; extra == 'full'
52
+ Requires-Dist: iris-embedded-python-wrapper>=0.5.20; extra == 'full'
48
53
  Requires-Dist: networkx>=3.0; extra == 'full'
49
54
  Requires-Dist: numpy>=1.24.0; extra == 'full'
50
55
  Requires-Dist: pandas>=2.0.0; extra == 'full'
@@ -805,6 +810,26 @@ conditions = tool("patient-123") # → {"conditions": [...], "error": None}
805
810
 
806
811
  ## Changelog
807
812
 
813
+ ### v1.98.0 (2026-05-28)
814
+ - **feat**: Spec 162 — Centrality Suite. Four new graph centrality algorithms shipping via the GraphStore protocol + Cypher procedures, closing the biggest coverage gap vs Neo4j GDS:
815
+ - `engine.degree_centrality(direction, predicate, top_k)` — out/in/both, predicate-filtered, normalized to (n-1)
816
+ - `engine.betweenness_centrality(sample_size, direction, max_hops, top_k, mem_budget_mb, progress_callback)` — Brandes (2001), Brandes-Pich approximation when sampled, per-source memory budget, progress reporting
817
+ - `engine.closeness_centrality(formula, direction, max_hops, top_k, progress_callback)` — `harmonic` (default, robust to disconnection) and `classical` formulas
818
+ - `engine.eigenvector_centrality(max_iter, tol, top_k, progress_callback)` — power iteration over raw adjacency `A`, L2-normalized, matches `networkx.eigenvector_centrality_numpy` (NOT PageRank with α=1)
819
+ - **feat**: 4 Cypher procedures `CALL ivg.degreeCentrality({...}) YIELD node, score, degree`, `CALL ivg.betweenness({...}) YIELD node, score`, `CALL ivg.closeness({...})`, `CALL ivg.eigenvector({...})` with map-parameter syntax. Procedure-call validator rejects unknown keys (FR-029 forward-compat reservation for future `weighted` variants).
820
+ - **feat**: `engine.get_centrality_warnings()` reads `^IVG.warnings("centrality", ...)` for memory-budget skip events; Brandes writes warning entries when per-source predecessor accumulator exceeds `mem_budget_mb`.
821
+ - **feat**: 4 new `GraphStore` protocol methods (`execute_degree_centrality`, `execute_betweenness`, `execute_closeness`, `execute_eigenvector`) + 4 capability keys.
822
+ - **feat**: 4 new Pydantic input models exported from package root: `DegreeCentralityInput`, `BetweennessInput`, `ClosenessInput`, `EigenvectorInput`.
823
+ - **feat**: `scripts/test-container.sh` — single entry point for IRIS test container ops (replaces ad-hoc `IRISContainer.start()` calls). Includes graceful `iris stop IRIS quietly` before `docker rm -f` (Bug T mitigation).
824
+ - **feat**: Container renamed from legacy `gqs-ivg-test` (ephemeral) to `ivg-iris` (persistent, registered in lab_manager registry as `status: active`).
825
+ - **fix (Bug S)**: Native API gref-bypass production path for centrality algorithms — when `iris.createIRIS().classMethodValue('Graph.KG.Centrality', ...)` returns `<CLASS DOES NOT EXIST>` from `%SYS.DBSRV` cache, the Python store automatically falls back to direct `^KG` global access via `iris_inst.set/get/nextSubscript/kill`. Algorithm correctness proven via Pearson > 0.85 with networkx reference on `networkx.betweenness_centrality`, `harmonic_centrality`, `eigenvector_centrality_numpy`, `out_degree_centrality`.
826
+ - **fix (Bug T)**: `iris-devtester>=1.18.1` upstream fix — `IRISContainer.__exit__()` now calls `stop_gracefully()` (graceful `iris stop IRIS quietly`) before Docker SIGKILL, preventing silent row loss on container restart. IVG bumped pin to `iris-devtester>=1.18.1`.
827
+ - **fix (Bug R, false alarm)**: Investigation confirmed `los-iris` slowness from unindexed `rdf_labels.s`/`rdf_props.s` was specific to productivity-framework's container schema; IVG's `initialize_schema()` already creates `idx_labels_s` and `idx_props_s`. No IVG fix needed.
828
+ - **test**: 16 new e2e tests in `tests/e2e/test_centrality_e2e.py` — networkx parity master gate + per-algorithm validation (15 PASS + 1 XFAIL Bug S Cypher path, deeply documented).
829
+ - **test**: 30 new unit tests in `tests/unit/test_centrality_unit.py` and `tests/unit/test_centrality_translator.py` — protocol routing, Pydantic validation, Cypher translator FR-029 enforcement.
830
+ - **docs**: `specs/162-centrality-suite/{spec,plan,research,data-model,quickstart,tasks}.md` — full spec with 5 clarifications integrated, 29 functional requirements, 6 NFRs, 10 user stories.
831
+ - **docs**: `ENGINEERING_DEBT.md` Bug S + Bug T entries with reproduction steps and resolution context.
832
+
808
833
  ### v1.88.0 (2026-05-07)
809
834
  - **feat**: `ffi_kg_build_2hop_exact_int` Rust function — integer-indexed single-pass 2-hop dedup from `^KG("out")`. Writes results to `^ArnoKG("2h")` temp global; `DecodeBuildResults()` ObjectScript method converts to `^KG("deg2p_exact")`
810
835
  - **feat**: `KHop2CountExact(src, pred)` ObjectScript method — O(1) `$Get(^KG("deg2p_exact"))`, fallback to `KHop2Count` when not populated. 0.14ms p50 on SF10 (was 70ms)
@@ -1254,6 +1279,81 @@ Four openCypher gaps closed, all from structured gap analysis against the openCy
1254
1279
 
1255
1280
  ## Changelog
1256
1281
 
1282
+ ### v1.97.0 (2026-05-16)
1283
+
1284
+ **Three new features closing the gap with NornicDB-style vector-graph fusion:**
1285
+
1286
+ **`CALL ivg.retrieve(query, limit, bm25_name?, vec_label?, rrf_k?)`** — single Cypher procedure for BM25 + vector + RRF fusion. Equivalent to NornicDB's `db.retrieve()`:
1287
+ ```cypher
1288
+ CALL ivg.retrieve('insulin resistance', 10) YIELD node, score
1289
+ MATCH (node)-[:INTERACTS_WITH]->(target)
1290
+ RETURN target.node_id, score ORDER BY score DESC
1291
+ ```
1292
+ Generates three-CTE SQL (BM25_Retrieve + Vec_Retrieve + Retrieve with FULL OUTER JOIN RRF fusion).
1293
+
1294
+ **`WHERE vector_distance(n, $vec) < 0.3`** — scalar vector similarity predicate in WHERE/RETURN clauses:
1295
+ ```cypher
1296
+ MATCH (n:Gene) WHERE vector_distance(n, $vec) < 0.3 RETURN n.node_id
1297
+ MATCH (n) RETURN n.node_id, vector_similarity(n, $vec) AS sim ORDER BY sim DESC LIMIT 10
1298
+ ```
1299
+ Translates to `VECTOR_COSINE()` subquery against `kg_NodeEmbeddings`.
1300
+
1301
+ **`Graph.KG.EmbedQueue`** — async embedding queue (ObjectScript). Write nodes now, embeddings appear asynchronously:
1302
+ ```python
1303
+ engine.enqueue_for_embedding(["n1", "n2", "n3"], embedding_config="my-model")
1304
+ engine.start_background_embedding(batch_size=100)
1305
+ count = engine.embed_queue_pending()
1306
+ result = engine.process_embed_queue(batch_size=50)
1307
+ ```
1308
+ Uses `^EmbedQueue` global + `Graph.KG.EmbedQueue.ProcessBatch()` via `%SYSTEM.Task`.
1309
+
1310
+ ### v1.96.2 (2026-05-15)
1311
+
1312
+ **Fix**: `_build_index_registry()` infinite loop when `iris.gref` is a `MagicMock` (external connections via IVR or test mocks). `gref.order()` on a MagicMock returns a MagicMock, which is never `== ""`, causing infinite loop. Fix: `isinstance(name, str)` guard + `range(10000)` hard limit. Reported by IVR session.
1313
+
1314
+ ### v1.96.1 (2026-05-15)
1315
+
1316
+ **Fix**: Lazy-load `sentence-transformers` and `torch` to prevent repeated memory allocation. Inline `from sentence_transformers import SentenceTransformer` in `embed_text()`, `embed_nodes()`, `embed_edges()` replaced with module-level singletons (`_get_sentence_transformers()`, `_load_sentence_transformer()`). Prevents torch reference counting from blocking GC between embedding batches.
1317
+
1318
+ ### v1.96.0 (2026-05-15)
1319
+
1320
+ **IVG SDK, CLI, Deploy, and iris-embedded-python-wrapper adoption** (spec 160):
1321
+
1322
+ **`iris_vector_graph.sdk`** — new thin HTTP client, zero `intersystems-irispython` required:
1323
+ ```python
1324
+ from iris_vector_graph import IVGClient
1325
+ with IVGClient("http://localhost:8200", api_key="...") as client:
1326
+ result = client.execute_cypher("MATCH (n) RETURN count(n)")
1327
+ result = client.execute_aql("FOR v IN 1..2 OUTBOUND @s g RETURN v._key", bind_vars={"s": "n1"})
1328
+ ```
1329
+ - `IVGRecord` — dict-style row access: `r["name"]` and `r[0]` both work
1330
+ - `IVGError` / `IVGClientError` / `IVGServerError` — structured exception hierarchy
1331
+ - `AsyncIVGClient` — identical async API
1332
+ - Retry on 5xx (3× exponential backoff)
1333
+ - `ping()`, `schema()`, `server_info()`, `stats()`, `explain()`, `load_ndjson()`
1334
+
1335
+ **`ivg` CLI** — `pip install "iris-vector-graph[cli]"`:
1336
+ ```bash
1337
+ ivg connect http://localhost:8200
1338
+ ivg query "MATCH (n) RETURN count(n)"
1339
+ ivg query --aql "FOR v IN 1..2 OUTBOUND @s g RETURN v" --bind s=mesh:D003924
1340
+ ivg load graph.ndjson
1341
+ ivg schema init / status
1342
+ ivg indexes list / rebuild
1343
+ ivg server start --iris-host localhost --iris-port 1972
1344
+ ```
1345
+
1346
+ **`deploy/`** folder — four setup paths:
1347
+ - `deploy/docker/compose.yml` — fresh IRIS + IVG server in Docker
1348
+ - `deploy/bolt-on/install.sh` — bolt onto existing IRIS
1349
+ - `deploy/README.md` — decision guide
1350
+
1351
+ **`iris-embedded-python-wrapper` adoption**:
1352
+ - `IRISGraphEngine.from_wrapper(hostname=...)` — new classmethod using `iris.dbapi.connect()`
1353
+ - `cypher_api.py` `_make_engine()` prefers wrapper's `iris.dbapi.connect()` when available
1354
+ - `iris-embedded-python-wrapper>=0.5.20` added to `[full]` extra
1355
+ - `EmbeddedConnection` retained for backward compatibility
1356
+
1257
1357
  ### v1.95.0 (2026-05-15)
1258
1358
 
1259
1359
  **Admin API** — IVG now has a production-grade admin surface matching Neo4j/ArangoDB:
@@ -733,6 +733,26 @@ conditions = tool("patient-123") # → {"conditions": [...], "error": None}
733
733
 
734
734
  ## Changelog
735
735
 
736
+ ### v1.98.0 (2026-05-28)
737
+ - **feat**: Spec 162 — Centrality Suite. Four new graph centrality algorithms shipping via the GraphStore protocol + Cypher procedures, closing the biggest coverage gap vs Neo4j GDS:
738
+ - `engine.degree_centrality(direction, predicate, top_k)` — out/in/both, predicate-filtered, normalized to (n-1)
739
+ - `engine.betweenness_centrality(sample_size, direction, max_hops, top_k, mem_budget_mb, progress_callback)` — Brandes (2001), Brandes-Pich approximation when sampled, per-source memory budget, progress reporting
740
+ - `engine.closeness_centrality(formula, direction, max_hops, top_k, progress_callback)` — `harmonic` (default, robust to disconnection) and `classical` formulas
741
+ - `engine.eigenvector_centrality(max_iter, tol, top_k, progress_callback)` — power iteration over raw adjacency `A`, L2-normalized, matches `networkx.eigenvector_centrality_numpy` (NOT PageRank with α=1)
742
+ - **feat**: 4 Cypher procedures `CALL ivg.degreeCentrality({...}) YIELD node, score, degree`, `CALL ivg.betweenness({...}) YIELD node, score`, `CALL ivg.closeness({...})`, `CALL ivg.eigenvector({...})` with map-parameter syntax. Procedure-call validator rejects unknown keys (FR-029 forward-compat reservation for future `weighted` variants).
743
+ - **feat**: `engine.get_centrality_warnings()` reads `^IVG.warnings("centrality", ...)` for memory-budget skip events; Brandes writes warning entries when per-source predecessor accumulator exceeds `mem_budget_mb`.
744
+ - **feat**: 4 new `GraphStore` protocol methods (`execute_degree_centrality`, `execute_betweenness`, `execute_closeness`, `execute_eigenvector`) + 4 capability keys.
745
+ - **feat**: 4 new Pydantic input models exported from package root: `DegreeCentralityInput`, `BetweennessInput`, `ClosenessInput`, `EigenvectorInput`.
746
+ - **feat**: `scripts/test-container.sh` — single entry point for IRIS test container ops (replaces ad-hoc `IRISContainer.start()` calls). Includes graceful `iris stop IRIS quietly` before `docker rm -f` (Bug T mitigation).
747
+ - **feat**: Container renamed from legacy `gqs-ivg-test` (ephemeral) to `ivg-iris` (persistent, registered in lab_manager registry as `status: active`).
748
+ - **fix (Bug S)**: Native API gref-bypass production path for centrality algorithms — when `iris.createIRIS().classMethodValue('Graph.KG.Centrality', ...)` returns `<CLASS DOES NOT EXIST>` from `%SYS.DBSRV` cache, the Python store automatically falls back to direct `^KG` global access via `iris_inst.set/get/nextSubscript/kill`. Algorithm correctness proven via Pearson > 0.85 with networkx reference on `networkx.betweenness_centrality`, `harmonic_centrality`, `eigenvector_centrality_numpy`, `out_degree_centrality`.
749
+ - **fix (Bug T)**: `iris-devtester>=1.18.1` upstream fix — `IRISContainer.__exit__()` now calls `stop_gracefully()` (graceful `iris stop IRIS quietly`) before Docker SIGKILL, preventing silent row loss on container restart. IVG bumped pin to `iris-devtester>=1.18.1`.
750
+ - **fix (Bug R, false alarm)**: Investigation confirmed `los-iris` slowness from unindexed `rdf_labels.s`/`rdf_props.s` was specific to productivity-framework's container schema; IVG's `initialize_schema()` already creates `idx_labels_s` and `idx_props_s`. No IVG fix needed.
751
+ - **test**: 16 new e2e tests in `tests/e2e/test_centrality_e2e.py` — networkx parity master gate + per-algorithm validation (15 PASS + 1 XFAIL Bug S Cypher path, deeply documented).
752
+ - **test**: 30 new unit tests in `tests/unit/test_centrality_unit.py` and `tests/unit/test_centrality_translator.py` — protocol routing, Pydantic validation, Cypher translator FR-029 enforcement.
753
+ - **docs**: `specs/162-centrality-suite/{spec,plan,research,data-model,quickstart,tasks}.md` — full spec with 5 clarifications integrated, 29 functional requirements, 6 NFRs, 10 user stories.
754
+ - **docs**: `ENGINEERING_DEBT.md` Bug S + Bug T entries with reproduction steps and resolution context.
755
+
736
756
  ### v1.88.0 (2026-05-07)
737
757
  - **feat**: `ffi_kg_build_2hop_exact_int` Rust function — integer-indexed single-pass 2-hop dedup from `^KG("out")`. Writes results to `^ArnoKG("2h")` temp global; `DecodeBuildResults()` ObjectScript method converts to `^KG("deg2p_exact")`
738
758
  - **feat**: `KHop2CountExact(src, pred)` ObjectScript method — O(1) `$Get(^KG("deg2p_exact"))`, fallback to `KHop2Count` when not populated. 0.14ms p50 on SF10 (was 70ms)
@@ -1182,6 +1202,81 @@ Four openCypher gaps closed, all from structured gap analysis against the openCy
1182
1202
 
1183
1203
  ## Changelog
1184
1204
 
1205
+ ### v1.97.0 (2026-05-16)
1206
+
1207
+ **Three new features closing the gap with NornicDB-style vector-graph fusion:**
1208
+
1209
+ **`CALL ivg.retrieve(query, limit, bm25_name?, vec_label?, rrf_k?)`** — single Cypher procedure for BM25 + vector + RRF fusion. Equivalent to NornicDB's `db.retrieve()`:
1210
+ ```cypher
1211
+ CALL ivg.retrieve('insulin resistance', 10) YIELD node, score
1212
+ MATCH (node)-[:INTERACTS_WITH]->(target)
1213
+ RETURN target.node_id, score ORDER BY score DESC
1214
+ ```
1215
+ Generates three-CTE SQL (BM25_Retrieve + Vec_Retrieve + Retrieve with FULL OUTER JOIN RRF fusion).
1216
+
1217
+ **`WHERE vector_distance(n, $vec) < 0.3`** — scalar vector similarity predicate in WHERE/RETURN clauses:
1218
+ ```cypher
1219
+ MATCH (n:Gene) WHERE vector_distance(n, $vec) < 0.3 RETURN n.node_id
1220
+ MATCH (n) RETURN n.node_id, vector_similarity(n, $vec) AS sim ORDER BY sim DESC LIMIT 10
1221
+ ```
1222
+ Translates to `VECTOR_COSINE()` subquery against `kg_NodeEmbeddings`.
1223
+
1224
+ **`Graph.KG.EmbedQueue`** — async embedding queue (ObjectScript). Write nodes now, embeddings appear asynchronously:
1225
+ ```python
1226
+ engine.enqueue_for_embedding(["n1", "n2", "n3"], embedding_config="my-model")
1227
+ engine.start_background_embedding(batch_size=100)
1228
+ count = engine.embed_queue_pending()
1229
+ result = engine.process_embed_queue(batch_size=50)
1230
+ ```
1231
+ Uses `^EmbedQueue` global + `Graph.KG.EmbedQueue.ProcessBatch()` via `%SYSTEM.Task`.
1232
+
1233
+ ### v1.96.2 (2026-05-15)
1234
+
1235
+ **Fix**: `_build_index_registry()` infinite loop when `iris.gref` is a `MagicMock` (external connections via IVR or test mocks). `gref.order()` on a MagicMock returns a MagicMock, which is never `== ""`, causing infinite loop. Fix: `isinstance(name, str)` guard + `range(10000)` hard limit. Reported by IVR session.
1236
+
1237
+ ### v1.96.1 (2026-05-15)
1238
+
1239
+ **Fix**: Lazy-load `sentence-transformers` and `torch` to prevent repeated memory allocation. Inline `from sentence_transformers import SentenceTransformer` in `embed_text()`, `embed_nodes()`, `embed_edges()` replaced with module-level singletons (`_get_sentence_transformers()`, `_load_sentence_transformer()`). Prevents torch reference counting from blocking GC between embedding batches.
1240
+
1241
+ ### v1.96.0 (2026-05-15)
1242
+
1243
+ **IVG SDK, CLI, Deploy, and iris-embedded-python-wrapper adoption** (spec 160):
1244
+
1245
+ **`iris_vector_graph.sdk`** — new thin HTTP client, zero `intersystems-irispython` required:
1246
+ ```python
1247
+ from iris_vector_graph import IVGClient
1248
+ with IVGClient("http://localhost:8200", api_key="...") as client:
1249
+ result = client.execute_cypher("MATCH (n) RETURN count(n)")
1250
+ result = client.execute_aql("FOR v IN 1..2 OUTBOUND @s g RETURN v._key", bind_vars={"s": "n1"})
1251
+ ```
1252
+ - `IVGRecord` — dict-style row access: `r["name"]` and `r[0]` both work
1253
+ - `IVGError` / `IVGClientError` / `IVGServerError` — structured exception hierarchy
1254
+ - `AsyncIVGClient` — identical async API
1255
+ - Retry on 5xx (3× exponential backoff)
1256
+ - `ping()`, `schema()`, `server_info()`, `stats()`, `explain()`, `load_ndjson()`
1257
+
1258
+ **`ivg` CLI** — `pip install "iris-vector-graph[cli]"`:
1259
+ ```bash
1260
+ ivg connect http://localhost:8200
1261
+ ivg query "MATCH (n) RETURN count(n)"
1262
+ ivg query --aql "FOR v IN 1..2 OUTBOUND @s g RETURN v" --bind s=mesh:D003924
1263
+ ivg load graph.ndjson
1264
+ ivg schema init / status
1265
+ ivg indexes list / rebuild
1266
+ ivg server start --iris-host localhost --iris-port 1972
1267
+ ```
1268
+
1269
+ **`deploy/`** folder — four setup paths:
1270
+ - `deploy/docker/compose.yml` — fresh IRIS + IVG server in Docker
1271
+ - `deploy/bolt-on/install.sh` — bolt onto existing IRIS
1272
+ - `deploy/README.md` — decision guide
1273
+
1274
+ **`iris-embedded-python-wrapper` adoption**:
1275
+ - `IRISGraphEngine.from_wrapper(hostname=...)` — new classmethod using `iris.dbapi.connect()`
1276
+ - `cypher_api.py` `_make_engine()` prefers wrapper's `iris.dbapi.connect()` when available
1277
+ - `iris-embedded-python-wrapper>=0.5.20` added to `[full]` extra
1278
+ - `EmbeddedConnection` retained for backward compatibility
1279
+
1185
1280
  ### v1.95.0 (2026-05-15)
1186
1281
 
1187
1282
  **Admin API** — IVG now has a production-grade admin surface matching Neo4j/ArangoDB:
@@ -0,0 +1,154 @@
1
+ /// Centrality algorithms for the Knowledge Graph.
2
+ /// Pure ObjectScript over ^KG globals — no iris module dependency, safe from any call context.
3
+ ///
4
+ /// Algorithms (spec 162):
5
+ /// - DegreeCentralityJson — out/in/total-degree centrality, normalized to (n-1)
6
+ /// - BetweennessJson — Brandes' algorithm with optional sampling and memory budget
7
+ /// - ClosenessJson — harmonic (default) or classical formula
8
+ /// - EigenvectorJson — power iteration over raw adjacency A (NOT PageRank with α=1)
9
+ ///
10
+ /// Storage (read-only):
11
+ /// ^KG("out", 0, s, p, o) outbound edges (shard-0)
12
+ /// ^KG("in", 0, o, p, s) inbound edges (shard-0)
13
+ /// ^KG("deg", node) total out-degree
14
+ /// ^KG("degp", node, pred) per-predicate out-degree
15
+ ///
16
+ /// Process-private scratch (killed on exit):
17
+ /// ^||CENT(-score, node) descending sort buffer (shared across algos)
18
+ /// ^||BC.* Brandes per-source accumulators (Betweenness only)
19
+ /// ^||CL.* Closeness accumulators
20
+ /// ^||EIG.* Eigenvector x and xnew vectors
21
+ ///
22
+ /// Durable warning log:
23
+ /// ^IVG.warnings("centrality", $H, source) = "BC mem budget exceeded ..."
24
+ ///
25
+ /// Concurrency contract:
26
+ /// Reads ^KG live — no snapshot, no lock. Concurrent mutations during a multi-second
27
+ /// run may produce inconsistent scores. Run on a quiescent graph for reproducibility.
28
+ /// Matches Neo4j GDS contract (FR-021).
29
+ Class Graph.KG.Centrality Extends %RegisteredObject [ SqlSchemaName = Graph_KG ]
30
+ {
31
+
32
+ /// Degree Centrality, normalized to (n-1).
33
+ ///
34
+ /// @param direction "out" (default) | "in" | "both"
35
+ /// @param predicate Empty string = all predicates; otherwise filter to one predicate
36
+ /// @param topK Max rows to return (default 10000; 0 = uncapped)
37
+ /// @returns JSON array: [{"id":"node","score":0.42,"degree":17}, ...] sorted desc by score
38
+ ClassMethod DegreeCentralityJson(direction As %String = "out", predicate As %String = "", topK As %Integer = 10000) As %String
39
+ {
40
+ // Count nodes for normalization
41
+ Set nodeCount = 0
42
+ Set node = ""
43
+ For {
44
+ Set node = $Order(^KG("deg", node))
45
+ Quit:node=""
46
+ Set nodeCount = nodeCount + 1
47
+ }
48
+ If nodeCount = 0 Return "[]"
49
+ Set norm = 1.0 / $Select(nodeCount > 1: nodeCount - 1, 1: 1)
50
+
51
+ Kill ^||CENT
52
+
53
+ // Compute degree for each node based on direction + predicate
54
+ Set node = ""
55
+ For {
56
+ Set node = $Order(^KG("deg", node))
57
+ Quit:node=""
58
+
59
+ Set deg = 0
60
+ If predicate = "" {
61
+ // All predicates
62
+ If direction = "out" {
63
+ Set deg = +$Get(^KG("deg", node))
64
+ } ElseIf direction = "in" {
65
+ // Walk ^KG("in", 0, node, p, s) and count
66
+ Set p = ""
67
+ For {
68
+ Set p = $Order(^KG("in", 0, node, p))
69
+ Quit:p=""
70
+ Set s = ""
71
+ For {
72
+ Set s = $Order(^KG("in", 0, node, p, s))
73
+ Quit:s=""
74
+ Set deg = deg + 1
75
+ }
76
+ }
77
+ } Else {
78
+ // both = out + in
79
+ Set deg = +$Get(^KG("deg", node))
80
+ Set p = ""
81
+ For {
82
+ Set p = $Order(^KG("in", 0, node, p))
83
+ Quit:p=""
84
+ Set s = ""
85
+ For {
86
+ Set s = $Order(^KG("in", 0, node, p, s))
87
+ Quit:s=""
88
+ Set deg = deg + 1
89
+ }
90
+ }
91
+ }
92
+ } Else {
93
+ // Specific predicate
94
+ If direction = "out" {
95
+ Set deg = +$Get(^KG("degp", node, predicate))
96
+ } ElseIf direction = "in" {
97
+ // Walk ^KG("in", 0, node, predicate, *)
98
+ Set s = ""
99
+ For {
100
+ Set s = $Order(^KG("in", 0, node, predicate, s))
101
+ Quit:s=""
102
+ Set deg = deg + 1
103
+ }
104
+ } Else {
105
+ Set deg = +$Get(^KG("degp", node, predicate))
106
+ Set s = ""
107
+ For {
108
+ Set s = $Order(^KG("in", 0, node, predicate, s))
109
+ Quit:s=""
110
+ Set deg = deg + 1
111
+ }
112
+ }
113
+ }
114
+
115
+ Set score = deg * norm
116
+ // Use negative score for descending $Order
117
+ Set ^||CENT(-score, node) = deg
118
+ }
119
+
120
+ // Build JSON result array (top-K)
121
+ Set result = ##class(%DynamicArray).%New()
122
+ Set negScore = ""
123
+ Set count = 0
124
+ Set cap = $Select(topK > 0: topK, 1: 999999999)
125
+ For {
126
+ Set negScore = $Order(^||CENT(negScore))
127
+ Quit:negScore=""
128
+ Set n = ""
129
+ For {
130
+ Set n = $Order(^||CENT(negScore, n), 1, deg)
131
+ Quit:n=""
132
+ Set obj = ##class(%DynamicObject).%New()
133
+ Do obj.%Set("id", n)
134
+ Do obj.%Set("score", -negScore, "number")
135
+ Do obj.%Set("degree", deg, "number")
136
+ Do result.%Push(obj)
137
+ Set count = count + 1
138
+ Quit:count>=cap
139
+ }
140
+ Quit:count>=cap
141
+ }
142
+
143
+ Kill ^||CENT
144
+ Return result.%ToJSON()
145
+ }
146
+
147
+ /// SQL stored procedure wrapper for DegreeCentralityJson.
148
+ /// Used by the Cypher translator's ivg.degreeCentrality CTE.
149
+ ClassMethod kgDegreeCentrality(direction As %String, predicate As %String, topK As %Integer) As %String [ SqlName = kg_DegreeCentrality, SqlProc ]
150
+ {
151
+ Return ..DegreeCentralityJson(direction, predicate, topK)
152
+ }
153
+
154
+ }
@@ -97,10 +97,8 @@ ClassMethod DeleteAdjacency(s As %String, p As %String, o As %String)
97
97
  }
98
98
 
99
99
 
100
- /// Bulk ingest edges directly to ^KG globals via embedded Python.
101
- /// edges_json: JSON array of [s, p, o] triples or {"s":..,"p":..,"o":..} objects.
102
- /// predicate: default predicate if using [s, o] pair format.
103
- /// Returns count of edges written.
100
+ /// DEPRECATED: writes to process-private ^||KG via Python iris.gref — data lost on process exit.
101
+ /// Use BulkIngestEdgesSQL instead. Kept for backward compatibility only.
104
102
  ClassMethod BulkIngestEdges(edgesJson As %String, predicate As %String = "R") As %Integer [ Internal, Language = python ]
105
103
  {
106
104
  import iris, json, warnings
@@ -124,4 +122,88 @@ ClassMethod BulkIngestEdges(edgesJson As %String, predicate As %String = "R") As
124
122
  return n
125
123
  }
126
124
 
125
+ /// Bulk ingest edges via SQL INSERT + persistent ^KG global writes.
126
+ /// Writes to BOTH rdf_edges (SQL, queryable via Cypher) AND ^KG globals (BFS acceleration).
127
+ /// edges_json: JSON array of {"s":s,"p":p,"o":o} objects.
128
+ /// Returns count of edges written.
129
+ ClassMethod BulkIngestEdgesSQL(edgesJson As %String, predicate As %String = "KNOWS") As %Integer
130
+ {
131
+ Set data = {}.%FromJSON(edgesJson)
132
+ Set n = 0
133
+ TSTART
134
+ Set iter = data.%GetIterator()
135
+ While iter.%GetNext(.idx, .edge) {
136
+ Set s = edge.s
137
+ Set p = $Select(edge.p'="":edge.p, 1:predicate)
138
+ Set o = edge.o
139
+ If (s = "") || (o = "") { Continue }
140
+ If s = o { Continue }
141
+ &sql(INSERT INTO Graph_KG.rdf_edges (s, p, o_id) VALUES (:s, :p, :o))
142
+ If (SQLCODE '= 0) && (SQLCODE '= -119) { Continue }
143
+ Do ..WriteAdjacency(s, p, o, "1.0")
144
+ Set n = n + 1
145
+ }
146
+ TCOMMIT
147
+ Quit n
148
+ }
149
+
150
+ /// Bulk ingest edges from a JSON file path — streams large datasets without MAXSTRING limit.
151
+ ClassMethod BulkIngestEdgesFile(filePath As %String, predicate As %String = "KNOWS") As %Integer
152
+ {
153
+ Set stream = ##class(%Stream.FileCharacter).%New()
154
+ Do stream.LinkToFile(filePath)
155
+ Set json = ""
156
+ While 'stream.AtEnd {
157
+ Set json = json _ stream.Read(32000)
158
+ }
159
+ Quit ..BulkIngestEdgesSQL(json, predicate)
160
+ }
161
+
162
+ /// Bulk ingest nodes + labels + properties via batched SQL.
163
+ /// nodesJson: JSON array of {"id":id, "labels":["L1",...], "props":{"k":"v",...}} objects.
164
+ /// Returns count of nodes written.
165
+ ClassMethod BulkIngestNodesSQL(nodesJson As %String) As %Integer
166
+ {
167
+ Set data = {}.%FromJSON(nodesJson)
168
+ Set n = 0
169
+ TSTART
170
+ Set iter = data.%GetIterator()
171
+ While iter.%GetNext(.idx, .node) {
172
+ Set id = node.id
173
+ If id = "" { Continue }
174
+ &sql(INSERT INTO Graph_KG.nodes (node_id) VALUES (:id))
175
+ If (SQLCODE '= 0) && (SQLCODE '= -119) { Continue }
176
+ If $IsObject(node.labels) {
177
+ Set liter = node.labels.%GetIterator()
178
+ While liter.%GetNext(.li, .label) {
179
+ If label = "" { Continue }
180
+ &sql(INSERT INTO Graph_KG.rdf_labels (s, label) VALUES (:id, :label))
181
+ }
182
+ }
183
+ If $IsObject(node.props) {
184
+ Set piter = node.props.%GetIterator()
185
+ While piter.%GetNext(.key, .val) {
186
+ If key = "" { Continue }
187
+ Try {
188
+ Set valStr = $Select($IsObject(val):val.%ToJSON(), $IsValidNum(val):val, 1:""""_$Replace($ZConvert(val,"O","UTF8"),"""","""""")_"""")
189
+ &sql(INSERT INTO Graph_KG.rdf_props (s, "key", val) VALUES (:id, :key, :valStr))
190
+ } Catch ex { }
191
+ }
192
+ }
193
+ Set n = n + 1
194
+ }
195
+ }
196
+ If $IsObject(node.props) {
197
+ Set piter = node.props.%GetIterator()
198
+ While piter.%GetNext(.key, .val) {
199
+ If key = "" { Continue }
200
+ Set valStr = $Select($IsObject(val):val.%ToJSON(), 1:""""_$Replace(val,"""","""""")_"""")
201
+ &sql(INSERT INTO Graph_KG.rdf_props (s, "key", val) VALUES (:id, :key, :valStr))
202
+ }
203
+ }
204
+ Set n = n + 1
205
+ } TCOMMIT
206
+ Quit n
207
+ }
208
+
127
209
  }
@@ -0,0 +1,114 @@
1
+ Class Graph.KG.EmbedQueue Extends %RegisteredObject
2
+ {
3
+
4
+ /// Global layout: ^EmbedQueue(node_id) = $LB(embedding_config, status, queued_at)
5
+ /// status: "pending" | "done" | "error"
6
+
7
+ ClassMethod Enqueue(nodeId As %String, embeddingConfig As %String = "") As %Status
8
+ {
9
+ Set status = "pending"
10
+ Set queuedAt = $ZDateTime($ZDateTimeH($ZDateTime(,3),3),3)
11
+ Set ^EmbedQueue(nodeId) = $LB(embeddingConfig, status, queuedAt)
12
+ Quit $$$OK
13
+ }
14
+
15
+ ClassMethod BulkEnqueue(nodeIds As %DynamicArray, embeddingConfig As %String = "") As %Integer
16
+ {
17
+ Set count = 0
18
+ Set iter = nodeIds.%GetIterator()
19
+ While iter.%GetNext(.idx, .nodeId) {
20
+ Set sc = ..Enqueue(nodeId, embeddingConfig)
21
+ If $$$ISOK(sc) { Set count = count + 1 }
22
+ }
23
+ Quit count
24
+ }
25
+
26
+ ClassMethod ProcessBatch(batchSize As %Integer = 100, timeout As %Integer = 30) As %String
27
+ {
28
+ Set processed = 0
29
+ Set errors = 0
30
+ Set nodeId = ""
31
+
32
+ For {
33
+ Set nodeId = $Order(^EmbedQueue(nodeId))
34
+ Quit:nodeId=""
35
+ Quit:processed>=batchSize
36
+
37
+ Set entry = ^EmbedQueue(nodeId)
38
+ Set embConfig = $List(entry, 1)
39
+ Set status = $List(entry, 2)
40
+
41
+ Continue:status'="pending"
42
+
43
+ Try {
44
+ Set sql = "SELECT EMBEDDING(?, ?) FROM (SELECT 1)"
45
+ Set stmt = ##class(%SQL.Statement).%New()
46
+ Set sc = stmt.%Prepare(sql)
47
+ If $$$ISOK(sc) {
48
+ Set displayName = ##class(Graph.KG.Traversal).GetNodeDisplayText(nodeId)
49
+ If displayName = "" { Set displayName = nodeId }
50
+ Set rs = stmt.%Execute(displayName, embConfig)
51
+ If rs.%SQLCODE = 0 && rs.%Next() {
52
+ Set embVal = rs.%GetData(1)
53
+ If embVal '= "" {
54
+ Set insertSql = "INSERT OR REPLACE INTO Graph_KG.kg_NodeEmbeddings (id, emb) VALUES (?, TO_VECTOR(?, DOUBLE))"
55
+ Set stmt2 = ##class(%SQL.Statement).%New()
56
+ Do stmt2.%Prepare(insertSql)
57
+ Do stmt2.%Execute(nodeId, embVal)
58
+ }
59
+ }
60
+ }
61
+ Set $List(^EmbedQueue(nodeId), 2) = "done"
62
+ Set processed = processed + 1
63
+ } Catch ex {
64
+ Set $List(^EmbedQueue(nodeId), 2) = "error"
65
+ Set errors = errors + 1
66
+ }
67
+ }
68
+
69
+ Set result = {"processed": (processed), "errors": (errors)}
70
+ Quit result.%ToJSON()
71
+ }
72
+
73
+ ClassMethod PendingCount() As %Integer
74
+ {
75
+ Set count = 0
76
+ Set nodeId = ""
77
+ For {
78
+ Set nodeId = $Order(^EmbedQueue(nodeId))
79
+ Quit:nodeId=""
80
+ If $List(^EmbedQueue(nodeId), 2) = "pending" { Set count = count + 1 }
81
+ }
82
+ Quit count
83
+ }
84
+
85
+ ClassMethod ClearDone() As %Integer
86
+ {
87
+ Set cleared = 0
88
+ Set nodeId = ""
89
+ For {
90
+ Set nodeId = $Order(^EmbedQueue(nodeId))
91
+ Quit:nodeId=""
92
+ If $List(^EmbedQueue(nodeId), 2) = "done" {
93
+ Kill ^EmbedQueue(nodeId)
94
+ Set cleared = cleared + 1
95
+ }
96
+ }
97
+ Quit cleared
98
+ }
99
+
100
+ /// Start a background IRIS Task to process the queue
101
+ ClassMethod StartBackgroundTask(batchSize As %Integer = 100) As %String
102
+ {
103
+ Set task = ##class(%SYSTEM.Task).%New()
104
+ Set task.Name = "IVG EmbedQueue Worker"
105
+ Set task.NameSpace = $ZNamespace
106
+ Set task.TaskClass = "Graph.KG.EmbedQueueTask"
107
+ Set sc = task.%Save()
108
+ If $$$ISERR(sc) { Quit "error: "_$System.Status.GetErrorText(sc) }
109
+ Set taskId = task.%Id()
110
+ Do ##class(%SYSTEM.Task).RunNow(taskId)
111
+ Quit taskId
112
+ }
113
+
114
+ }
@@ -11,11 +11,13 @@ from .capabilities import IRISCapabilities
11
11
  from .store_protocol import GraphStore
12
12
  from .stores import IRISGraphStore
13
13
  from .cypher.aql import translate_aql, AQLParseError, AQLTranslationError
14
+ from .sdk import IVGClient, AsyncIVGClient, IVGRecord, IVGError, IVGClientError, IVGServerError
14
15
  from ._validate import (
15
16
  NodeIdInput, EdgeInput, CypherInput,
16
17
  IVFBuildInput, VectorSearchInput,
17
18
  BM25BuildInput, BM25SearchInput,
18
19
  KHop2Input, TemporalEdgeInput, VecSearchInput,
20
+ DegreeCentralityInput, BetweennessInput, ClosenessInput, EigenvectorInput,
19
21
  )
20
22
  from .vector_utils import VectorOptimizer
21
23
  from .text_search import TextSearchEngine
@@ -80,4 +82,10 @@ __all__ = [
80
82
  "translate_aql",
81
83
  "AQLParseError",
82
84
  "AQLTranslationError",
85
+ "IVGClient",
86
+ "AsyncIVGClient",
87
+ "IVGRecord",
88
+ "IVGError",
89
+ "IVGClientError",
90
+ "IVGServerError",
83
91
  ]