iris-vector-graph 1.98.0__tar.gz → 1.99.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.
- iris_vector_graph-1.98.0/README.md → iris_vector_graph-1.99.0/PKG-INFO +105 -0
- iris_vector_graph-1.98.0/PKG-INFO → iris_vector_graph-1.99.0/README.md +22 -77
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/__init__.py +1 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/_validate.py +21 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/translator.py +174 -1
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/engine.py +136 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/schema.py +49 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/store_protocol.py +10 -0
- iris_vector_graph-1.99.0/iris_vector_graph/stores/arno_bridge.py +784 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/stores/iris_sql_store.py +467 -187
- iris_vector_graph-1.99.0/iris_vector_graph/stores/lazy_kg.py +214 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/pyproject.toml +9 -1
- iris_vector_graph-1.99.0/tests/e2e/fixtures/community_graphs.py +172 -0
- iris_vector_graph-1.99.0/tests/e2e/test_communities_e2e.py +550 -0
- iris_vector_graph-1.99.0/tests/e2e/test_communities_perf.py +100 -0
- iris_vector_graph-1.99.0/tests/e2e/test_lazy_kg_e2e.py +81 -0
- iris_vector_graph-1.99.0/tests/perf/test_leiden_four_way.py +413 -0
- iris_vector_graph-1.99.0/tests/unit/cypher/__init__.py +0 -0
- iris_vector_graph-1.99.0/tests/unit/test_arno_bridge.py +132 -0
- iris_vector_graph-1.99.0/tests/unit/test_communities_translator.py +73 -0
- iris_vector_graph-1.99.0/tests/unit/test_communities_unit.py +171 -0
- iris_vector_graph-1.99.0/tests/unit/test_lazy_kg.py +196 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_store_protocol.py +15 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/.gitignore +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/LICENSE +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/demo_biomedical.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/demo_fraud_detection.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/demo_fraud_detection_sql.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/demo_utils.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/demo_working_system.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical/loaders.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical/resolver.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical/types.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical_legacy/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/fraud/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/fraud/loaders.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/fraud/resolver.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/fraud/types.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/graphQL.http +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/hybrid_vector_graph_query.cypher +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/rest.http +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Centrality.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Edge.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/EdgeScan.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/EmbedQueue.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Loader.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/MCPService.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Meta.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/PageRank.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/PyOps.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Service.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Traversal.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/IVG/CypherEngine.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/IVG/Percentile.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/PageRankEmbedded.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/User.Exec.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/bolt_server.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/index.html +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/manifest.json +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/index.html +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/bulk_loader.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/capabilities.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cli.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/aql/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/aql/ast.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/aql/lexer.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/aql/parser.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/aql/translator.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/ast.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/lexer.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/parser.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher_api.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/dbapi_utils.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/embedded.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/fhir_bridge.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/fusion.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/constants.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/engine.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/pooling.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/resolvers.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/schema.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/index_protocol.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/models.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/operators.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/py.typed +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/result.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/sdk.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/security.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/status.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/stores/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/text_search.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/utils.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/vector_utils.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/fhir_bridges.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/fraud_sample_data.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/globals_schema.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/graph_path_globals.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/graph_walk_tvf.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/migrations/000_base_schema_iris.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/migrations/001_add_nodepk_table.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/migrations/001_rollback_nodepk.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/migrations/002_add_fk_constraints.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/operators.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/operators_fixed.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/procedures/kg_PageRank.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/rdf_reifications.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/schema.sql +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/TESTING.md +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmark_parser.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/README.md +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/bench.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/bench_utils.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/benchmark_neo4j.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/bfs_benchmark.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/establish_baseline.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/graph_gen.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/ic2_profile.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/iris_baseline_run.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/iris_os_run.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/ldbc_full_loader.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/load_neo4j.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/synthetic_baseline.csv +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/conftest.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/test_cypher_api.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/test_cypher_api_errors.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/test_graphql_queries.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/test_graphql_schema.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/test_ppr_api.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/curl_suite.sh +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/conftest.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/fixtures/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/fixtures/centrality_graphs.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_approx_count_distinct.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_aql_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_arno_bfs_global.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_arno_bfs_unified.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_biomedical_demo.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_biomedical_ui.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_centrality_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_cypher_gaps_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_embed_queue_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_execution_contexts.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_execution_contexts_new.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_fraud_demo.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_fraud_ui.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_gql_autogen_startup.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_gql_node_queries.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_gql_semantic_search.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_gql_traversal.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_graph_kernels_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_hla_kg_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_ic13_shortest_path.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_ic3_exact_count.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_index_protocol.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_introspection_api.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_ivf_insert.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_large_output_chunked.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_lazy_node_resolution.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_multi_query_engine_platform.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_named_paths_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_nkg_index_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_operator_wiring_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_plaid.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_plaid_search_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_ppr_guided_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_procedure_installation.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_reification_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_schema_procedures_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_store_injection_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_streaming_bfs.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_api.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_ingest.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_multi_context.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_search.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_setup.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_traversal.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_subgraph_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_subquery_call_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_temporal_store_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_untested_methods.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_vecindex_e2e.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/conftest.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/gql/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/gql/test_graphql_mutations.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/gql/test_graphql_queries.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/gql/test_graphql_vector_search.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_bidirectional_ppr.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cls_layer.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_advanced.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_enhancements.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_multi_type.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_rd.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_rel_vars.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_single_type.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_untyped.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_embeddings_api.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_fastapi_graphql.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_fhir_bridges_integration.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_named_paths_integration.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_constraints.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_graph_analytics.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_migration.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_performance.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_production_scale.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_objectscript_classes.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_pagerank_sql_optimization.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_reification_integration.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_schema_migration.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_stored_procedure_install.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_subquery_call_integration.py +0 -0
- {iris_vector_graph-1.98.0/tests/unit/cypher → iris_vector_graph-1.99.0/tests/perf}/__init__.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/performance/conftest.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/performance/scale_benchmark.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/performance/test_ppr_stress.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/performance/test_stress_v1_5.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/run_all_tests.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_iris_rest_api.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_networkx_loader.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_performance_benchmarks.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_pyops_vector_conversion.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_python_operators.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_python_sdk.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_schema_validation.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_sql_queries.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_vector_functions.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/cypher/test_lexer.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/cypher/test_lexer_advanced.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/cypher/test_parser.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/cypher/test_parser_advanced.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_aql_lexer.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_aql_parser.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_aql_translator.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_batch_mutations.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_bfs_arno.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_bm25_index.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_bolt_server.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_centrality_translator.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_centrality_unit.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cls_deployment.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_coverage_boost.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_benchmark.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_benchmark_scale.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_case_when.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_e2e_new_features.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_functions.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_parser.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_posos_bugs.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_procedures.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_translator.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_union_exists.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_var_length.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_edge_embeddings.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_edgeprop_ndjson.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_embed_nodes_params.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_embedded.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_embedded_wgproto.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_engine_deep.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_engine_dimension_fix.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_engine_embeddings.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_engine_mocked.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_engine_status.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_fhir_bridge.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_fhir_bridges.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_get_nodes.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_graph_kernels.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_graphql_dataloader.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_index_handle.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_index_protocol.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_ingest_formats.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_introspection_api.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_ivf_index.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_ivgresult.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_module_coverage.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_named_graphs.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_named_paths.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_operators_coverage.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_operators_wiring.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_plaid_search.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_ppr_guided_subgraph.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_reification.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_retrieve_and_vector_distance.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_schema_init.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_schema_procedures.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_shortest_path.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_snapshot.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_sql_splitter.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_sql_table_bridge.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_subgraph.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_subquery_call.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_supporting_modules.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_temporal_cypher.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_temporal_edges.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_translator_coverage.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_unified_edge_store.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_validation.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_vector_search_routing.py +0 -0
- {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_weighted_shortest_path.py +0 -0
|
@@ -1,3 +1,86 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: iris-vector-graph
|
|
3
|
+
Version: 1.99.0
|
|
4
|
+
Summary: Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs
|
|
5
|
+
Project-URL: Homepage, https://github.com/intersystems-community/iris-vector-graph
|
|
6
|
+
Project-URL: Documentation, https://github.com/intersystems-community/iris-vector-graph/tree/main/docs
|
|
7
|
+
Project-URL: Repository, https://github.com/intersystems-community/iris-vector-graph
|
|
8
|
+
Project-URL: Issues, https://github.com/intersystems-community/iris-vector-graph/issues
|
|
9
|
+
Author-email: InterSystems Community Team <grants@intersystems.com>
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: bioinformatics,biomedical,graph,iris,knowledge-graph,protein-interactions,vector-search
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Topic :: Database
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
25
|
+
Requires-Python: >=3.10
|
|
26
|
+
Requires-Dist: intersystems-iris>=1.0.0
|
|
27
|
+
Provides-Extra: biodata
|
|
28
|
+
Requires-Dist: biopython>=1.81; extra == 'biodata'
|
|
29
|
+
Requires-Dist: bioservices>=1.11.0; extra == 'biodata'
|
|
30
|
+
Requires-Dist: mygene>=3.2.0; extra == 'biodata'
|
|
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'
|
|
36
|
+
Provides-Extra: communities
|
|
37
|
+
Requires-Dist: leidenalg>=0.10; extra == 'communities'
|
|
38
|
+
Requires-Dist: networkx>=3.0; extra == 'communities'
|
|
39
|
+
Requires-Dist: python-igraph>=0.11; extra == 'communities'
|
|
40
|
+
Provides-Extra: core
|
|
41
|
+
Requires-Dist: intersystems-iris>=1.0.0; extra == 'core'
|
|
42
|
+
Provides-Extra: demo
|
|
43
|
+
Requires-Dist: python-fasthtml>=0.12.0; extra == 'demo'
|
|
44
|
+
Provides-Extra: dev
|
|
45
|
+
Requires-Dist: black>=23.0.0; extra == 'dev'
|
|
46
|
+
Requires-Dist: flake8>=6.0.0; extra == 'dev'
|
|
47
|
+
Requires-Dist: iris-devtester>=1.18.1; extra == 'dev'
|
|
48
|
+
Requires-Dist: isort>=5.12.0; extra == 'dev'
|
|
49
|
+
Requires-Dist: mypy>=1.5.0; extra == 'dev'
|
|
50
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
|
51
|
+
Requires-Dist: pytest-playwright>=0.7.0; extra == 'dev'
|
|
52
|
+
Requires-Dist: pytest>=7.4.0; extra == 'dev'
|
|
53
|
+
Provides-Extra: full
|
|
54
|
+
Requires-Dist: fastapi>=0.118.0; extra == 'full'
|
|
55
|
+
Requires-Dist: httpx>=0.28.1; extra == 'full'
|
|
56
|
+
Requires-Dist: iris-embedded-python-wrapper>=0.5.20; extra == 'full'
|
|
57
|
+
Requires-Dist: leidenalg>=0.10; extra == 'full'
|
|
58
|
+
Requires-Dist: networkx>=3.0; extra == 'full'
|
|
59
|
+
Requires-Dist: numpy>=1.24.0; extra == 'full'
|
|
60
|
+
Requires-Dist: pandas>=2.0.0; extra == 'full'
|
|
61
|
+
Requires-Dist: pydantic>=2.11.9; extra == 'full'
|
|
62
|
+
Requires-Dist: python-dotenv>=1.0.0; extra == 'full'
|
|
63
|
+
Requires-Dist: python-igraph>=0.11; extra == 'full'
|
|
64
|
+
Requires-Dist: rdflib>=6.0.0; extra == 'full'
|
|
65
|
+
Requires-Dist: requests>=2.28.0; extra == 'full'
|
|
66
|
+
Requires-Dist: strawberry-graphql[fastapi]>=0.280.0; extra == 'full'
|
|
67
|
+
Requires-Dist: uvicorn>=0.37.0; extra == 'full'
|
|
68
|
+
Provides-Extra: ml
|
|
69
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == 'ml'
|
|
70
|
+
Requires-Dist: scipy>=1.11.0; extra == 'ml'
|
|
71
|
+
Requires-Dist: torch>=2.0.0; extra == 'ml'
|
|
72
|
+
Provides-Extra: performance
|
|
73
|
+
Requires-Dist: memory-profiler>=0.61.0; extra == 'performance'
|
|
74
|
+
Requires-Dist: psutil>=5.9.0; extra == 'performance'
|
|
75
|
+
Provides-Extra: plaid
|
|
76
|
+
Requires-Dist: numpy>=1.24.0; extra == 'plaid'
|
|
77
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == 'plaid'
|
|
78
|
+
Provides-Extra: visualization
|
|
79
|
+
Requires-Dist: graphviz>=0.20.0; extra == 'visualization'
|
|
80
|
+
Requires-Dist: matplotlib>=3.7.0; extra == 'visualization'
|
|
81
|
+
Requires-Dist: plotly>=5.15.0; extra == 'visualization'
|
|
82
|
+
Description-Content-Type: text/markdown
|
|
83
|
+
|
|
1
84
|
# iris-vector-graph
|
|
2
85
|
|
|
3
86
|
**Knowledge graph engine for InterSystems IRIS** — temporal property graph, vector search, openCypher, graph analytics, and pre-aggregated analytics.
|
|
@@ -733,6 +816,28 @@ conditions = tool("patient-123") # → {"conditions": [...], "error": None}
|
|
|
733
816
|
|
|
734
817
|
## Changelog
|
|
735
818
|
|
|
819
|
+
### v1.99.0 (2026-05-28)
|
|
820
|
+
- **feat**: Spec 163 — Community Detection & Cluster Analysis Suite. Four new graph algorithms via the GraphStore protocol + Cypher procedures + dual-path architecture (arno Rust accelerator primary + LazyKG pure-Python fallback):
|
|
821
|
+
- `engine.leiden_communities(max_levels, gamma, tol, top_k, mem_budget_mb, random_seed, progress_callback)` — Leiden community detection (Traag et al. 2019). At `gamma=1.0` uses `ModularityVertexPartition` (canonical Leiden); at `gamma != 1.0` uses `CPMVertexPartition` for resolution control. ARI = 1.0 with `leidenalg` reference (4-way benchmark on karate, ER(500), ER(2000)).
|
|
822
|
+
- `engine.triangle_count(top_k, progress_callback)` — symmetrized triangle count + LCC. Pearson > 0.95 with `networkx.triangles(networkx.Graph(G_directed))` on Erdős-Rényi 100-node fixture.
|
|
823
|
+
- `engine.strongly_connected_components(top_k, progress_callback)` — iterative Tarjan (1972) with explicit DFS stack frames (avoids Python recursion limit on graphs with deep DFS chains). Exact set-equality with `networkx.strongly_connected_components`.
|
|
824
|
+
- `engine.k_core_decomposition(top_k, progress_callback)` — Batagelj-Zaversnik (2003) bucket-sort O(V+E) over symmetrized adjacency. Per-node exact match with `networkx.core_number`.
|
|
825
|
+
- **feat**: 4 Cypher procedures `CALL ivg.leiden({...}) YIELD node, community, size`, `CALL ivg.triangleCount({...}) YIELD node, triangles, lcc`, `CALL ivg.scc({...}) YIELD node, component, size`, `CALL ivg.kcore({...}) YIELD node, coreness`. Map-parameter syntax with FR-015 unknown-key rejection (reserves `weighted` key for future weighted-Leiden variants).
|
|
826
|
+
- **feat**: `engine.get_community_warnings(max_entries=50)` reads `^IVG.warnings("communities", *)` for memory-budget skip events.
|
|
827
|
+
- **feat**: 4 new `GraphStore` protocol methods (`execute_leiden`, `execute_triangle_count`, `execute_scc`, `execute_k_core`) + 4 capability keys.
|
|
828
|
+
- **feat**: 4 new Pydantic input models exported from package root: `LeidenInput`, `TriangleCountInput`, `SCCInput`, `KCoreInput`.
|
|
829
|
+
- **feat (architecture)**: **LazyKG adapter** (`iris_vector_graph.stores.lazy_kg.LazyKG`) — on-demand `^KG` global access via the IRIS Native API with per-node-level neighbor caching. Bug-S-immune (no `##class()` calls). Powers all 4 spec 163 algorithms; ready to power spec 162 retrofit.
|
|
830
|
+
- **feat (architecture)**: **arno Rust accelerator bridge** (`iris_vector_graph.stores.arno_bridge`) — calls `$ZF(-5)` user functions via Native API to invoke `libarno_callout.so` Rust kernels (`kg_leiden_run`, `kg_triangle_count_run`, `kg_scc_run`, `kg_kcore_run`). When `libarno_callout.so` is deployed, all 4 community algorithms route through Rust automatically; falls back transparently to LazyKG when not deployed. The Rust Leiden kernel is backed by the `leiden-rs` v0.8 crate (full Traag 2019 three-phase: local moving + refinement + aggregation, CPM/Modularity/RBC quality functions). Disable via `IVG_DISABLE_ARNO=1` to force LazyKG.
|
|
831
|
+
- **feat (perf)**: Server-side `^KG` walk via SQL OBJECTSCRIPT function (`ivg_arno_build_adj`) — single Python→IRIS round-trip replaces ~20K Native-API `nextSubscript` hops. Drops graph serialization from 944ms to 9–60ms on ER(2000, 9941e), making total IVG Leiden time competitive with native Neo4j GDS.
|
|
832
|
+
- **feat**: 4-way Leiden benchmark (`tests/perf/test_leiden_four_way.py`) — runs the same fixture through (1) `engine.leiden_communities()` (arno path when libarno deployed, LazyKG otherwise), (2) `networkx.community.louvain_communities`, (3) `leidenalg.find_partition` direct, (4) Neo4j GDS `gds.leiden.stream`. All four engines run **Modularity Leiden at γ=1.0** for apples-to-apples comparison; reports both end-to-end and kernel-only times. Captures wall-clock + modularity + community count + pairwise ARI; emits structured JSON to `benchmarks/leiden_4way_<timestamp>.json`. **Quality**: IVG ≡ leidenalg direct (ARI=1.0 on karate, 4 communities, Q=0.420 — identical partition); IVG ≡ Neo4j GDS Leiden (ARI=0.898 on karate). **End-to-end speed (post-optimization)**: IVG 6ms vs GDS 206ms on ER(500, 2437e) — **34× faster**; IVG 60ms vs GDS 60ms on ER(2000, 9941e) — tied; IVG 96ms vs GDS 115ms on karate — **1.2× faster**. Quality matches the leidenalg reference exactly while delivering competitive-to-superior performance.
|
|
833
|
+
- **feat**: New `[communities]` optional install extra: `pip install iris-vector-graph[communities]` pulls `python-igraph>=0.11`, `leidenalg>=0.10`, `networkx>=3.0`. `[full]` extra now includes these by default.
|
|
834
|
+
- **feat**: Test fixture loader (`tests/e2e/fixtures/community_graphs.py`) with 7 graph builders: Zachary's karate club, Erdős-Rényi, complete `K_n`, star, directed cycle, path, simple DAG. `load_into_engine()` automatically calls `engine.build_graph_globals()` after SQL ingest to repair `^KG` (Bug S workaround for `Graph.KG.EdgeScan` failure on external Python).
|
|
835
|
+
- **fix (FR-007 honest threshold)**: Karate club ARI gate relaxed from > 0.85 to > 0.75 with mandatory cardinality check (must produce 17+17 partition). Across seeds 0-49 with string-sorted node IDs (UUID-prefixed in IVG), the maximum achievable ARI for any leidenalg configuration is 0.772; the original 0.85 threshold assumed igraph's natural integer vertex ordering preserves Zachary's canonical partition, which IVG's string-ID convention breaks. The 17+17 cardinality assertion is the actual algorithmic correctness gate.
|
|
836
|
+
- **test**: 12 new e2e tests in `tests/e2e/test_communities_e2e.py` (3 per algorithm + 1 arno-vs-LazyKG cross-check, all PASS against `ivg-iris`) + 4 xfail-marked Cypher procedure tests pending Bug S upstream fix.
|
|
837
|
+
- **test**: 52 new unit tests across `tests/unit/test_communities_unit.py`, `tests/unit/test_communities_translator.py`, `tests/unit/test_lazy_kg.py`, `tests/unit/test_arno_bridge.py`. 82/82 spec 163 unit tests PASS.
|
|
838
|
+
- **docs**: `specs/163-communities/{spec,plan,research,data-model,quickstart,tasks,contracts/}` — full speckit artifacts with 6 clarifications, 26 functional requirements, 9 NFRs.
|
|
839
|
+
- **docs**: ENGINEERING_DEBT.md Bug S marked MITIGATED (LazyKG + Native API gref bypass on production path; SQL function path remains xfail-blocked pending kernel-team fix to `%SYS.DBSRV` user-class XDCall lookup).
|
|
840
|
+
|
|
736
841
|
### v1.98.0 (2026-05-28)
|
|
737
842
|
- **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
843
|
- `engine.degree_centrality(direction, predicate, top_k)` — out/in/both, predicate-filtered, normalized to (n-1)
|
|
@@ -1,80 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: iris-vector-graph
|
|
3
|
-
Version: 1.98.0
|
|
4
|
-
Summary: Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs
|
|
5
|
-
Project-URL: Homepage, https://github.com/intersystems-community/iris-vector-graph
|
|
6
|
-
Project-URL: Documentation, https://github.com/intersystems-community/iris-vector-graph/tree/main/docs
|
|
7
|
-
Project-URL: Repository, https://github.com/intersystems-community/iris-vector-graph
|
|
8
|
-
Project-URL: Issues, https://github.com/intersystems-community/iris-vector-graph/issues
|
|
9
|
-
Author-email: InterSystems Community Team <grants@intersystems.com>
|
|
10
|
-
License-Expression: MIT
|
|
11
|
-
License-File: LICENSE
|
|
12
|
-
Keywords: bioinformatics,biomedical,graph,iris,knowledge-graph,protein-interactions,vector-search
|
|
13
|
-
Classifier: Development Status :: 4 - Beta
|
|
14
|
-
Classifier: Intended Audience :: Science/Research
|
|
15
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
-
Classifier: Operating System :: OS Independent
|
|
17
|
-
Classifier: Programming Language :: Python :: 3
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
-
Classifier: Topic :: Database
|
|
23
|
-
Classifier: Topic :: Scientific/Engineering
|
|
24
|
-
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
25
|
-
Requires-Python: >=3.10
|
|
26
|
-
Requires-Dist: intersystems-iris>=1.0.0
|
|
27
|
-
Provides-Extra: biodata
|
|
28
|
-
Requires-Dist: biopython>=1.81; extra == 'biodata'
|
|
29
|
-
Requires-Dist: bioservices>=1.11.0; extra == 'biodata'
|
|
30
|
-
Requires-Dist: mygene>=3.2.0; extra == 'biodata'
|
|
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'
|
|
36
|
-
Provides-Extra: core
|
|
37
|
-
Requires-Dist: intersystems-iris>=1.0.0; extra == 'core'
|
|
38
|
-
Provides-Extra: demo
|
|
39
|
-
Requires-Dist: python-fasthtml>=0.12.0; extra == 'demo'
|
|
40
|
-
Provides-Extra: dev
|
|
41
|
-
Requires-Dist: black>=23.0.0; extra == 'dev'
|
|
42
|
-
Requires-Dist: flake8>=6.0.0; extra == 'dev'
|
|
43
|
-
Requires-Dist: iris-devtester>=1.18.1; extra == 'dev'
|
|
44
|
-
Requires-Dist: isort>=5.12.0; extra == 'dev'
|
|
45
|
-
Requires-Dist: mypy>=1.5.0; extra == 'dev'
|
|
46
|
-
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
|
47
|
-
Requires-Dist: pytest-playwright>=0.7.0; extra == 'dev'
|
|
48
|
-
Requires-Dist: pytest>=7.4.0; extra == 'dev'
|
|
49
|
-
Provides-Extra: full
|
|
50
|
-
Requires-Dist: fastapi>=0.118.0; extra == 'full'
|
|
51
|
-
Requires-Dist: httpx>=0.28.1; extra == 'full'
|
|
52
|
-
Requires-Dist: iris-embedded-python-wrapper>=0.5.20; extra == 'full'
|
|
53
|
-
Requires-Dist: networkx>=3.0; extra == 'full'
|
|
54
|
-
Requires-Dist: numpy>=1.24.0; extra == 'full'
|
|
55
|
-
Requires-Dist: pandas>=2.0.0; extra == 'full'
|
|
56
|
-
Requires-Dist: pydantic>=2.11.9; extra == 'full'
|
|
57
|
-
Requires-Dist: python-dotenv>=1.0.0; extra == 'full'
|
|
58
|
-
Requires-Dist: rdflib>=6.0.0; extra == 'full'
|
|
59
|
-
Requires-Dist: requests>=2.28.0; extra == 'full'
|
|
60
|
-
Requires-Dist: strawberry-graphql[fastapi]>=0.280.0; extra == 'full'
|
|
61
|
-
Requires-Dist: uvicorn>=0.37.0; extra == 'full'
|
|
62
|
-
Provides-Extra: ml
|
|
63
|
-
Requires-Dist: scikit-learn>=1.3.0; extra == 'ml'
|
|
64
|
-
Requires-Dist: scipy>=1.11.0; extra == 'ml'
|
|
65
|
-
Requires-Dist: torch>=2.0.0; extra == 'ml'
|
|
66
|
-
Provides-Extra: performance
|
|
67
|
-
Requires-Dist: memory-profiler>=0.61.0; extra == 'performance'
|
|
68
|
-
Requires-Dist: psutil>=5.9.0; extra == 'performance'
|
|
69
|
-
Provides-Extra: plaid
|
|
70
|
-
Requires-Dist: numpy>=1.24.0; extra == 'plaid'
|
|
71
|
-
Requires-Dist: scikit-learn>=1.3.0; extra == 'plaid'
|
|
72
|
-
Provides-Extra: visualization
|
|
73
|
-
Requires-Dist: graphviz>=0.20.0; extra == 'visualization'
|
|
74
|
-
Requires-Dist: matplotlib>=3.7.0; extra == 'visualization'
|
|
75
|
-
Requires-Dist: plotly>=5.15.0; extra == 'visualization'
|
|
76
|
-
Description-Content-Type: text/markdown
|
|
77
|
-
|
|
78
1
|
# iris-vector-graph
|
|
79
2
|
|
|
80
3
|
**Knowledge graph engine for InterSystems IRIS** — temporal property graph, vector search, openCypher, graph analytics, and pre-aggregated analytics.
|
|
@@ -810,6 +733,28 @@ conditions = tool("patient-123") # → {"conditions": [...], "error": None}
|
|
|
810
733
|
|
|
811
734
|
## Changelog
|
|
812
735
|
|
|
736
|
+
### v1.99.0 (2026-05-28)
|
|
737
|
+
- **feat**: Spec 163 — Community Detection & Cluster Analysis Suite. Four new graph algorithms via the GraphStore protocol + Cypher procedures + dual-path architecture (arno Rust accelerator primary + LazyKG pure-Python fallback):
|
|
738
|
+
- `engine.leiden_communities(max_levels, gamma, tol, top_k, mem_budget_mb, random_seed, progress_callback)` — Leiden community detection (Traag et al. 2019). At `gamma=1.0` uses `ModularityVertexPartition` (canonical Leiden); at `gamma != 1.0` uses `CPMVertexPartition` for resolution control. ARI = 1.0 with `leidenalg` reference (4-way benchmark on karate, ER(500), ER(2000)).
|
|
739
|
+
- `engine.triangle_count(top_k, progress_callback)` — symmetrized triangle count + LCC. Pearson > 0.95 with `networkx.triangles(networkx.Graph(G_directed))` on Erdős-Rényi 100-node fixture.
|
|
740
|
+
- `engine.strongly_connected_components(top_k, progress_callback)` — iterative Tarjan (1972) with explicit DFS stack frames (avoids Python recursion limit on graphs with deep DFS chains). Exact set-equality with `networkx.strongly_connected_components`.
|
|
741
|
+
- `engine.k_core_decomposition(top_k, progress_callback)` — Batagelj-Zaversnik (2003) bucket-sort O(V+E) over symmetrized adjacency. Per-node exact match with `networkx.core_number`.
|
|
742
|
+
- **feat**: 4 Cypher procedures `CALL ivg.leiden({...}) YIELD node, community, size`, `CALL ivg.triangleCount({...}) YIELD node, triangles, lcc`, `CALL ivg.scc({...}) YIELD node, component, size`, `CALL ivg.kcore({...}) YIELD node, coreness`. Map-parameter syntax with FR-015 unknown-key rejection (reserves `weighted` key for future weighted-Leiden variants).
|
|
743
|
+
- **feat**: `engine.get_community_warnings(max_entries=50)` reads `^IVG.warnings("communities", *)` for memory-budget skip events.
|
|
744
|
+
- **feat**: 4 new `GraphStore` protocol methods (`execute_leiden`, `execute_triangle_count`, `execute_scc`, `execute_k_core`) + 4 capability keys.
|
|
745
|
+
- **feat**: 4 new Pydantic input models exported from package root: `LeidenInput`, `TriangleCountInput`, `SCCInput`, `KCoreInput`.
|
|
746
|
+
- **feat (architecture)**: **LazyKG adapter** (`iris_vector_graph.stores.lazy_kg.LazyKG`) — on-demand `^KG` global access via the IRIS Native API with per-node-level neighbor caching. Bug-S-immune (no `##class()` calls). Powers all 4 spec 163 algorithms; ready to power spec 162 retrofit.
|
|
747
|
+
- **feat (architecture)**: **arno Rust accelerator bridge** (`iris_vector_graph.stores.arno_bridge`) — calls `$ZF(-5)` user functions via Native API to invoke `libarno_callout.so` Rust kernels (`kg_leiden_run`, `kg_triangle_count_run`, `kg_scc_run`, `kg_kcore_run`). When `libarno_callout.so` is deployed, all 4 community algorithms route through Rust automatically; falls back transparently to LazyKG when not deployed. The Rust Leiden kernel is backed by the `leiden-rs` v0.8 crate (full Traag 2019 three-phase: local moving + refinement + aggregation, CPM/Modularity/RBC quality functions). Disable via `IVG_DISABLE_ARNO=1` to force LazyKG.
|
|
748
|
+
- **feat (perf)**: Server-side `^KG` walk via SQL OBJECTSCRIPT function (`ivg_arno_build_adj`) — single Python→IRIS round-trip replaces ~20K Native-API `nextSubscript` hops. Drops graph serialization from 944ms to 9–60ms on ER(2000, 9941e), making total IVG Leiden time competitive with native Neo4j GDS.
|
|
749
|
+
- **feat**: 4-way Leiden benchmark (`tests/perf/test_leiden_four_way.py`) — runs the same fixture through (1) `engine.leiden_communities()` (arno path when libarno deployed, LazyKG otherwise), (2) `networkx.community.louvain_communities`, (3) `leidenalg.find_partition` direct, (4) Neo4j GDS `gds.leiden.stream`. All four engines run **Modularity Leiden at γ=1.0** for apples-to-apples comparison; reports both end-to-end and kernel-only times. Captures wall-clock + modularity + community count + pairwise ARI; emits structured JSON to `benchmarks/leiden_4way_<timestamp>.json`. **Quality**: IVG ≡ leidenalg direct (ARI=1.0 on karate, 4 communities, Q=0.420 — identical partition); IVG ≡ Neo4j GDS Leiden (ARI=0.898 on karate). **End-to-end speed (post-optimization)**: IVG 6ms vs GDS 206ms on ER(500, 2437e) — **34× faster**; IVG 60ms vs GDS 60ms on ER(2000, 9941e) — tied; IVG 96ms vs GDS 115ms on karate — **1.2× faster**. Quality matches the leidenalg reference exactly while delivering competitive-to-superior performance.
|
|
750
|
+
- **feat**: New `[communities]` optional install extra: `pip install iris-vector-graph[communities]` pulls `python-igraph>=0.11`, `leidenalg>=0.10`, `networkx>=3.0`. `[full]` extra now includes these by default.
|
|
751
|
+
- **feat**: Test fixture loader (`tests/e2e/fixtures/community_graphs.py`) with 7 graph builders: Zachary's karate club, Erdős-Rényi, complete `K_n`, star, directed cycle, path, simple DAG. `load_into_engine()` automatically calls `engine.build_graph_globals()` after SQL ingest to repair `^KG` (Bug S workaround for `Graph.KG.EdgeScan` failure on external Python).
|
|
752
|
+
- **fix (FR-007 honest threshold)**: Karate club ARI gate relaxed from > 0.85 to > 0.75 with mandatory cardinality check (must produce 17+17 partition). Across seeds 0-49 with string-sorted node IDs (UUID-prefixed in IVG), the maximum achievable ARI for any leidenalg configuration is 0.772; the original 0.85 threshold assumed igraph's natural integer vertex ordering preserves Zachary's canonical partition, which IVG's string-ID convention breaks. The 17+17 cardinality assertion is the actual algorithmic correctness gate.
|
|
753
|
+
- **test**: 12 new e2e tests in `tests/e2e/test_communities_e2e.py` (3 per algorithm + 1 arno-vs-LazyKG cross-check, all PASS against `ivg-iris`) + 4 xfail-marked Cypher procedure tests pending Bug S upstream fix.
|
|
754
|
+
- **test**: 52 new unit tests across `tests/unit/test_communities_unit.py`, `tests/unit/test_communities_translator.py`, `tests/unit/test_lazy_kg.py`, `tests/unit/test_arno_bridge.py`. 82/82 spec 163 unit tests PASS.
|
|
755
|
+
- **docs**: `specs/163-communities/{spec,plan,research,data-model,quickstart,tasks,contracts/}` — full speckit artifacts with 6 clarifications, 26 functional requirements, 9 NFRs.
|
|
756
|
+
- **docs**: ENGINEERING_DEBT.md Bug S marked MITIGATED (LazyKG + Native API gref bypass on production path; SQL function path remains xfail-blocked pending kernel-team fix to `%SYS.DBSRV` user-class XDCall lookup).
|
|
757
|
+
|
|
813
758
|
### v1.98.0 (2026-05-28)
|
|
814
759
|
- **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
760
|
- `engine.degree_centrality(direction, predicate, top_k)` — out/in/both, predicate-filtered, normalized to (n-1)
|
|
@@ -18,6 +18,7 @@ from ._validate import (
|
|
|
18
18
|
BM25BuildInput, BM25SearchInput,
|
|
19
19
|
KHop2Input, TemporalEdgeInput, VecSearchInput,
|
|
20
20
|
DegreeCentralityInput, BetweennessInput, ClosenessInput, EigenvectorInput,
|
|
21
|
+
LeidenInput, TriangleCountInput, SCCInput, KCoreInput,
|
|
21
22
|
)
|
|
22
23
|
from .vector_utils import VectorOptimizer
|
|
23
24
|
from .text_search import TextSearchEngine
|
|
@@ -210,3 +210,24 @@ class EigenvectorInput(BaseModel):
|
|
|
210
210
|
max_iter: int = Field(default=30, ge=1, le=1000)
|
|
211
211
|
tol: float = Field(default=1e-6, gt=0.0, lt=1.0)
|
|
212
212
|
top_k: int = Field(default=10000, ge=0, le=1_000_000)
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class LeidenInput(BaseModel):
|
|
216
|
+
max_levels: int = Field(default=10, ge=1, le=100)
|
|
217
|
+
gamma: float = Field(default=1.0, gt=0.0, le=100.0)
|
|
218
|
+
tol: float = Field(default=1e-4, gt=0.0, lt=1.0)
|
|
219
|
+
top_k: int = Field(default=10000, ge=0, le=1_000_000)
|
|
220
|
+
mem_budget_mb: int = Field(default=256, ge=16, le=8192)
|
|
221
|
+
random_seed: Optional[int] = Field(default=None, ge=0, le=2**32 - 1)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class TriangleCountInput(BaseModel):
|
|
225
|
+
top_k: int = Field(default=10000, ge=0, le=1_000_000)
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
class SCCInput(BaseModel):
|
|
229
|
+
top_k: int = Field(default=10000, ge=0, le=1_000_000)
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
class KCoreInput(BaseModel):
|
|
233
|
+
top_k: int = Field(default=10000, ge=0, le=1_000_000)
|
{iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/translator.py
RENAMED
|
@@ -34,6 +34,16 @@ CENTRALITY_ALLOWED_KEYS: Dict[str, set] = {
|
|
|
34
34
|
"ivg.eigenvector": {"maxIter", "tol", "topK"},
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
# Allowed map-parameter keys for community-detection procedures (Spec 163 FR-015).
|
|
38
|
+
# Same forward-compat semantics as CENTRALITY_ALLOWED_KEYS — `weighted` is reserved
|
|
39
|
+
# for Phase 2 weighted Leiden / weighted Triangle / etc.
|
|
40
|
+
COMMUNITY_ALLOWED_KEYS: Dict[str, set] = {
|
|
41
|
+
"ivg.leiden": {"maxLevels", "gamma", "tol", "topK", "memBudgetMB", "randomSeed"},
|
|
42
|
+
"ivg.triangleCount": {"topK"},
|
|
43
|
+
"ivg.scc": {"topK"},
|
|
44
|
+
"ivg.kcore": {"topK"},
|
|
45
|
+
}
|
|
46
|
+
|
|
37
47
|
|
|
38
48
|
def _validate_centrality_proc_map(proc_name: str, map_keys) -> None:
|
|
39
49
|
"""Reject unknown map-parameter keys for centrality procedures.
|
|
@@ -51,6 +61,22 @@ def _validate_centrality_proc_map(proc_name: str, map_keys) -> None:
|
|
|
51
61
|
)
|
|
52
62
|
|
|
53
63
|
|
|
64
|
+
def _validate_community_proc_map(proc_name: str, map_keys) -> None:
|
|
65
|
+
"""Reject unknown map-parameter keys for community-detection procedures (Spec 163 FR-015).
|
|
66
|
+
|
|
67
|
+
Same forward-compat semantics as `_validate_centrality_proc_map` — `weighted`
|
|
68
|
+
is reserved for Phase 2. Used by `_translate_leiden`, `_translate_triangle_count`,
|
|
69
|
+
`_translate_scc`, `_translate_kcore`.
|
|
70
|
+
"""
|
|
71
|
+
allowed = COMMUNITY_ALLOWED_KEYS.get(proc_name, set())
|
|
72
|
+
unknown = set(map_keys) - allowed
|
|
73
|
+
if unknown:
|
|
74
|
+
raise ValueError(
|
|
75
|
+
f"Unknown parameters for {proc_name}: {sorted(unknown)}. "
|
|
76
|
+
f"Allowed: {sorted(allowed)}"
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
|
|
54
80
|
def set_schema_prefix(prefix: str) -> None:
|
|
55
81
|
"""Set the schema prefix for all table references in generated SQL.
|
|
56
82
|
|
|
@@ -309,9 +335,17 @@ def translate_procedure_call(
|
|
|
309
335
|
_translate_closeness(proc, context)
|
|
310
336
|
elif name == "ivg.eigenvector":
|
|
311
337
|
_translate_eigenvector(proc, context)
|
|
338
|
+
elif name == "ivg.leiden":
|
|
339
|
+
_translate_leiden(proc, context)
|
|
340
|
+
elif name == "ivg.triangleCount":
|
|
341
|
+
_translate_triangle_count(proc, context)
|
|
342
|
+
elif name == "ivg.scc":
|
|
343
|
+
_translate_scc(proc, context)
|
|
344
|
+
elif name == "ivg.kcore":
|
|
345
|
+
_translate_kcore(proc, context)
|
|
312
346
|
else:
|
|
313
347
|
raise ValueError(
|
|
314
|
-
f"Unknown procedure: {name!r}. Supported: ivg.retrieve, ivg.vector.search, ivg.neighbors, ivg.ppr, ivg.bm25.search, ivg.ivf.search, ivg.shortestPath.weighted, ivg.degreeCentrality, ivg.betweenness, ivg.closeness, ivg.eigenvector"
|
|
348
|
+
f"Unknown procedure: {name!r}. Supported: ivg.retrieve, ivg.vector.search, ivg.neighbors, ivg.ppr, ivg.bm25.search, ivg.ivf.search, ivg.shortestPath.weighted, ivg.degreeCentrality, ivg.betweenness, ivg.closeness, ivg.eigenvector, ivg.leiden, ivg.triangleCount, ivg.scc, ivg.kcore"
|
|
315
349
|
)
|
|
316
350
|
|
|
317
351
|
|
|
@@ -3726,3 +3760,142 @@ def _translate_eigenvector(proc, context) -> None:
|
|
|
3726
3760
|
context.variable_aliases[item] = "Eigenvector"
|
|
3727
3761
|
if "score" in proc.yield_items:
|
|
3728
3762
|
context.scalar_variables.add("score")
|
|
3763
|
+
|
|
3764
|
+
|
|
3765
|
+
def _translate_leiden(proc, context) -> None:
|
|
3766
|
+
opts = proc.options or {}
|
|
3767
|
+
_validate_community_proc_map("ivg.leiden", opts.keys())
|
|
3768
|
+
|
|
3769
|
+
def _val(key, default):
|
|
3770
|
+
v = opts.get(key, default)
|
|
3771
|
+
if hasattr(v, "value"):
|
|
3772
|
+
return v.value
|
|
3773
|
+
return v
|
|
3774
|
+
|
|
3775
|
+
max_levels = int(_val("maxLevels", 10))
|
|
3776
|
+
gamma = float(_val("gamma", 1.0))
|
|
3777
|
+
tol = float(_val("tol", 1e-4))
|
|
3778
|
+
top_k = int(_val("topK", 10000))
|
|
3779
|
+
mem_budget_mb = int(_val("memBudgetMB", 256))
|
|
3780
|
+
seed_v = _val("randomSeed", None)
|
|
3781
|
+
random_seed = -1 if seed_v is None else int(seed_v)
|
|
3782
|
+
|
|
3783
|
+
fn = f"{_schema_prefix}.kg_Leiden" if _schema_prefix else "kg_Leiden"
|
|
3784
|
+
cte_sql = (
|
|
3785
|
+
f"SELECT j.node_id AS node, j.community, j.size\n"
|
|
3786
|
+
f"FROM JSON_TABLE(\n"
|
|
3787
|
+
f" {fn}(?, ?, ?, ?, ?, ?),\n"
|
|
3788
|
+
f" '$[*]' COLUMNS(\n"
|
|
3789
|
+
f" node_id VARCHAR(256) PATH '$.id',\n"
|
|
3790
|
+
f" community INTEGER PATH '$.community',\n"
|
|
3791
|
+
f" size INTEGER PATH '$.size'\n"
|
|
3792
|
+
f" )\n"
|
|
3793
|
+
f") j"
|
|
3794
|
+
)
|
|
3795
|
+
context.all_stage_params.extend([max_levels, gamma, tol, top_k, mem_budget_mb, random_seed])
|
|
3796
|
+
context.stages.insert(0, f"Leiden AS (\n{cte_sql}\n)")
|
|
3797
|
+
for item in proc.yield_items:
|
|
3798
|
+
context.variable_aliases[item] = "Leiden"
|
|
3799
|
+
if "community" in proc.yield_items:
|
|
3800
|
+
context.scalar_variables.add("community")
|
|
3801
|
+
if "size" in proc.yield_items:
|
|
3802
|
+
context.scalar_variables.add("size")
|
|
3803
|
+
|
|
3804
|
+
|
|
3805
|
+
def _translate_triangle_count(proc, context) -> None:
|
|
3806
|
+
opts = proc.options or {}
|
|
3807
|
+
_validate_community_proc_map("ivg.triangleCount", opts.keys())
|
|
3808
|
+
|
|
3809
|
+
def _val(key, default):
|
|
3810
|
+
v = opts.get(key, default)
|
|
3811
|
+
if hasattr(v, "value"):
|
|
3812
|
+
return v.value
|
|
3813
|
+
return v
|
|
3814
|
+
|
|
3815
|
+
top_k = int(_val("topK", 10000))
|
|
3816
|
+
|
|
3817
|
+
fn = f"{_schema_prefix}.kg_TriangleCount" if _schema_prefix else "kg_TriangleCount"
|
|
3818
|
+
cte_sql = (
|
|
3819
|
+
f"SELECT j.node_id AS node, j.triangles, j.lcc\n"
|
|
3820
|
+
f"FROM JSON_TABLE(\n"
|
|
3821
|
+
f" {fn}(?),\n"
|
|
3822
|
+
f" '$[*]' COLUMNS(\n"
|
|
3823
|
+
f" node_id VARCHAR(256) PATH '$.id',\n"
|
|
3824
|
+
f" triangles INTEGER PATH '$.triangles',\n"
|
|
3825
|
+
f" lcc DOUBLE PATH '$.lcc'\n"
|
|
3826
|
+
f" )\n"
|
|
3827
|
+
f") j"
|
|
3828
|
+
)
|
|
3829
|
+
context.all_stage_params.append(top_k)
|
|
3830
|
+
context.stages.insert(0, f"TriangleCount AS (\n{cte_sql}\n)")
|
|
3831
|
+
for item in proc.yield_items:
|
|
3832
|
+
context.variable_aliases[item] = "TriangleCount"
|
|
3833
|
+
if "triangles" in proc.yield_items:
|
|
3834
|
+
context.scalar_variables.add("triangles")
|
|
3835
|
+
if "lcc" in proc.yield_items:
|
|
3836
|
+
context.scalar_variables.add("lcc")
|
|
3837
|
+
|
|
3838
|
+
|
|
3839
|
+
def _translate_scc(proc, context) -> None:
|
|
3840
|
+
opts = proc.options or {}
|
|
3841
|
+
_validate_community_proc_map("ivg.scc", opts.keys())
|
|
3842
|
+
|
|
3843
|
+
def _val(key, default):
|
|
3844
|
+
v = opts.get(key, default)
|
|
3845
|
+
if hasattr(v, "value"):
|
|
3846
|
+
return v.value
|
|
3847
|
+
return v
|
|
3848
|
+
|
|
3849
|
+
top_k = int(_val("topK", 10000))
|
|
3850
|
+
|
|
3851
|
+
fn = f"{_schema_prefix}.kg_SCC" if _schema_prefix else "kg_SCC"
|
|
3852
|
+
cte_sql = (
|
|
3853
|
+
f"SELECT j.node_id AS node, j.component, j.size\n"
|
|
3854
|
+
f"FROM JSON_TABLE(\n"
|
|
3855
|
+
f" {fn}(?),\n"
|
|
3856
|
+
f" '$[*]' COLUMNS(\n"
|
|
3857
|
+
f" node_id VARCHAR(256) PATH '$.id',\n"
|
|
3858
|
+
f" component INTEGER PATH '$.component',\n"
|
|
3859
|
+
f" size INTEGER PATH '$.size'\n"
|
|
3860
|
+
f" )\n"
|
|
3861
|
+
f") j"
|
|
3862
|
+
)
|
|
3863
|
+
context.all_stage_params.append(top_k)
|
|
3864
|
+
context.stages.insert(0, f"SCC AS (\n{cte_sql}\n)")
|
|
3865
|
+
for item in proc.yield_items:
|
|
3866
|
+
context.variable_aliases[item] = "SCC"
|
|
3867
|
+
if "component" in proc.yield_items:
|
|
3868
|
+
context.scalar_variables.add("component")
|
|
3869
|
+
if "size" in proc.yield_items:
|
|
3870
|
+
context.scalar_variables.add("size")
|
|
3871
|
+
|
|
3872
|
+
|
|
3873
|
+
def _translate_kcore(proc, context) -> None:
|
|
3874
|
+
opts = proc.options or {}
|
|
3875
|
+
_validate_community_proc_map("ivg.kcore", opts.keys())
|
|
3876
|
+
|
|
3877
|
+
def _val(key, default):
|
|
3878
|
+
v = opts.get(key, default)
|
|
3879
|
+
if hasattr(v, "value"):
|
|
3880
|
+
return v.value
|
|
3881
|
+
return v
|
|
3882
|
+
|
|
3883
|
+
top_k = int(_val("topK", 10000))
|
|
3884
|
+
|
|
3885
|
+
fn = f"{_schema_prefix}.kg_KCore" if _schema_prefix else "kg_KCore"
|
|
3886
|
+
cte_sql = (
|
|
3887
|
+
f"SELECT j.node_id AS node, j.coreness\n"
|
|
3888
|
+
f"FROM JSON_TABLE(\n"
|
|
3889
|
+
f" {fn}(?),\n"
|
|
3890
|
+
f" '$[*]' COLUMNS(\n"
|
|
3891
|
+
f" node_id VARCHAR(256) PATH '$.id',\n"
|
|
3892
|
+
f" coreness INTEGER PATH '$.coreness'\n"
|
|
3893
|
+
f" )\n"
|
|
3894
|
+
f") j"
|
|
3895
|
+
)
|
|
3896
|
+
context.all_stage_params.append(top_k)
|
|
3897
|
+
context.stages.insert(0, f"KCore AS (\n{cte_sql}\n)")
|
|
3898
|
+
for item in proc.yield_items:
|
|
3899
|
+
context.variable_aliases[item] = "KCore"
|
|
3900
|
+
if "coreness" in proc.yield_items:
|
|
3901
|
+
context.scalar_variables.add("coreness")
|
|
@@ -7303,3 +7303,139 @@ class IRISGraphEngine:
|
|
|
7303
7303
|
except Exception as e:
|
|
7304
7304
|
logger.debug("get_centrality_warnings: ^IVG.warnings traversal failed: %s", e)
|
|
7305
7305
|
return warnings_list
|
|
7306
|
+
|
|
7307
|
+
def leiden_communities(
|
|
7308
|
+
self,
|
|
7309
|
+
max_levels: int = 10,
|
|
7310
|
+
gamma: float = 1.0,
|
|
7311
|
+
tol: float = 1e-4,
|
|
7312
|
+
top_k: int = 10000,
|
|
7313
|
+
mem_budget_mb: int = 256,
|
|
7314
|
+
random_seed: Optional[int] = None,
|
|
7315
|
+
progress_callback: Optional[Callable[[int, int], None]] = None,
|
|
7316
|
+
) -> List[Dict[str, Any]]:
|
|
7317
|
+
from iris_vector_graph._validate import LeidenInput
|
|
7318
|
+
validated = LeidenInput(
|
|
7319
|
+
max_levels=max_levels, gamma=gamma, tol=tol, top_k=top_k,
|
|
7320
|
+
mem_budget_mb=mem_budget_mb, random_seed=random_seed,
|
|
7321
|
+
)
|
|
7322
|
+
|
|
7323
|
+
if not getattr(self, "_store", None) or not self._store.capabilities().get("leiden", False):
|
|
7324
|
+
raise NotImplementedError(
|
|
7325
|
+
f"Communities.leiden not supported by store "
|
|
7326
|
+
f"{type(self._store).__name__ if getattr(self, '_store', None) else 'None'}"
|
|
7327
|
+
)
|
|
7328
|
+
|
|
7329
|
+
if validated.top_k == 0:
|
|
7330
|
+
try:
|
|
7331
|
+
count_result = self._store.get_node_count()
|
|
7332
|
+
node_count = int(count_result.rows[0][0]) if count_result.rows else 0
|
|
7333
|
+
if node_count > 100_000:
|
|
7334
|
+
import warnings
|
|
7335
|
+
warnings.warn(
|
|
7336
|
+
f"leiden_communities(top_k=0) on {node_count}-node graph may produce large JSON",
|
|
7337
|
+
RuntimeWarning, stacklevel=2,
|
|
7338
|
+
)
|
|
7339
|
+
except Exception:
|
|
7340
|
+
pass
|
|
7341
|
+
|
|
7342
|
+
result = self._store.execute_leiden(
|
|
7343
|
+
validated.max_levels, validated.gamma, validated.tol,
|
|
7344
|
+
validated.top_k, validated.mem_budget_mb,
|
|
7345
|
+
validated.random_seed, progress_callback,
|
|
7346
|
+
)
|
|
7347
|
+
if result.error:
|
|
7348
|
+
return []
|
|
7349
|
+
|
|
7350
|
+
out: List[Dict[str, Any]] = []
|
|
7351
|
+
for row in result.rows:
|
|
7352
|
+
if len(row) >= 1 and row[0] == "_meta":
|
|
7353
|
+
import json as _json
|
|
7354
|
+
meta = _json.loads(row[1]) if isinstance(row[1], str) else row[1]
|
|
7355
|
+
out.append(meta if isinstance(meta, dict) else {"_meta": row[1]})
|
|
7356
|
+
else:
|
|
7357
|
+
out.append({"id": row[0], "community": row[1], "size": row[2]})
|
|
7358
|
+
return out
|
|
7359
|
+
|
|
7360
|
+
def triangle_count(
|
|
7361
|
+
self,
|
|
7362
|
+
top_k: int = 10000,
|
|
7363
|
+
progress_callback: Optional[Callable[[int, int], None]] = None,
|
|
7364
|
+
) -> List[Dict[str, Any]]:
|
|
7365
|
+
from iris_vector_graph._validate import TriangleCountInput
|
|
7366
|
+
validated = TriangleCountInput(top_k=top_k)
|
|
7367
|
+
|
|
7368
|
+
if not getattr(self, "_store", None) or not self._store.capabilities().get("triangle_count", False):
|
|
7369
|
+
raise NotImplementedError(
|
|
7370
|
+
f"Communities.triangle_count not supported by store "
|
|
7371
|
+
f"{type(self._store).__name__ if getattr(self, '_store', None) else 'None'}"
|
|
7372
|
+
)
|
|
7373
|
+
|
|
7374
|
+
result = self._store.execute_triangle_count(validated.top_k, progress_callback)
|
|
7375
|
+
if result.error:
|
|
7376
|
+
return []
|
|
7377
|
+
return [{"id": row[0], "triangles": row[1], "lcc": row[2]} for row in result.rows]
|
|
7378
|
+
|
|
7379
|
+
def strongly_connected_components(
|
|
7380
|
+
self,
|
|
7381
|
+
top_k: int = 10000,
|
|
7382
|
+
progress_callback: Optional[Callable[[int, int], None]] = None,
|
|
7383
|
+
) -> List[Dict[str, Any]]:
|
|
7384
|
+
from iris_vector_graph._validate import SCCInput
|
|
7385
|
+
validated = SCCInput(top_k=top_k)
|
|
7386
|
+
|
|
7387
|
+
if not getattr(self, "_store", None) or not self._store.capabilities().get("scc", False):
|
|
7388
|
+
raise NotImplementedError(
|
|
7389
|
+
f"Communities.scc not supported by store "
|
|
7390
|
+
f"{type(self._store).__name__ if getattr(self, '_store', None) else 'None'}"
|
|
7391
|
+
)
|
|
7392
|
+
|
|
7393
|
+
result = self._store.execute_scc(validated.top_k, progress_callback)
|
|
7394
|
+
if result.error:
|
|
7395
|
+
return []
|
|
7396
|
+
return [{"id": row[0], "component": row[1], "size": row[2]} for row in result.rows]
|
|
7397
|
+
|
|
7398
|
+
def k_core(
|
|
7399
|
+
self,
|
|
7400
|
+
top_k: int = 10000,
|
|
7401
|
+
progress_callback: Optional[Callable[[int, int], None]] = None,
|
|
7402
|
+
) -> List[Dict[str, Any]]:
|
|
7403
|
+
from iris_vector_graph._validate import KCoreInput
|
|
7404
|
+
validated = KCoreInput(top_k=top_k)
|
|
7405
|
+
|
|
7406
|
+
if not getattr(self, "_store", None) or not self._store.capabilities().get("k_core", False):
|
|
7407
|
+
raise NotImplementedError(
|
|
7408
|
+
f"Communities.k_core not supported by store "
|
|
7409
|
+
f"{type(self._store).__name__ if getattr(self, '_store', None) else 'None'}"
|
|
7410
|
+
)
|
|
7411
|
+
|
|
7412
|
+
result = self._store.execute_k_core(validated.top_k, progress_callback)
|
|
7413
|
+
if result.error:
|
|
7414
|
+
return []
|
|
7415
|
+
return [{"id": row[0], "coreness": row[1]} for row in result.rows]
|
|
7416
|
+
|
|
7417
|
+
def get_community_warnings(self, max_entries: int = 50) -> List[Dict[str, Any]]:
|
|
7418
|
+
try:
|
|
7419
|
+
import iris as _iris
|
|
7420
|
+
iris_inst = _iris.createIRIS(self.conn)
|
|
7421
|
+
except Exception:
|
|
7422
|
+
return []
|
|
7423
|
+
warnings_list: List[Dict[str, Any]] = []
|
|
7424
|
+
try:
|
|
7425
|
+
ts = iris_inst.nextSubscript(False, "^IVG.warnings", "communities", "")
|
|
7426
|
+
while ts is not None and ts != "":
|
|
7427
|
+
src = iris_inst.nextSubscript(False, "^IVG.warnings", "communities", ts, "")
|
|
7428
|
+
while src is not None and src != "":
|
|
7429
|
+
reason = iris_inst.get("^IVG.warnings", "communities", ts, src)
|
|
7430
|
+
warnings_list.append({
|
|
7431
|
+
"timestamp": str(ts),
|
|
7432
|
+
"source": str(src),
|
|
7433
|
+
"reason": str(reason) if reason is not None else "",
|
|
7434
|
+
})
|
|
7435
|
+
if len(warnings_list) >= max_entries:
|
|
7436
|
+
return warnings_list
|
|
7437
|
+
src = iris_inst.nextSubscript(False, "^IVG.warnings", "communities", ts, src)
|
|
7438
|
+
ts = iris_inst.nextSubscript(False, "^IVG.warnings", "communities", ts)
|
|
7439
|
+
except Exception as e:
|
|
7440
|
+
logger.debug("get_community_warnings: ^IVG.warnings traversal failed: %s", e)
|
|
7441
|
+
return warnings_list
|