iris-vector-graph 1.93.0__tar.gz → 1.95.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 (583) hide show
  1. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/PKG-INFO +53 -7
  2. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/README.md +52 -6
  3. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/__init__.py +8 -0
  4. iris_vector_graph-1.95.0/iris_vector_graph/cypher/aql/__init__.py +28 -0
  5. iris_vector_graph-1.95.0/iris_vector_graph/cypher/aql/ast.py +148 -0
  6. iris_vector_graph-1.95.0/iris_vector_graph/cypher/aql/lexer.py +190 -0
  7. iris_vector_graph-1.95.0/iris_vector_graph/cypher/aql/parser.py +387 -0
  8. iris_vector_graph-1.95.0/iris_vector_graph/cypher/aql/translator.py +270 -0
  9. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/cypher_api.py +281 -0
  10. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/engine.py +360 -408
  11. iris_vector_graph-1.95.0/iris_vector_graph/store_protocol.py +50 -0
  12. iris_vector_graph-1.95.0/iris_vector_graph/stores/__init__.py +4 -0
  13. iris_vector_graph-1.95.0/iris_vector_graph/stores/iris_sql_store.py +814 -0
  14. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/pyproject.toml +4 -3
  15. iris_vector_graph-1.95.0/tests/e2e/test_aql_e2e.py +56 -0
  16. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_biomedical_demo.py +22 -16
  17. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_fraud_demo.py +19 -14
  18. iris_vector_graph-1.95.0/tests/e2e/test_store_injection_e2e.py +57 -0
  19. iris_vector_graph-1.95.0/tests/e2e/test_temporal_store_e2e.py +45 -0
  20. iris_vector_graph-1.95.0/tests/unit/test_aql_lexer.py +118 -0
  21. iris_vector_graph-1.95.0/tests/unit/test_aql_parser.py +86 -0
  22. iris_vector_graph-1.95.0/tests/unit/test_aql_translator.py +229 -0
  23. iris_vector_graph-1.95.0/tests/unit/test_coverage_boost.py +406 -0
  24. iris_vector_graph-1.95.0/tests/unit/test_engine_deep.py +1111 -0
  25. iris_vector_graph-1.95.0/tests/unit/test_engine_mocked.py +700 -0
  26. iris_vector_graph-1.95.0/tests/unit/test_module_coverage.py +767 -0
  27. iris_vector_graph-1.95.0/tests/unit/test_operators_coverage.py +125 -0
  28. iris_vector_graph-1.95.0/tests/unit/test_store_protocol.py +664 -0
  29. iris_vector_graph-1.95.0/tests/unit/test_supporting_modules.py +226 -0
  30. iris_vector_graph-1.95.0/tests/unit/test_translator_coverage.py +362 -0
  31. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/.gitignore +0 -0
  32. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/LICENSE +0 -0
  33. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/demo_biomedical.py +0 -0
  34. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/demo_fraud_detection.py +0 -0
  35. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/demo_fraud_detection_sql.py +0 -0
  36. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/demo_utils.py +0 -0
  37. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/demo_working_system.py +0 -0
  38. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/__init__.py +0 -0
  39. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/biomedical/__init__.py +0 -0
  40. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/biomedical/loaders.py +0 -0
  41. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/biomedical/resolver.py +0 -0
  42. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/biomedical/types.py +0 -0
  43. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/biomedical_legacy/__init__.py +0 -0
  44. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
  45. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
  46. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
  47. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/fraud/__init__.py +0 -0
  48. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/fraud/loaders.py +0 -0
  49. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/fraud/resolver.py +0 -0
  50. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/domains/fraud/types.py +0 -0
  51. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/graphQL.http +0 -0
  52. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/hybrid_vector_graph_query.cypher +0 -0
  53. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/examples/rest.http +0 -0
  54. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
  55. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
  56. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
  57. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
  58. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
  59. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
  60. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/Edge.cls +0 -0
  61. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/EdgeScan.cls +0 -0
  62. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
  63. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
  64. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/Loader.cls +0 -0
  65. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/MCPService.cls +0 -0
  66. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
  67. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
  68. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/Meta.cls +0 -0
  69. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
  70. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
  71. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/PageRank.cls +0 -0
  72. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/PyOps.cls +0 -0
  73. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/Service.cls +0 -0
  74. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
  75. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
  76. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
  77. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
  78. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/Traversal.cls +0 -0
  79. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
  80. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/IVG/CypherEngine.cls +0 -0
  81. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/IVG/Percentile.cls +0 -0
  82. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/PageRankEmbedded.cls +0 -0
  83. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/User.Exec.cls +0 -0
  84. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
  85. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/_validate.py +0 -0
  86. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/bolt_server.py +0 -0
  87. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
  88. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
  89. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
  90. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
  91. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
  92. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
  93. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
  94. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
  95. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
  96. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
  97. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
  98. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
  99. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
  100. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
  101. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
  102. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
  103. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
  104. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
  105. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
  106. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
  107. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
  108. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
  109. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
  110. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
  111. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
  112. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
  113. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
  114. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
  115. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
  116. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
  117. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
  118. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
  119. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
  120. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
  121. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
  122. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
  123. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
  124. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
  125. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
  126. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
  127. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
  128. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
  129. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
  130. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
  131. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
  132. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
  133. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
  134. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
  135. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
  136. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
  137. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
  138. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
  139. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
  140. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
  141. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
  142. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
  143. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
  144. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
  145. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
  146. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
  147. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
  148. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
  149. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
  150. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
  151. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
  152. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
  153. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
  154. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
  155. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
  156. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
  157. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
  158. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
  159. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
  160. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
  161. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
  162. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
  163. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
  164. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
  165. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
  166. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
  167. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
  168. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
  169. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
  170. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
  171. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
  172. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
  173. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
  174. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
  175. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
  176. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
  177. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
  178. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
  179. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
  180. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  181. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
  182. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
  183. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
  184. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
  185. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
  186. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
  187. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
  188. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
  189. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
  190. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
  191. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
  192. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
  193. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
  194. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
  195. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
  196. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
  197. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
  198. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
  199. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
  200. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
  201. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
  202. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
  203. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
  204. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
  205. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
  206. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
  207. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
  208. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
  209. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
  210. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
  211. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
  212. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
  213. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
  214. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
  215. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
  216. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
  217. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
  218. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
  219. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
  220. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
  221. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
  222. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
  223. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
  224. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
  225. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
  226. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
  227. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
  228. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
  229. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
  230. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
  231. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
  232. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
  233. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
  234. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
  235. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
  236. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
  237. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
  238. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
  239. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
  240. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
  241. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
  242. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
  243. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
  244. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
  245. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
  246. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
  247. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
  248. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
  249. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
  250. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
  251. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
  252. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
  253. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
  254. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
  255. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
  256. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
  257. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
  258. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
  259. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
  260. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
  261. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
  262. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
  263. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
  264. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
  265. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
  266. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
  267. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
  268. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
  269. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
  270. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
  271. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
  272. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
  273. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
  274. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/index.html +0 -0
  275. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/manifest.json +0 -0
  276. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
  277. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
  278. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
  279. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
  280. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
  281. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
  282. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
  283. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
  284. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
  285. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
  286. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
  287. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
  288. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
  289. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
  290. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
  291. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
  292. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
  293. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
  294. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
  295. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
  296. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
  297. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
  298. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
  299. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
  300. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
  301. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
  302. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
  303. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
  304. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
  305. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
  306. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
  307. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
  308. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
  309. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
  310. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
  311. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
  312. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
  313. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
  314. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
  315. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
  316. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
  317. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
  318. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
  319. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
  320. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
  321. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
  322. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
  323. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
  324. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
  325. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
  326. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
  327. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
  328. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
  329. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
  330. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
  331. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
  332. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
  333. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
  334. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
  335. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
  336. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
  337. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
  338. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
  339. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
  340. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
  341. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
  342. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
  343. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
  344. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
  345. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
  346. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
  347. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
  348. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
  349. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
  350. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
  351. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
  352. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/index.html +0 -0
  353. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
  354. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
  355. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
  356. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/bulk_loader.py +0 -0
  357. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/capabilities.py +0 -0
  358. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/cypher/__init__.py +0 -0
  359. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
  360. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
  361. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/cypher/ast.py +0 -0
  362. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/cypher/lexer.py +0 -0
  363. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/cypher/parser.py +0 -0
  364. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/cypher/translator.py +0 -0
  365. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/dbapi_utils.py +0 -0
  366. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/embedded.py +0 -0
  367. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/fhir_bridge.py +0 -0
  368. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/fusion.py +0 -0
  369. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/gql/__init__.py +0 -0
  370. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/gql/constants.py +0 -0
  371. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/gql/engine.py +0 -0
  372. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/gql/pooling.py +0 -0
  373. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/gql/resolvers.py +0 -0
  374. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/gql/schema.py +0 -0
  375. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/index_protocol.py +0 -0
  376. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/models.py +0 -0
  377. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/operators.py +0 -0
  378. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/py.typed +0 -0
  379. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/result.py +0 -0
  380. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/schema.py +0 -0
  381. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/security.py +0 -0
  382. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/status.py +0 -0
  383. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/text_search.py +0 -0
  384. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/utils.py +0 -0
  385. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/iris_vector_graph/vector_utils.py +0 -0
  386. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/fhir_bridges.sql +0 -0
  387. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/fraud_sample_data.sql +0 -0
  388. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/globals_schema.sql +0 -0
  389. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/graph_path_globals.sql +0 -0
  390. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/graph_walk_tvf.sql +0 -0
  391. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/migrations/000_base_schema_iris.sql +0 -0
  392. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/migrations/001_add_nodepk_table.sql +0 -0
  393. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/migrations/001_rollback_nodepk.sql +0 -0
  394. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/migrations/002_add_fk_constraints.sql +0 -0
  395. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/operators.sql +0 -0
  396. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/operators_fixed.sql +0 -0
  397. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/procedures/kg_PageRank.sql +0 -0
  398. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/rdf_reifications.sql +0 -0
  399. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/sql/schema.sql +0 -0
  400. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/TESTING.md +0 -0
  401. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmark_parser.py +0 -0
  402. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/README.md +0 -0
  403. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/bench.py +0 -0
  404. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/bench_utils.py +0 -0
  405. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/benchmark_neo4j.py +0 -0
  406. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/bfs_benchmark.py +0 -0
  407. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/establish_baseline.py +0 -0
  408. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/graph_gen.py +0 -0
  409. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/ic2_profile.py +0 -0
  410. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/iris_baseline_run.py +0 -0
  411. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/iris_os_run.py +0 -0
  412. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/ldbc_full_loader.py +0 -0
  413. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/load_neo4j.py +0 -0
  414. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/benchmarks/synthetic_baseline.csv +0 -0
  415. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/conftest.py +0 -0
  416. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/contract/__init__.py +0 -0
  417. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/contract/test_cypher_api.py +0 -0
  418. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/contract/test_cypher_api_errors.py +0 -0
  419. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/contract/test_graphql_queries.py +0 -0
  420. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/contract/test_graphql_schema.py +0 -0
  421. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/contract/test_ppr_api.py +0 -0
  422. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/curl_suite.sh +0 -0
  423. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/__init__.py +0 -0
  424. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/conftest.py +0 -0
  425. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_approx_count_distinct.py +0 -0
  426. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_arno_bfs_global.py +0 -0
  427. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_arno_bfs_unified.py +0 -0
  428. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_biomedical_ui.py +0 -0
  429. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
  430. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_cypher_gaps_e2e.py +0 -0
  431. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
  432. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_cypher_vector_search.py +0 -0
  433. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
  434. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
  435. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_execution_contexts.py +0 -0
  436. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_execution_contexts_new.py +0 -0
  437. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
  438. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_fraud_ui.py +0 -0
  439. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_gql_autogen_startup.py +0 -0
  440. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
  441. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_gql_node_queries.py +0 -0
  442. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_gql_semantic_search.py +0 -0
  443. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_gql_traversal.py +0 -0
  444. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_graph_kernels_e2e.py +0 -0
  445. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_hla_kg_e2e.py +0 -0
  446. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_ic13_shortest_path.py +0 -0
  447. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_ic3_exact_count.py +0 -0
  448. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_index_protocol.py +0 -0
  449. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_introspection_api.py +0 -0
  450. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_ivf_insert.py +0 -0
  451. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_large_output_chunked.py +0 -0
  452. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_lazy_node_resolution.py +0 -0
  453. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_multi_query_engine_platform.py +0 -0
  454. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_named_paths_e2e.py +0 -0
  455. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_nkg_index_e2e.py +0 -0
  456. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_operator_wiring_e2e.py +0 -0
  457. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
  458. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_plaid.py +0 -0
  459. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_plaid_search_e2e.py +0 -0
  460. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
  461. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_ppr_guided_e2e.py +0 -0
  462. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_procedure_installation.py +0 -0
  463. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_reification_e2e.py +0 -0
  464. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_schema_procedures_e2e.py +0 -0
  465. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_streaming_bfs.py +0 -0
  466. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_stress_api.py +0 -0
  467. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_stress_ingest.py +0 -0
  468. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_stress_multi_context.py +0 -0
  469. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_stress_search.py +0 -0
  470. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_stress_setup.py +0 -0
  471. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_stress_traversal.py +0 -0
  472. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_subgraph_e2e.py +0 -0
  473. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_subquery_call_e2e.py +0 -0
  474. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_untested_methods.py +0 -0
  475. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/e2e/test_vecindex_e2e.py +0 -0
  476. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/__init__.py +0 -0
  477. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/conftest.py +0 -0
  478. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/gql/__init__.py +0 -0
  479. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/gql/test_graphql_mutations.py +0 -0
  480. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
  481. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/gql/test_graphql_queries.py +0 -0
  482. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/gql/test_graphql_vector_search.py +0 -0
  483. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_bidirectional_ppr.py +0 -0
  484. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_cls_layer.py +0 -0
  485. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_cypher_advanced.py +0 -0
  486. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_cypher_enhancements.py +0 -0
  487. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_cypher_multi_type.py +0 -0
  488. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_cypher_rd.py +0 -0
  489. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_cypher_rel_vars.py +0 -0
  490. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_cypher_single_type.py +0 -0
  491. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_cypher_untyped.py +0 -0
  492. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_cypher_vector_search.py +0 -0
  493. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_embeddings_api.py +0 -0
  494. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_fastapi_graphql.py +0 -0
  495. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_fhir_bridges_integration.py +0 -0
  496. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_named_paths_integration.py +0 -0
  497. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
  498. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_nodepk_constraints.py +0 -0
  499. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_nodepk_graph_analytics.py +0 -0
  500. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_nodepk_migration.py +0 -0
  501. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_nodepk_performance.py +0 -0
  502. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_nodepk_production_scale.py +0 -0
  503. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_objectscript_classes.py +0 -0
  504. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_pagerank_sql_optimization.py +0 -0
  505. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_reification_integration.py +0 -0
  506. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_schema_migration.py +0 -0
  507. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_stored_procedure_install.py +0 -0
  508. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/integration/test_subquery_call_integration.py +0 -0
  509. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/performance/conftest.py +0 -0
  510. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/performance/scale_benchmark.py +0 -0
  511. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/performance/test_ppr_stress.py +0 -0
  512. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/performance/test_stress_v1_5.py +0 -0
  513. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/python/run_all_tests.py +0 -0
  514. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/python/test_iris_rest_api.py +0 -0
  515. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/python/test_networkx_loader.py +0 -0
  516. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/python/test_performance_benchmarks.py +0 -0
  517. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/python/test_pyops_vector_conversion.py +0 -0
  518. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/python/test_python_operators.py +0 -0
  519. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/python/test_python_sdk.py +0 -0
  520. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/python/test_schema_validation.py +0 -0
  521. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/python/test_sql_queries.py +0 -0
  522. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/python/test_vector_functions.py +0 -0
  523. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/cypher/__init__.py +0 -0
  524. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/cypher/test_lexer.py +0 -0
  525. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/cypher/test_lexer_advanced.py +0 -0
  526. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/cypher/test_parser.py +0 -0
  527. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/cypher/test_parser_advanced.py +0 -0
  528. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_batch_mutations.py +0 -0
  529. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_bfs_arno.py +0 -0
  530. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_bm25_index.py +0 -0
  531. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_bolt_server.py +0 -0
  532. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cls_deployment.py +0 -0
  533. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_benchmark.py +0 -0
  534. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_benchmark_scale.py +0 -0
  535. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_case_when.py +0 -0
  536. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_e2e_new_features.py +0 -0
  537. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_functions.py +0 -0
  538. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_parser.py +0 -0
  539. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_posos_bugs.py +0 -0
  540. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_procedures.py +0 -0
  541. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_translator.py +0 -0
  542. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_union_exists.py +0 -0
  543. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_var_length.py +0 -0
  544. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_cypher_vector_search.py +0 -0
  545. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_edge_embeddings.py +0 -0
  546. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_edgeprop_ndjson.py +0 -0
  547. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_embed_nodes_params.py +0 -0
  548. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_embedded.py +0 -0
  549. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_embedded_wgproto.py +0 -0
  550. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_engine_dimension_fix.py +0 -0
  551. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_engine_embeddings.py +0 -0
  552. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_engine_status.py +0 -0
  553. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_fhir_bridge.py +0 -0
  554. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_fhir_bridges.py +0 -0
  555. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_get_nodes.py +0 -0
  556. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_graph_kernels.py +0 -0
  557. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_graphql_dataloader.py +0 -0
  558. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_index_handle.py +0 -0
  559. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_index_protocol.py +0 -0
  560. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_ingest_formats.py +0 -0
  561. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_introspection_api.py +0 -0
  562. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_ivf_index.py +0 -0
  563. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_ivgresult.py +0 -0
  564. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_named_graphs.py +0 -0
  565. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_named_paths.py +0 -0
  566. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_operators_wiring.py +0 -0
  567. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_plaid_search.py +0 -0
  568. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_ppr_guided_subgraph.py +0 -0
  569. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_reification.py +0 -0
  570. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_schema_init.py +0 -0
  571. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_schema_procedures.py +0 -0
  572. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_shortest_path.py +0 -0
  573. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_snapshot.py +0 -0
  574. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_sql_splitter.py +0 -0
  575. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_sql_table_bridge.py +0 -0
  576. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_subgraph.py +0 -0
  577. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_subquery_call.py +0 -0
  578. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_temporal_cypher.py +0 -0
  579. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_temporal_edges.py +0 -0
  580. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_unified_edge_store.py +0 -0
  581. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_validation.py +0 -0
  582. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.0}/tests/unit/test_vector_search_routing.py +0 -0
  583. {iris_vector_graph-1.93.0 → iris_vector_graph-1.95.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.93.0
3
+ Version: 1.95.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
@@ -188,17 +188,19 @@ The single 2025.1 failure: `SKIP` clause uses `ORDER BY + OFFSET` on JSON_TABLE-
188
188
 
189
189
  Two live demos ship in `src/iris_demo_server/`:
190
190
 
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 |
191
+ | Demo | URL | What it shows | Docs |
192
+ |------|-----|--------------|------|
193
+ | **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) |
194
+ | **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) |
195
+
196
+ 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
197
 
196
198
  ```bash
197
199
  # 1. Start IRIS
198
200
  docker compose up -d
199
201
 
200
202
  # 2. Install deps (once)
201
- pip install iris-vector-graph[full]
203
+ pip install "iris-vector-graph[full]"
202
204
 
203
205
  # 3. Start demo server
204
206
  python -m uvicorn iris_demo_server.app:app --port 8200 --host 127.0.0.1 \
@@ -208,7 +210,7 @@ python -m uvicorn iris_demo_server.app:app --port 8200 --host 127.0.0.1 \
208
210
  open http://localhost:8200
209
211
  ```
210
212
 
211
- The demos use the generic IVG graph engine — no separate backend required. All data is created by the demo on first run.
213
+ The demos use the generic IVG graph engine — no separate backend required.
212
214
 
213
215
  ---
214
216
 
@@ -1252,6 +1254,50 @@ Four openCypher gaps closed, all from structured gap analysis against the openCy
1252
1254
 
1253
1255
  ## Changelog
1254
1256
 
1257
+ ### v1.95.0 (2026-05-15)
1258
+
1259
+ **Admin API** — IVG now has a production-grade admin surface matching Neo4j/ArangoDB:
1260
+
1261
+ **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.
1262
+
1263
+ **New REST endpoints on the Cypher API:**
1264
+ - `GET /schema` — labels, relationship types, property keys, counts
1265
+ - `GET /indexes` — full index inventory (all types)
1266
+ - `GET /server` — IVG version, IRIS version, namespace, schema status, BFS path
1267
+ - `GET /metrics` — Prometheus-format metrics (node/edge/embedding counts, status)
1268
+ - `GET /stats` — counts by label, predicate, embedding coverage
1269
+ - `POST /admin/schema/init` — initialize schema
1270
+ - `POST /admin/indexes/rebuild` — rebuild ^KG and ^NKG adjacency indexes
1271
+ - `POST /admin/embed` — trigger node embedding
1272
+ - `POST /admin/load` — stream NDJSON graph data
1273
+ - `GET /admin/export` — export graph as NDJSON
1274
+ - `POST /admin/snapshot` — save snapshot to disk
1275
+ - `GET /admin/queries` — list active IRIS queries
1276
+ - `DELETE /admin/queries/{id}` — kill a running query
1277
+ - `POST /admin/explain` — translate Cypher to SQL (debugging + optimization)
1278
+
1279
+ **GraphStore protocol additions** (6 new methods):
1280
+ `get_node_count()`, `get_edge_count()`, `get_labels()`, `get_relationship_types()`, `list_indexes()`, `server_info()`
1281
+
1282
+ **Engine additions:**
1283
+ `engine.list_active_queries()`, `engine.kill_query(id)`
1284
+
1285
+ ### v1.94.0 (2026-05-15)
1286
+
1287
+ **GraphStore Protocol** — `IRISGraphEngine` now has a pluggable storage backend (spec 156).
1288
+
1289
+ - `GraphStore` Protocol (25 methods): reads, mutations, SQL, traversal, analytics, temporal, lifecycle
1290
+ - `IRISGraphStore`: existing behavior extracted verbatim — zero behavior change for current users
1291
+ - `IRISGraphEngine(conn, store=ArnoFjallStore(...))` — inject any `GraphStore` implementation
1292
+ - `from iris_vector_graph import GraphStore, IRISGraphStore`
1293
+ - Engine routing: `execute_cypher` dispatches BFS/shortest-path/PPR/WCC/temporal through the store
1294
+ - `capabilities()` dict: stores advertise what they support; engine falls back to Python implementations for unsupported operations
1295
+ - 175 new unit tests + 25 e2e tests (all pass)
1296
+
1297
+ **Bug fixes:**
1298
+ - `ShortestPathJson` returned single dict instead of list — `path.get()` raised `AttributeError`; fixed by normalizing to list
1299
+ - `get_edges_in_window` `KeyError: 'w'` when temporal edge JSON omits weight field; fixed with `.get("w", 1.0)` fallback
1300
+
1255
1301
  ### v1.93.0 (2026-05-14)
1256
1302
 
1257
1303
  **All openCypher translator gaps closed:**
@@ -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
 
@@ -1180,6 +1182,50 @@ Four openCypher gaps closed, all from structured gap analysis against the openCy
1180
1182
 
1181
1183
  ## Changelog
1182
1184
 
1185
+ ### v1.95.0 (2026-05-15)
1186
+
1187
+ **Admin API** — IVG now has a production-grade admin surface matching Neo4j/ArangoDB:
1188
+
1189
+ **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.
1190
+
1191
+ **New REST endpoints on the Cypher API:**
1192
+ - `GET /schema` — labels, relationship types, property keys, counts
1193
+ - `GET /indexes` — full index inventory (all types)
1194
+ - `GET /server` — IVG version, IRIS version, namespace, schema status, BFS path
1195
+ - `GET /metrics` — Prometheus-format metrics (node/edge/embedding counts, status)
1196
+ - `GET /stats` — counts by label, predicate, embedding coverage
1197
+ - `POST /admin/schema/init` — initialize schema
1198
+ - `POST /admin/indexes/rebuild` — rebuild ^KG and ^NKG adjacency indexes
1199
+ - `POST /admin/embed` — trigger node embedding
1200
+ - `POST /admin/load` — stream NDJSON graph data
1201
+ - `GET /admin/export` — export graph as NDJSON
1202
+ - `POST /admin/snapshot` — save snapshot to disk
1203
+ - `GET /admin/queries` — list active IRIS queries
1204
+ - `DELETE /admin/queries/{id}` — kill a running query
1205
+ - `POST /admin/explain` — translate Cypher to SQL (debugging + optimization)
1206
+
1207
+ **GraphStore protocol additions** (6 new methods):
1208
+ `get_node_count()`, `get_edge_count()`, `get_labels()`, `get_relationship_types()`, `list_indexes()`, `server_info()`
1209
+
1210
+ **Engine additions:**
1211
+ `engine.list_active_queries()`, `engine.kill_query(id)`
1212
+
1213
+ ### v1.94.0 (2026-05-15)
1214
+
1215
+ **GraphStore Protocol** — `IRISGraphEngine` now has a pluggable storage backend (spec 156).
1216
+
1217
+ - `GraphStore` Protocol (25 methods): reads, mutations, SQL, traversal, analytics, temporal, lifecycle
1218
+ - `IRISGraphStore`: existing behavior extracted verbatim — zero behavior change for current users
1219
+ - `IRISGraphEngine(conn, store=ArnoFjallStore(...))` — inject any `GraphStore` implementation
1220
+ - `from iris_vector_graph import GraphStore, IRISGraphStore`
1221
+ - Engine routing: `execute_cypher` dispatches BFS/shortest-path/PPR/WCC/temporal through the store
1222
+ - `capabilities()` dict: stores advertise what they support; engine falls back to Python implementations for unsupported operations
1223
+ - 175 new unit tests + 25 e2e tests (all pass)
1224
+
1225
+ **Bug fixes:**
1226
+ - `ShortestPathJson` returned single dict instead of list — `path.get()` raised `AttributeError`; fixed by normalizing to list
1227
+ - `get_edges_in_window` `KeyError: 'w'` when temporal edge JSON omits weight field; fixed with `.get("w", 1.0)` fallback
1228
+
1183
1229
  ### v1.93.0 (2026-05-14)
1184
1230
 
1185
1231
  **All openCypher translator gaps closed:**
@@ -8,6 +8,9 @@ from .schema import GraphSchema
8
8
  from .index_protocol import IVGIndex, IndexHandle
9
9
  from .result import IVGResult
10
10
  from .capabilities import IRISCapabilities
11
+ from .store_protocol import GraphStore
12
+ from .stores import IRISGraphStore
13
+ from .cypher.aql import translate_aql, AQLParseError, AQLTranslationError
11
14
  from ._validate import (
12
15
  NodeIdInput, EdgeInput, CypherInput,
13
16
  IVFBuildInput, VectorSearchInput,
@@ -72,4 +75,9 @@ __all__ = [
72
75
  "unified_clinical_pipeline",
73
76
  "FHIRSearchTool",
74
77
  "GetPatientKGNeighborhoodTool",
78
+ "GraphStore",
79
+ "IRISGraphStore",
80
+ "translate_aql",
81
+ "AQLParseError",
82
+ "AQLTranslationError",
75
83
  ]
@@ -0,0 +1,28 @@
1
+ from typing import Optional
2
+
3
+
4
+ class AQLParseError(Exception):
5
+ def __init__(self, message: str, line: int = 0, column: int = 0):
6
+ self.message = message
7
+ self.line = line
8
+ self.column = column
9
+ super().__init__(f"AQL syntax error at line {line}, col {column}: {message}")
10
+
11
+
12
+ class AQLTranslationError(Exception):
13
+ def __init__(self, message: str, aql_construct: str = ""):
14
+ self.message = message
15
+ self.aql_construct = aql_construct
16
+ detail = f" ({aql_construct})" if aql_construct else ""
17
+ super().__init__(f"AQL translation error{detail}: {message}")
18
+
19
+
20
+ def translate_aql(aql: str, bind_vars: Optional[dict] = None) -> tuple:
21
+ from iris_vector_graph.cypher.aql.lexer import AQLLexer
22
+ from iris_vector_graph.cypher.aql.parser import AQLParser
23
+ from iris_vector_graph.cypher.aql.translator import AQLTranslator
24
+ tokens = AQLLexer(aql).tokenize()
25
+ aql_ast = AQLParser(tokens).parse()
26
+ translator = AQLTranslator()
27
+ cypher_str, resolved_params = translator.translate_to_cypher(aql_ast, bind_vars or {})
28
+ return cypher_str, resolved_params
@@ -0,0 +1,148 @@
1
+ import enum
2
+ from dataclasses import dataclass, field
3
+ from typing import Any, Optional, Union
4
+
5
+
6
+ class AQLDirection(enum.Enum):
7
+ OUTBOUND = "OUTBOUND"
8
+ INBOUND = "INBOUND"
9
+ ANY = "ANY"
10
+
11
+
12
+ @dataclass(slots=True)
13
+ class AQLVariable:
14
+ name: str
15
+
16
+
17
+ @dataclass(slots=True)
18
+ class AQLPropertyAccess:
19
+ object: Any
20
+ property: str
21
+
22
+
23
+ @dataclass(slots=True)
24
+ class AQLKeyAccess:
25
+ object: Any
26
+ key: str
27
+
28
+
29
+ @dataclass(slots=True)
30
+ class AQLBindVar:
31
+ name: str
32
+
33
+
34
+ @dataclass(slots=True)
35
+ class AQLLiteral:
36
+ value: Any
37
+
38
+
39
+ @dataclass(slots=True)
40
+ class AQLBinaryOp:
41
+ operator: str
42
+ left: Any
43
+ right: Any
44
+
45
+
46
+ @dataclass(slots=True)
47
+ class AQLUnaryOp:
48
+ operator: str
49
+ operand: Any
50
+
51
+
52
+ @dataclass(slots=True)
53
+ class AQLFunctionCall:
54
+ name: str
55
+ args: list = field(default_factory=list)
56
+
57
+
58
+ @dataclass(slots=True)
59
+ class AQLObjectLiteral:
60
+ fields: dict = field(default_factory=dict)
61
+
62
+
63
+ @dataclass(slots=True)
64
+ class AQLArrayLiteral:
65
+ items: list = field(default_factory=list)
66
+
67
+
68
+ AQLExpression = Union[
69
+ AQLVariable, AQLPropertyAccess, AQLKeyAccess, AQLBindVar, AQLLiteral,
70
+ AQLBinaryOp, AQLUnaryOp, AQLFunctionCall, AQLObjectLiteral, AQLArrayLiteral
71
+ ]
72
+
73
+
74
+ @dataclass(slots=True)
75
+ class ForClause:
76
+ vertex_var: str
77
+ edge_var: Optional[str]
78
+ path_var: Optional[str]
79
+ min_depth: int
80
+ max_depth: int
81
+ direction: AQLDirection
82
+ start_expr: Any
83
+ graph_or_collections: list
84
+ is_graph: bool
85
+
86
+
87
+ @dataclass(slots=True)
88
+ class ShortestPathClause:
89
+ vertex_var: str
90
+ edge_var: Optional[str]
91
+ direction: AQLDirection
92
+ start_expr: Any
93
+ end_expr: Any
94
+ graph_or_collections: list
95
+ is_graph: bool
96
+
97
+
98
+ @dataclass(slots=True)
99
+ class FilterClause:
100
+ condition: Any
101
+
102
+
103
+ @dataclass(slots=True)
104
+ class LetClause:
105
+ variable: str
106
+ value: Any
107
+
108
+
109
+ @dataclass(slots=True)
110
+ class CollectClause:
111
+ assignments: list
112
+ with_count_into: Optional[str]
113
+ aggregate: list
114
+ into_var: Optional[str]
115
+
116
+
117
+ @dataclass(slots=True)
118
+ class SortItem:
119
+ expression: Any
120
+ ascending: bool
121
+
122
+
123
+ @dataclass(slots=True)
124
+ class SortClause:
125
+ items: list
126
+
127
+
128
+ @dataclass(slots=True)
129
+ class LimitClause:
130
+ offset: Optional[int]
131
+ count: int
132
+
133
+
134
+ @dataclass(slots=True)
135
+ class ReturnClause:
136
+ distinct: bool
137
+ expression: Any
138
+
139
+
140
+ @dataclass(slots=True)
141
+ class AQLQuery:
142
+ for_clause: Any
143
+ filter_clauses: list = field(default_factory=list)
144
+ let_clauses: list = field(default_factory=list)
145
+ collect_clause: Optional[Any] = None
146
+ sort_clause: Optional[Any] = None
147
+ limit_clause: Optional[Any] = None
148
+ return_clause: Optional[Any] = None
@@ -0,0 +1,190 @@
1
+ import enum
2
+ from dataclasses import dataclass
3
+
4
+
5
+ class AQLTokenType(enum.Enum):
6
+ FOR = "FOR"; IN = "IN"; OUTBOUND = "OUTBOUND"; INBOUND = "INBOUND"; ANY = "ANY"
7
+ RETURN = "RETURN"; FILTER = "FILTER"; LET = "LET"; SORT = "SORT"; LIMIT = "LIMIT"
8
+ COLLECT = "COLLECT"; WITH = "WITH"; COUNT = "COUNT"; INTO = "INTO"; GRAPH = "GRAPH"
9
+ SHORTEST_PATH = "SHORTEST_PATH"; K_SHORTEST_PATHS = "K_SHORTEST_PATHS"; K_PATHS = "K_PATHS"
10
+ TO = "TO"; DISTINCT = "DISTINCT"; ASC = "ASC"; DESC = "DESC"
11
+ AND = "AND"; OR = "OR"; NOT = "NOT"; NULL = "NULL"; TRUE = "TRUE"; FALSE = "FALSE"
12
+ ALL = "ALL"; AGGREGATE = "AGGREGATE"; SEARCH = "SEARCH"
13
+ INSERT = "INSERT"; UPDATE = "UPDATE"; REMOVE = "REMOVE"; UPSERT = "UPSERT"
14
+ REPLACE = "REPLACE"; WINDOW = "WINDOW"
15
+ IDENT = "IDENT"; INT = "INT"; FLOAT = "FLOAT"; STRING = "STRING"
16
+ BIND_VAR = "BIND_VAR"; DYN_COLLECTION = "DYN_COLLECTION"
17
+ RANGE = ".."; EQ = "=="; NEQ = "!="; LTE = "<="; GTE = ">="; LT = "<"; GT = ">"
18
+ REGEX_MATCH = "=~"; REGEX_NOTMATCH = "!~"; ASSIGN = "="
19
+ PLUS = "+"; MINUS = "-"; MUL = "*"; DIV = "/"; MOD = "%"
20
+ DOT = "."; COMMA = ","; COLON = ":"; LPAREN = "("; RPAREN = ")"
21
+ LBRACKET = "["; RBRACKET = "]"; LBRACE = "{"; RBRACE = "}"; QUESTION = "?"
22
+ EOF = "EOF"
23
+
24
+
25
+ _KW = {t.value: t for t in AQLTokenType
26
+ if t.value.replace('_', '').isalpha() and t not in (
27
+ AQLTokenType.IDENT, AQLTokenType.EOF)}
28
+
29
+
30
+ @dataclass(slots=True)
31
+ class AQLToken:
32
+ kind: AQLTokenType
33
+ value: str
34
+ line: int
35
+ column: int
36
+
37
+
38
+ class AQLLexer:
39
+ def __init__(self, source: str):
40
+ self._src = self._strip_comments(source)
41
+ self._pos = 0
42
+ self._line = 1
43
+ self._col = 1
44
+
45
+ @staticmethod
46
+ def _strip_comments(src: str) -> str:
47
+ result = []
48
+ i = 0
49
+ while i < len(src):
50
+ if src[i:i+2] == "/*":
51
+ end = src.find("*/", i + 2)
52
+ if end == -1:
53
+ break
54
+ result.append('\n' * src[i:end+2].count('\n'))
55
+ i = end + 2
56
+ elif src[i:i+2] == "//":
57
+ end = src.find('\n', i)
58
+ result.append('\n')
59
+ i = (end + 1) if end != -1 else len(src)
60
+ else:
61
+ result.append(src[i])
62
+ i += 1
63
+ return ''.join(result)
64
+
65
+ def _peek(self, offset: int = 0) -> str:
66
+ p = self._pos + offset
67
+ return self._src[p] if p < len(self._src) else ''
68
+
69
+ def _advance(self) -> str:
70
+ ch = self._src[self._pos]; self._pos += 1
71
+ if ch == '\n': self._line += 1; self._col = 1
72
+ else: self._col += 1
73
+ return ch
74
+
75
+ def _tok(self, kind: AQLTokenType, value: str, line: int, col: int) -> AQLToken:
76
+ return AQLToken(kind=kind, value=value, line=line, column=col)
77
+
78
+ def tokenize(self) -> list:
79
+ tokens = []
80
+ while self._pos < len(self._src):
81
+ while self._pos < len(self._src) and self._src[self._pos] in ' \t\r\n':
82
+ self._advance()
83
+ if self._pos >= len(self._src):
84
+ break
85
+ line, col = self._line, self._col
86
+ ch = self._peek()
87
+
88
+ if ch == '@':
89
+ self._advance()
90
+ if self._peek() == '@':
91
+ self._advance()
92
+ tokens.append(self._tok(AQLTokenType.DYN_COLLECTION, '@@' + self._read_ident(), line, col))
93
+ else:
94
+ tokens.append(self._tok(AQLTokenType.BIND_VAR, '@' + self._read_ident(), line, col))
95
+
96
+ elif ch.isdigit():
97
+ tokens.append(self._read_number(line, col))
98
+
99
+ elif ch in ('"', "'", '`'):
100
+ tokens.append(self._read_string(line, col))
101
+
102
+ elif ch.isalpha() or ch == '_':
103
+ word = self._read_ident()
104
+ upper = word.upper()
105
+ kind = _KW.get(upper, AQLTokenType.IDENT)
106
+ tokens.append(self._tok(kind, word, line, col))
107
+
108
+ elif ch == '.' and self._peek(1) == '.':
109
+ self._advance(); self._advance()
110
+ tokens.append(self._tok(AQLTokenType.RANGE, '..', line, col))
111
+
112
+ elif ch == '.':
113
+ self._advance()
114
+ tokens.append(self._tok(AQLTokenType.DOT, '.', line, col))
115
+
116
+ elif ch == '=' and self._peek(1) == '~':
117
+ self._advance(); self._advance()
118
+ tokens.append(self._tok(AQLTokenType.REGEX_MATCH, '=~', line, col))
119
+
120
+ elif ch == '!' and self._peek(1) == '~':
121
+ self._advance(); self._advance()
122
+ tokens.append(self._tok(AQLTokenType.REGEX_NOTMATCH, '!~', line, col))
123
+
124
+ elif ch == '=' and self._peek(1) == '=':
125
+ self._advance(); self._advance()
126
+ tokens.append(self._tok(AQLTokenType.EQ, '==', line, col))
127
+
128
+ elif ch == '!' and self._peek(1) == '=':
129
+ self._advance(); self._advance()
130
+ tokens.append(self._tok(AQLTokenType.NEQ, '!=', line, col))
131
+
132
+ elif ch == '<' and self._peek(1) == '=':
133
+ self._advance(); self._advance()
134
+ tokens.append(self._tok(AQLTokenType.LTE, '<=', line, col))
135
+
136
+ elif ch == '>' and self._peek(1) == '=':
137
+ self._advance(); self._advance()
138
+ tokens.append(self._tok(AQLTokenType.GTE, '>=', line, col))
139
+
140
+ elif ch in '<>=!+-*/%,:()[]{}?':
141
+ m = {'<': AQLTokenType.LT, '>': AQLTokenType.GT, '=': AQLTokenType.ASSIGN,
142
+ '+': AQLTokenType.PLUS, '-': AQLTokenType.MINUS, '*': AQLTokenType.MUL,
143
+ '/': AQLTokenType.DIV, '%': AQLTokenType.MOD, ',': AQLTokenType.COMMA,
144
+ ':': AQLTokenType.COLON, '(': AQLTokenType.LPAREN, ')': AQLTokenType.RPAREN,
145
+ '[': AQLTokenType.LBRACKET, ']': AQLTokenType.RBRACKET,
146
+ '{': AQLTokenType.LBRACE, '}': AQLTokenType.RBRACE, '?': AQLTokenType.QUESTION}
147
+ if ch in m:
148
+ self._advance()
149
+ tokens.append(self._tok(m[ch], ch, line, col))
150
+ else:
151
+ self._advance()
152
+ else:
153
+ self._advance()
154
+
155
+ tokens.append(AQLToken(AQLTokenType.EOF, '', self._line, self._col))
156
+ return tokens
157
+
158
+ def _read_ident(self) -> str:
159
+ start = self._pos
160
+ while self._pos < len(self._src) and (self._src[self._pos].isalnum() or self._src[self._pos] == '_'):
161
+ self._advance()
162
+ return self._src[start:self._pos]
163
+
164
+ def _read_number(self, line: int, col: int) -> AQLToken:
165
+ start = self._pos
166
+ while self._pos < len(self._src) and self._src[self._pos].isdigit():
167
+ self._advance()
168
+ if (self._pos < len(self._src) and self._src[self._pos] == '.' and
169
+ (self._pos + 1 >= len(self._src) or self._src[self._pos + 1] != '.')):
170
+ self._advance()
171
+ while self._pos < len(self._src) and self._src[self._pos].isdigit():
172
+ self._advance()
173
+ return AQLToken(AQLTokenType.FLOAT, self._src[start:self._pos], line, col)
174
+ return AQLToken(AQLTokenType.INT, self._src[start:self._pos], line, col)
175
+
176
+ def _read_string(self, line: int, col: int) -> AQLToken:
177
+ quote = self._advance()
178
+ chars = []
179
+ while self._pos < len(self._src):
180
+ ch = self._src[self._pos]
181
+ if ch == '\\' and quote != '`':
182
+ self._advance()
183
+ esc = self._advance()
184
+ chars.append({'n': '\n', 't': '\t', 'r': '\r', '\\': '\\',
185
+ '"': '"', "'": "'"}.get(esc, esc))
186
+ elif ch == quote:
187
+ self._advance(); break
188
+ else:
189
+ chars.append(self._advance())
190
+ return AQLToken(AQLTokenType.STRING, ''.join(chars), line, col)