iris-vector-graph 1.94.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 (596) hide show
  1. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/PKG-INFO +138 -8
  2. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/README.md +131 -6
  3. iris_vector_graph-1.98.0/iris_src/src/Graph/KG/Centrality.cls +154 -0
  4. {iris_vector_graph-1.94.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.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/__init__.py +12 -0
  7. {iris_vector_graph-1.94.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.98.0/iris_vector_graph/cypher/aql/__init__.py +28 -0
  10. iris_vector_graph-1.98.0/iris_vector_graph/cypher/aql/ast.py +148 -0
  11. iris_vector_graph-1.98.0/iris_vector_graph/cypher/aql/lexer.py +190 -0
  12. iris_vector_graph-1.98.0/iris_vector_graph/cypher/aql/parser.py +387 -0
  13. iris_vector_graph-1.98.0/iris_vector_graph/cypher/aql/translator.py +270 -0
  14. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/translator.py +279 -2
  15. iris_vector_graph-1.98.0/iris_vector_graph/cypher_api.py +644 -0
  16. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/dbapi_utils.py +3 -3
  17. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/embedded.py +5 -0
  18. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/engine.py +632 -77
  19. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/schema.py +55 -0
  20. iris_vector_graph-1.98.0/iris_vector_graph/sdk.py +270 -0
  21. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/store_protocol.py +18 -1
  22. iris_vector_graph-1.98.0/iris_vector_graph/stores/iris_sql_store.py +1320 -0
  23. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/pyproject.toml +9 -2
  24. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/conftest.py +68 -49
  25. iris_vector_graph-1.98.0/tests/e2e/fixtures/__init__.py +13 -0
  26. iris_vector_graph-1.98.0/tests/e2e/fixtures/centrality_graphs.py +103 -0
  27. iris_vector_graph-1.98.0/tests/e2e/test_aql_e2e.py +56 -0
  28. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_biomedical_demo.py +22 -16
  29. iris_vector_graph-1.98.0/tests/e2e/test_centrality_e2e.py +465 -0
  30. iris_vector_graph-1.98.0/tests/e2e/test_embed_queue_e2e.py +66 -0
  31. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_fraud_demo.py +19 -14
  32. iris_vector_graph-1.98.0/tests/unit/test_aql_lexer.py +118 -0
  33. iris_vector_graph-1.98.0/tests/unit/test_aql_parser.py +86 -0
  34. iris_vector_graph-1.98.0/tests/unit/test_aql_translator.py +229 -0
  35. iris_vector_graph-1.98.0/tests/unit/test_centrality_translator.py +92 -0
  36. iris_vector_graph-1.98.0/tests/unit/test_centrality_unit.py +198 -0
  37. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_engine_deep.py +3 -1
  38. iris_vector_graph-1.98.0/tests/unit/test_retrieve_and_vector_distance.py +90 -0
  39. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_store_protocol.py +36 -0
  40. iris_vector_graph-1.94.0/iris_vector_graph/cypher_api.py +0 -340
  41. iris_vector_graph-1.94.0/iris_vector_graph/stores/iris_sql_store.py +0 -661
  42. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/.gitignore +0 -0
  43. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/LICENSE +0 -0
  44. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/demo_biomedical.py +0 -0
  45. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/demo_fraud_detection.py +0 -0
  46. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/demo_fraud_detection_sql.py +0 -0
  47. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/demo_utils.py +0 -0
  48. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/demo_working_system.py +0 -0
  49. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/__init__.py +0 -0
  50. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical/__init__.py +0 -0
  51. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical/loaders.py +0 -0
  52. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical/resolver.py +0 -0
  53. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical/types.py +0 -0
  54. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical_legacy/__init__.py +0 -0
  55. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
  56. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
  57. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
  58. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/fraud/__init__.py +0 -0
  59. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/fraud/loaders.py +0 -0
  60. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/fraud/resolver.py +0 -0
  61. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/domains/fraud/types.py +0 -0
  62. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/graphQL.http +0 -0
  63. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/hybrid_vector_graph_query.cypher +0 -0
  64. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/examples/rest.http +0 -0
  65. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
  66. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
  67. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
  68. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
  69. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
  70. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
  71. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Edge.cls +0 -0
  72. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
  73. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
  74. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Loader.cls +0 -0
  75. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/MCPService.cls +0 -0
  76. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
  77. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
  78. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Meta.cls +0 -0
  79. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
  80. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
  81. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/PageRank.cls +0 -0
  82. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/PyOps.cls +0 -0
  83. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Service.cls +0 -0
  84. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
  85. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
  86. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
  87. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
  88. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/Traversal.cls +0 -0
  89. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
  90. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/IVG/CypherEngine.cls +0 -0
  91. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/IVG/Percentile.cls +0 -0
  92. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/PageRankEmbedded.cls +0 -0
  93. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/User.Exec.cls +0 -0
  94. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
  95. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/bolt_server.py +0 -0
  96. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
  97. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
  98. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
  99. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
  100. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
  101. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
  102. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
  103. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
  104. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
  105. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
  106. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
  107. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
  108. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
  109. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
  110. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
  111. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
  112. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
  113. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
  114. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
  115. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
  116. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
  117. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
  118. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
  119. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
  120. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
  121. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
  122. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
  123. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
  124. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
  125. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
  126. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
  127. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
  128. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
  129. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
  130. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
  131. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
  132. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
  133. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
  134. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
  135. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
  136. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
  137. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
  138. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
  139. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
  140. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
  141. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
  142. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
  143. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
  144. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
  145. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
  146. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
  147. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
  148. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
  149. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
  150. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
  151. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
  152. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
  153. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
  154. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
  155. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
  156. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
  157. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
  158. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
  159. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
  160. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
  161. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
  162. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
  163. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
  164. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
  165. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
  166. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
  167. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
  168. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
  169. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
  170. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
  171. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
  172. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
  173. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
  174. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
  175. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
  176. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
  177. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
  178. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
  179. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
  180. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
  181. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
  182. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
  183. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
  184. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
  185. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
  186. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
  187. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
  188. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
  189. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  190. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
  191. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
  192. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
  193. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
  194. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
  195. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
  196. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
  197. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
  198. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
  199. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
  200. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
  201. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
  202. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
  203. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
  204. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
  205. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
  206. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
  207. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
  208. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
  209. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
  210. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
  211. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
  212. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
  213. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
  214. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
  215. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
  216. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
  217. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
  218. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
  219. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
  220. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
  221. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
  222. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
  223. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
  224. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
  225. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
  226. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
  227. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
  228. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
  229. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
  230. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
  231. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
  232. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
  233. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
  234. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
  235. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
  236. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
  237. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
  238. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
  239. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
  240. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
  241. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
  242. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
  243. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
  244. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
  245. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
  246. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
  247. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
  248. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
  249. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
  250. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
  251. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
  252. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
  253. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
  254. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
  255. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
  256. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
  257. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
  258. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
  259. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
  260. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
  261. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
  262. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
  263. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
  264. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
  265. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
  266. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
  267. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
  268. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
  269. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
  270. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
  271. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
  272. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
  273. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
  274. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
  275. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
  276. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
  277. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
  278. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
  279. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
  280. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
  281. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
  282. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
  283. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/index.html +0 -0
  284. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/manifest.json +0 -0
  285. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
  286. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
  287. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
  288. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
  289. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
  290. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
  291. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
  292. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
  293. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
  294. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
  295. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
  296. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
  297. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
  298. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
  299. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
  300. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
  301. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
  302. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
  303. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
  304. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
  305. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
  306. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
  307. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
  308. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
  309. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
  310. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
  311. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
  312. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
  313. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
  314. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
  315. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
  316. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
  317. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
  318. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
  319. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
  320. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
  321. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
  322. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
  323. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
  324. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
  325. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
  326. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
  327. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
  328. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
  329. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
  330. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
  331. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
  332. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
  333. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
  334. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
  335. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
  336. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
  337. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
  338. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
  339. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
  340. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
  341. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
  342. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
  343. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
  344. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
  345. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
  346. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
  347. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
  348. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
  349. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
  350. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
  351. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
  352. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
  353. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
  354. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
  355. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
  356. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
  357. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
  358. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
  359. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
  360. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
  361. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/index.html +0 -0
  362. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
  363. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
  364. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
  365. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/bulk_loader.py +0 -0
  366. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/capabilities.py +0 -0
  367. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/__init__.py +0 -0
  368. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
  369. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
  370. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/ast.py +0 -0
  371. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/lexer.py +0 -0
  372. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/cypher/parser.py +0 -0
  373. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/fhir_bridge.py +0 -0
  374. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/fusion.py +0 -0
  375. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/__init__.py +0 -0
  376. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/constants.py +0 -0
  377. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/engine.py +0 -0
  378. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/pooling.py +0 -0
  379. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/resolvers.py +0 -0
  380. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/gql/schema.py +0 -0
  381. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/index_protocol.py +0 -0
  382. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/models.py +0 -0
  383. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/operators.py +0 -0
  384. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/py.typed +0 -0
  385. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/result.py +0 -0
  386. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/security.py +0 -0
  387. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/status.py +0 -0
  388. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/stores/__init__.py +0 -0
  389. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/text_search.py +0 -0
  390. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/utils.py +0 -0
  391. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/iris_vector_graph/vector_utils.py +0 -0
  392. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/fhir_bridges.sql +0 -0
  393. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/fraud_sample_data.sql +0 -0
  394. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/globals_schema.sql +0 -0
  395. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/graph_path_globals.sql +0 -0
  396. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/graph_walk_tvf.sql +0 -0
  397. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/migrations/000_base_schema_iris.sql +0 -0
  398. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/migrations/001_add_nodepk_table.sql +0 -0
  399. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/migrations/001_rollback_nodepk.sql +0 -0
  400. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/migrations/002_add_fk_constraints.sql +0 -0
  401. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/operators.sql +0 -0
  402. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/operators_fixed.sql +0 -0
  403. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/procedures/kg_PageRank.sql +0 -0
  404. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/rdf_reifications.sql +0 -0
  405. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/sql/schema.sql +0 -0
  406. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/TESTING.md +0 -0
  407. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmark_parser.py +0 -0
  408. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/README.md +0 -0
  409. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/bench.py +0 -0
  410. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/bench_utils.py +0 -0
  411. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/benchmark_neo4j.py +0 -0
  412. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/bfs_benchmark.py +0 -0
  413. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/establish_baseline.py +0 -0
  414. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/graph_gen.py +0 -0
  415. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/ic2_profile.py +0 -0
  416. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/iris_baseline_run.py +0 -0
  417. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/iris_os_run.py +0 -0
  418. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/ldbc_full_loader.py +0 -0
  419. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/load_neo4j.py +0 -0
  420. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/benchmarks/synthetic_baseline.csv +0 -0
  421. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/contract/__init__.py +0 -0
  422. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/contract/test_cypher_api.py +0 -0
  423. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/contract/test_cypher_api_errors.py +0 -0
  424. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/contract/test_graphql_queries.py +0 -0
  425. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/contract/test_graphql_schema.py +0 -0
  426. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/contract/test_ppr_api.py +0 -0
  427. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/curl_suite.sh +0 -0
  428. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/__init__.py +0 -0
  429. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/conftest.py +0 -0
  430. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_approx_count_distinct.py +0 -0
  431. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_arno_bfs_global.py +0 -0
  432. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_arno_bfs_unified.py +0 -0
  433. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_biomedical_ui.py +0 -0
  434. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
  435. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_cypher_gaps_e2e.py +0 -0
  436. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
  437. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_cypher_vector_search.py +0 -0
  438. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
  439. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
  440. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_execution_contexts.py +0 -0
  441. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_execution_contexts_new.py +0 -0
  442. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
  443. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_fraud_ui.py +0 -0
  444. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_gql_autogen_startup.py +0 -0
  445. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
  446. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_gql_node_queries.py +0 -0
  447. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_gql_semantic_search.py +0 -0
  448. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_gql_traversal.py +0 -0
  449. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_graph_kernels_e2e.py +0 -0
  450. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_hla_kg_e2e.py +0 -0
  451. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_ic13_shortest_path.py +0 -0
  452. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_ic3_exact_count.py +0 -0
  453. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_index_protocol.py +0 -0
  454. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_introspection_api.py +0 -0
  455. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_ivf_insert.py +0 -0
  456. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_large_output_chunked.py +0 -0
  457. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_lazy_node_resolution.py +0 -0
  458. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_multi_query_engine_platform.py +0 -0
  459. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_named_paths_e2e.py +0 -0
  460. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_nkg_index_e2e.py +0 -0
  461. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_operator_wiring_e2e.py +0 -0
  462. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
  463. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_plaid.py +0 -0
  464. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_plaid_search_e2e.py +0 -0
  465. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
  466. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_ppr_guided_e2e.py +0 -0
  467. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_procedure_installation.py +0 -0
  468. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_reification_e2e.py +0 -0
  469. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_schema_procedures_e2e.py +0 -0
  470. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_store_injection_e2e.py +0 -0
  471. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_streaming_bfs.py +0 -0
  472. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_api.py +0 -0
  473. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_ingest.py +0 -0
  474. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_multi_context.py +0 -0
  475. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_search.py +0 -0
  476. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_setup.py +0 -0
  477. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_stress_traversal.py +0 -0
  478. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_subgraph_e2e.py +0 -0
  479. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_subquery_call_e2e.py +0 -0
  480. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_temporal_store_e2e.py +0 -0
  481. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_untested_methods.py +0 -0
  482. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/e2e/test_vecindex_e2e.py +0 -0
  483. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/__init__.py +0 -0
  484. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/conftest.py +0 -0
  485. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/gql/__init__.py +0 -0
  486. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/gql/test_graphql_mutations.py +0 -0
  487. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
  488. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/gql/test_graphql_queries.py +0 -0
  489. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/gql/test_graphql_vector_search.py +0 -0
  490. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_bidirectional_ppr.py +0 -0
  491. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_cls_layer.py +0 -0
  492. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_advanced.py +0 -0
  493. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_enhancements.py +0 -0
  494. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_multi_type.py +0 -0
  495. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_rd.py +0 -0
  496. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_rel_vars.py +0 -0
  497. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_single_type.py +0 -0
  498. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_untyped.py +0 -0
  499. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_cypher_vector_search.py +0 -0
  500. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_embeddings_api.py +0 -0
  501. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_fastapi_graphql.py +0 -0
  502. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_fhir_bridges_integration.py +0 -0
  503. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_named_paths_integration.py +0 -0
  504. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
  505. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_constraints.py +0 -0
  506. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_graph_analytics.py +0 -0
  507. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_migration.py +0 -0
  508. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_performance.py +0 -0
  509. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_nodepk_production_scale.py +0 -0
  510. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_objectscript_classes.py +0 -0
  511. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_pagerank_sql_optimization.py +0 -0
  512. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_reification_integration.py +0 -0
  513. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_schema_migration.py +0 -0
  514. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_stored_procedure_install.py +0 -0
  515. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/integration/test_subquery_call_integration.py +0 -0
  516. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/performance/conftest.py +0 -0
  517. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/performance/scale_benchmark.py +0 -0
  518. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/performance/test_ppr_stress.py +0 -0
  519. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/performance/test_stress_v1_5.py +0 -0
  520. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/python/run_all_tests.py +0 -0
  521. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/python/test_iris_rest_api.py +0 -0
  522. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/python/test_networkx_loader.py +0 -0
  523. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/python/test_performance_benchmarks.py +0 -0
  524. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/python/test_pyops_vector_conversion.py +0 -0
  525. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/python/test_python_operators.py +0 -0
  526. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/python/test_python_sdk.py +0 -0
  527. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/python/test_schema_validation.py +0 -0
  528. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/python/test_sql_queries.py +0 -0
  529. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/python/test_vector_functions.py +0 -0
  530. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/cypher/__init__.py +0 -0
  531. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/cypher/test_lexer.py +0 -0
  532. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/cypher/test_lexer_advanced.py +0 -0
  533. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/cypher/test_parser.py +0 -0
  534. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/cypher/test_parser_advanced.py +0 -0
  535. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_batch_mutations.py +0 -0
  536. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_bfs_arno.py +0 -0
  537. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_bm25_index.py +0 -0
  538. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_bolt_server.py +0 -0
  539. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cls_deployment.py +0 -0
  540. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_coverage_boost.py +0 -0
  541. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_benchmark.py +0 -0
  542. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_benchmark_scale.py +0 -0
  543. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_case_when.py +0 -0
  544. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_e2e_new_features.py +0 -0
  545. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_functions.py +0 -0
  546. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_parser.py +0 -0
  547. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_posos_bugs.py +0 -0
  548. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_procedures.py +0 -0
  549. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_translator.py +0 -0
  550. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_union_exists.py +0 -0
  551. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_var_length.py +0 -0
  552. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_cypher_vector_search.py +0 -0
  553. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_edge_embeddings.py +0 -0
  554. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_edgeprop_ndjson.py +0 -0
  555. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_embed_nodes_params.py +0 -0
  556. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_embedded.py +0 -0
  557. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_embedded_wgproto.py +0 -0
  558. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_engine_dimension_fix.py +0 -0
  559. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_engine_embeddings.py +0 -0
  560. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_engine_mocked.py +0 -0
  561. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_engine_status.py +0 -0
  562. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_fhir_bridge.py +0 -0
  563. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_fhir_bridges.py +0 -0
  564. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_get_nodes.py +0 -0
  565. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_graph_kernels.py +0 -0
  566. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_graphql_dataloader.py +0 -0
  567. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_index_handle.py +0 -0
  568. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_index_protocol.py +0 -0
  569. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_ingest_formats.py +0 -0
  570. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_introspection_api.py +0 -0
  571. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_ivf_index.py +0 -0
  572. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_ivgresult.py +0 -0
  573. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_module_coverage.py +0 -0
  574. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_named_graphs.py +0 -0
  575. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_named_paths.py +0 -0
  576. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_operators_coverage.py +0 -0
  577. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_operators_wiring.py +0 -0
  578. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_plaid_search.py +0 -0
  579. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_ppr_guided_subgraph.py +0 -0
  580. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_reification.py +0 -0
  581. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_schema_init.py +0 -0
  582. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_schema_procedures.py +0 -0
  583. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_shortest_path.py +0 -0
  584. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_snapshot.py +0 -0
  585. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_sql_splitter.py +0 -0
  586. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_sql_table_bridge.py +0 -0
  587. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_subgraph.py +0 -0
  588. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_subquery_call.py +0 -0
  589. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_supporting_modules.py +0 -0
  590. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_temporal_cypher.py +0 -0
  591. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_temporal_edges.py +0 -0
  592. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_translator_coverage.py +0 -0
  593. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_unified_edge_store.py +0 -0
  594. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_validation.py +0 -0
  595. {iris_vector_graph-1.94.0 → iris_vector_graph-1.98.0}/tests/unit/test_vector_search_routing.py +0 -0
  596. {iris_vector_graph-1.94.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.94.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'
@@ -188,17 +193,19 @@ The single 2025.1 failure: `SKIP` clause uses `ORDER BY + OFFSET` on JSON_TABLE-
188
193
 
189
194
  Two live demos ship in `src/iris_demo_server/`:
190
195
 
191
- | Demo | URL | What it shows |
192
- |------|-----|--------------|
193
- | **Fraud Detection** | `http://localhost:8200/fraud` | Real-time fraud scoring, bitemporal audit trails, ring pattern detection |
194
- | **Biomedical Research** | `http://localhost:8200/bio` | Protein similarity search, pathway traversal, D3 network visualization |
196
+ | Demo | URL | What it shows | Docs |
197
+ |------|-----|--------------|------|
198
+ | **Fraud Detection** | `http://localhost:8200/fraud` | Real-time fraud scoring, ring detection, money mule identification, bitemporal audit trails | [docs/demos/FRAUD_DEMO.md](docs/demos/FRAUD_DEMO.md) |
199
+ | **Biomedical Research** | `http://localhost:8200/bio` | Protein similarity search, pathway traversal, hybrid vector+graph queries, D3 network visualization | [docs/demos/BIOMEDICAL_DEMO.md](docs/demos/BIOMEDICAL_DEMO.md) |
200
+
201
+ The fraud demo is inspired by the [AWS Neptune fraud graph reference notebook](https://github.com/aws/graph-notebook/blob/main/src/graph_notebook/notebooks/01-Neptune-Database/03-Sample-Applications/01-Fraud-Graphs/01-Building-a-Fraud-Graph-Application.ipynb) — the same fraud ring and identity theft patterns (first-party and third-party fraud on credit card transaction data), running on IRIS with Cypher instead of Gremlin.
195
202
 
196
203
  ```bash
197
204
  # 1. Start IRIS
198
205
  docker compose up -d
199
206
 
200
207
  # 2. Install deps (once)
201
- pip install iris-vector-graph[full]
208
+ pip install "iris-vector-graph[full]"
202
209
 
203
210
  # 3. Start demo server
204
211
  python -m uvicorn iris_demo_server.app:app --port 8200 --host 127.0.0.1 \
@@ -208,7 +215,7 @@ python -m uvicorn iris_demo_server.app:app --port 8200 --host 127.0.0.1 \
208
215
  open http://localhost:8200
209
216
  ```
210
217
 
211
- The demos use the generic IVG graph engine — no separate backend required. All data is created by the demo on first run.
218
+ The demos use the generic IVG graph engine — no separate backend required.
212
219
 
213
220
  ---
214
221
 
@@ -803,6 +810,26 @@ conditions = tool("patient-123") # → {"conditions": [...], "error": None}
803
810
 
804
811
  ## Changelog
805
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
+
806
833
  ### v1.88.0 (2026-05-07)
807
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")`
808
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)
@@ -1252,6 +1279,109 @@ Four openCypher gaps closed, all from structured gap analysis against the openCy
1252
1279
 
1253
1280
  ## Changelog
1254
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
+
1357
+ ### v1.95.0 (2026-05-15)
1358
+
1359
+ **Admin API** — IVG now has a production-grade admin surface matching Neo4j/ArangoDB:
1360
+
1361
+ **Fixed: `SHOW INDEXES` / `SHOW CONSTRAINTS`** — were empty stubs; now return actual BM25, IVF, HNSW, PLAID, ^KG, ^NKG indexes and uniqueness constraints. Neo4j Browser, LangChain, and all Neo4j-compatible tools now see the real index state on connect.
1362
+
1363
+ **New REST endpoints on the Cypher API:**
1364
+ - `GET /schema` — labels, relationship types, property keys, counts
1365
+ - `GET /indexes` — full index inventory (all types)
1366
+ - `GET /server` — IVG version, IRIS version, namespace, schema status, BFS path
1367
+ - `GET /metrics` — Prometheus-format metrics (node/edge/embedding counts, status)
1368
+ - `GET /stats` — counts by label, predicate, embedding coverage
1369
+ - `POST /admin/schema/init` — initialize schema
1370
+ - `POST /admin/indexes/rebuild` — rebuild ^KG and ^NKG adjacency indexes
1371
+ - `POST /admin/embed` — trigger node embedding
1372
+ - `POST /admin/load` — stream NDJSON graph data
1373
+ - `GET /admin/export` — export graph as NDJSON
1374
+ - `POST /admin/snapshot` — save snapshot to disk
1375
+ - `GET /admin/queries` — list active IRIS queries
1376
+ - `DELETE /admin/queries/{id}` — kill a running query
1377
+ - `POST /admin/explain` — translate Cypher to SQL (debugging + optimization)
1378
+
1379
+ **GraphStore protocol additions** (6 new methods):
1380
+ `get_node_count()`, `get_edge_count()`, `get_labels()`, `get_relationship_types()`, `list_indexes()`, `server_info()`
1381
+
1382
+ **Engine additions:**
1383
+ `engine.list_active_queries()`, `engine.kill_query(id)`
1384
+
1255
1385
  ### v1.94.0 (2026-05-15)
1256
1386
 
1257
1387
  **GraphStore Protocol** — `IRISGraphEngine` now has a pluggable storage backend (spec 156).
@@ -116,17 +116,19 @@ The single 2025.1 failure: `SKIP` clause uses `ORDER BY + OFFSET` on JSON_TABLE-
116
116
 
117
117
  Two live demos ship in `src/iris_demo_server/`:
118
118
 
119
- | Demo | URL | What it shows |
120
- |------|-----|--------------|
121
- | **Fraud Detection** | `http://localhost:8200/fraud` | Real-time fraud scoring, bitemporal audit trails, ring pattern detection |
122
- | **Biomedical Research** | `http://localhost:8200/bio` | Protein similarity search, pathway traversal, D3 network visualization |
119
+ | Demo | URL | What it shows | Docs |
120
+ |------|-----|--------------|------|
121
+ | **Fraud Detection** | `http://localhost:8200/fraud` | Real-time fraud scoring, ring detection, money mule identification, bitemporal audit trails | [docs/demos/FRAUD_DEMO.md](docs/demos/FRAUD_DEMO.md) |
122
+ | **Biomedical Research** | `http://localhost:8200/bio` | Protein similarity search, pathway traversal, hybrid vector+graph queries, D3 network visualization | [docs/demos/BIOMEDICAL_DEMO.md](docs/demos/BIOMEDICAL_DEMO.md) |
123
+
124
+ The fraud demo is inspired by the [AWS Neptune fraud graph reference notebook](https://github.com/aws/graph-notebook/blob/main/src/graph_notebook/notebooks/01-Neptune-Database/03-Sample-Applications/01-Fraud-Graphs/01-Building-a-Fraud-Graph-Application.ipynb) — the same fraud ring and identity theft patterns (first-party and third-party fraud on credit card transaction data), running on IRIS with Cypher instead of Gremlin.
123
125
 
124
126
  ```bash
125
127
  # 1. Start IRIS
126
128
  docker compose up -d
127
129
 
128
130
  # 2. Install deps (once)
129
- pip install iris-vector-graph[full]
131
+ pip install "iris-vector-graph[full]"
130
132
 
131
133
  # 3. Start demo server
132
134
  python -m uvicorn iris_demo_server.app:app --port 8200 --host 127.0.0.1 \
@@ -136,7 +138,7 @@ python -m uvicorn iris_demo_server.app:app --port 8200 --host 127.0.0.1 \
136
138
  open http://localhost:8200
137
139
  ```
138
140
 
139
- The demos use the generic IVG graph engine — no separate backend required. All data is created by the demo on first run.
141
+ The demos use the generic IVG graph engine — no separate backend required.
140
142
 
141
143
  ---
142
144
 
@@ -731,6 +733,26 @@ conditions = tool("patient-123") # → {"conditions": [...], "error": None}
731
733
 
732
734
  ## Changelog
733
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
+
734
756
  ### v1.88.0 (2026-05-07)
735
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")`
736
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)
@@ -1180,6 +1202,109 @@ Four openCypher gaps closed, all from structured gap analysis against the openCy
1180
1202
 
1181
1203
  ## Changelog
1182
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
+
1280
+ ### v1.95.0 (2026-05-15)
1281
+
1282
+ **Admin API** — IVG now has a production-grade admin surface matching Neo4j/ArangoDB:
1283
+
1284
+ **Fixed: `SHOW INDEXES` / `SHOW CONSTRAINTS`** — were empty stubs; now return actual BM25, IVF, HNSW, PLAID, ^KG, ^NKG indexes and uniqueness constraints. Neo4j Browser, LangChain, and all Neo4j-compatible tools now see the real index state on connect.
1285
+
1286
+ **New REST endpoints on the Cypher API:**
1287
+ - `GET /schema` — labels, relationship types, property keys, counts
1288
+ - `GET /indexes` — full index inventory (all types)
1289
+ - `GET /server` — IVG version, IRIS version, namespace, schema status, BFS path
1290
+ - `GET /metrics` — Prometheus-format metrics (node/edge/embedding counts, status)
1291
+ - `GET /stats` — counts by label, predicate, embedding coverage
1292
+ - `POST /admin/schema/init` — initialize schema
1293
+ - `POST /admin/indexes/rebuild` — rebuild ^KG and ^NKG adjacency indexes
1294
+ - `POST /admin/embed` — trigger node embedding
1295
+ - `POST /admin/load` — stream NDJSON graph data
1296
+ - `GET /admin/export` — export graph as NDJSON
1297
+ - `POST /admin/snapshot` — save snapshot to disk
1298
+ - `GET /admin/queries` — list active IRIS queries
1299
+ - `DELETE /admin/queries/{id}` — kill a running query
1300
+ - `POST /admin/explain` — translate Cypher to SQL (debugging + optimization)
1301
+
1302
+ **GraphStore protocol additions** (6 new methods):
1303
+ `get_node_count()`, `get_edge_count()`, `get_labels()`, `get_relationship_types()`, `list_indexes()`, `server_info()`
1304
+
1305
+ **Engine additions:**
1306
+ `engine.list_active_queries()`, `engine.kill_query(id)`
1307
+
1183
1308
  ### v1.94.0 (2026-05-15)
1184
1309
 
1185
1310
  **GraphStore Protocol** — `IRISGraphEngine` now has a pluggable storage backend (spec 156).
@@ -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
  }