iris-vector-graph 1.91.4__tar.gz → 1.92.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.91.4 → iris_vector_graph-1.92.0}/PKG-INFO +34 -1
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/README.md +33 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/__init__.py +14 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/bulk_loader.py +2 -2
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/cypher_api.py +29 -1
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/engine.py +13 -7
- iris_vector_graph-1.92.0/iris_vector_graph/fhir_bridge.py +366 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/schema.py +2 -1
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/pyproject.toml +1 -1
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_embedded_wgproto.py +4 -6
- iris_vector_graph-1.92.0/tests/unit/test_fhir_bridge.py +397 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_sql_table_bridge.py +1 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/.gitignore +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/LICENSE +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/demo_biomedical.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/demo_fraud_detection.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/demo_fraud_detection_sql.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/demo_utils.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/demo_working_system.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/biomedical/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/biomedical/loaders.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/biomedical/resolver.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/biomedical/types.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/biomedical_legacy/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/fraud/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/fraud/loaders.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/fraud/resolver.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/domains/fraud/types.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/graphQL.http +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/hybrid_vector_graph_query.cypher +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/examples/rest.http +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/Edge.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/EdgeScan.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/Loader.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/MCPService.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/Meta.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/PageRank.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/PyOps.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/Service.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/Traversal.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/IVG/CypherEngine.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/IVG/Percentile.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/PageRankEmbedded.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/User.Exec.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/_validate.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/bolt_server.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/index.html +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/manifest.json +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/index.html +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/capabilities.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/cypher/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/cypher/ast.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/cypher/lexer.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/cypher/parser.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/cypher/translator.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/dbapi_utils.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/embedded.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/fusion.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/gql/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/gql/constants.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/gql/engine.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/gql/pooling.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/gql/resolvers.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/gql/schema.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/index_protocol.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/models.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/operators.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/py.typed +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/result.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/security.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/status.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/text_search.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/utils.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/iris_vector_graph/vector_utils.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/fhir_bridges.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/fraud_sample_data.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/globals_schema.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/graph_path_globals.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/graph_walk_tvf.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/migrations/000_base_schema_iris.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/migrations/001_add_nodepk_table.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/migrations/001_rollback_nodepk.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/migrations/002_add_fk_constraints.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/operators.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/operators_fixed.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/procedures/kg_PageRank.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/rdf_reifications.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/sql/schema.sql +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/TESTING.md +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmark_parser.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/README.md +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/bench.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/bench_utils.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/benchmark_neo4j.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/bfs_benchmark.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/establish_baseline.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/graph_gen.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/ic2_profile.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/iris_baseline_run.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/iris_os_run.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/ldbc_full_loader.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/load_neo4j.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/benchmarks/synthetic_baseline.csv +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/conftest.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/contract/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/contract/test_cypher_api.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/contract/test_cypher_api_errors.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/contract/test_graphql_queries.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/contract/test_graphql_schema.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/contract/test_ppr_api.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/curl_suite.sh +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/conftest.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_approx_count_distinct.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_arno_bfs_global.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_arno_bfs_unified.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_biomedical_demo.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_biomedical_ui.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_execution_contexts.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_execution_contexts_new.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_fraud_demo.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_fraud_ui.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_gql_autogen_startup.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_gql_node_queries.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_gql_semantic_search.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_gql_traversal.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_graph_kernels_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_hla_kg_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_ic13_shortest_path.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_ic3_exact_count.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_index_protocol.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_introspection_api.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_ivf_insert.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_large_output_chunked.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_lazy_node_resolution.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_multi_query_engine_platform.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_named_paths_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_nkg_index_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_operator_wiring_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_plaid.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_plaid_search_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_ppr_guided_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_procedure_installation.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_reification_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_schema_procedures_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_streaming_bfs.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_stress_api.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_stress_ingest.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_stress_multi_context.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_stress_search.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_stress_setup.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_stress_traversal.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_subgraph_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_subquery_call_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_untested_methods.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/e2e/test_vecindex_e2e.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/conftest.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/gql/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/gql/test_graphql_mutations.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/gql/test_graphql_queries.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/gql/test_graphql_vector_search.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_bidirectional_ppr.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_cls_layer.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_cypher_advanced.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_cypher_enhancements.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_cypher_multi_type.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_cypher_rd.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_cypher_rel_vars.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_cypher_single_type.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_cypher_untyped.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_embeddings_api.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_fastapi_graphql.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_fhir_bridges_integration.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_named_paths_integration.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_nodepk_constraints.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_nodepk_graph_analytics.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_nodepk_migration.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_nodepk_performance.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_nodepk_production_scale.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_objectscript_classes.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_pagerank_sql_optimization.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_reification_integration.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_schema_migration.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_stored_procedure_install.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/integration/test_subquery_call_integration.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/performance/conftest.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/performance/scale_benchmark.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/performance/test_ppr_stress.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/performance/test_stress_v1_5.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/python/run_all_tests.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/python/test_iris_rest_api.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/python/test_networkx_loader.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/python/test_performance_benchmarks.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/python/test_pyops_vector_conversion.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/python/test_python_operators.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/python/test_python_sdk.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/python/test_schema_validation.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/python/test_sql_queries.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/python/test_vector_functions.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/cypher/__init__.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/cypher/test_lexer.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/cypher/test_lexer_advanced.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/cypher/test_parser.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/cypher/test_parser_advanced.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_batch_mutations.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_bfs_arno.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_bm25_index.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_bolt_server.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cls_deployment.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_benchmark.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_benchmark_scale.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_case_when.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_e2e_new_features.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_functions.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_parser.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_posos_bugs.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_procedures.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_translator.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_union_exists.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_var_length.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_edge_embeddings.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_edgeprop_ndjson.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_embed_nodes_params.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_embedded.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_engine_dimension_fix.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_engine_embeddings.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_engine_status.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_fhir_bridges.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_get_nodes.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_graph_kernels.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_graphql_dataloader.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_index_handle.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_index_protocol.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_ingest_formats.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_introspection_api.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_ivf_index.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_ivgresult.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_named_graphs.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_named_paths.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_operators_wiring.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_plaid_search.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_ppr_guided_subgraph.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_reification.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_schema_init.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_schema_procedures.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_shortest_path.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_snapshot.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_sql_splitter.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_subgraph.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_subquery_call.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_temporal_cypher.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_temporal_edges.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_unified_edge_store.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_validation.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_vector_search_routing.py +0 -0
- {iris_vector_graph-1.91.4 → iris_vector_graph-1.92.0}/tests/unit/test_weighted_shortest_path.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iris-vector-graph
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.92.0
|
|
4
4
|
Summary: Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs
|
|
5
5
|
Project-URL: Homepage, https://github.com/intersystems-community/iris-vector-graph
|
|
6
6
|
Project-URL: Documentation, https://github.com/intersystems-community/iris-vector-graph/tree/main/docs
|
|
@@ -696,11 +696,29 @@ components = ops.kg_WCC()
|
|
|
696
696
|
## FHIR Bridge
|
|
697
697
|
|
|
698
698
|
```python
|
|
699
|
+
from iris_vector_graph import get_kg_anchors, unified_clinical_pipeline, FHIRSearchTool
|
|
700
|
+
|
|
699
701
|
# Load ICD-10→MeSH mappings from UMLS MRCONSO
|
|
700
702
|
# python scripts/ingest/load_umls_bridges.py --mrconso /path/to/MRCONSO.RRF
|
|
701
703
|
|
|
704
|
+
# Resolve ICD-10 codes to KG node IDs
|
|
702
705
|
anchors = engine.get_kg_anchors(icd_codes=["J18.0", "E11.9"])
|
|
703
706
|
# → ["MeSH:D001996", "MeSH:D003924"] (filtered to nodes in KG)
|
|
707
|
+
|
|
708
|
+
# Full pipeline: FHIR patient → conditions → KG anchors → PPR → ranked results
|
|
709
|
+
result = unified_clinical_pipeline(
|
|
710
|
+
engine=engine,
|
|
711
|
+
query="pneumonia elderly",
|
|
712
|
+
fhir_base_url="http://localhost:8080/fhir",
|
|
713
|
+
patient_id="maria-gonzalez-001",
|
|
714
|
+
)
|
|
715
|
+
# result["status"] → "ok"
|
|
716
|
+
# result["anchors"] → ["MeSH:D011014", "MeSH:D003924"]
|
|
717
|
+
# result["ppr_results"] → [{"node_id": "...", "score": 0.85}, ...]
|
|
718
|
+
|
|
719
|
+
# MCP-compatible tool for AI agents
|
|
720
|
+
tool = FHIRSearchTool(base_url="http://localhost:8080/fhir")
|
|
721
|
+
conditions = tool("patient-123") # → {"conditions": [...], "error": None}
|
|
704
722
|
```
|
|
705
723
|
|
|
706
724
|
---
|
|
@@ -1234,6 +1252,21 @@ Four openCypher gaps closed, all from structured gap analysis against the openCy
|
|
|
1234
1252
|
|
|
1235
1253
|
## Changelog
|
|
1236
1254
|
|
|
1255
|
+
### v1.92.0 (2026-05-11)
|
|
1256
|
+
|
|
1257
|
+
**FHIR-KG Clinical Bridge** — new `iris_vector_graph.fhir_bridge` module bridges clinical patient data to the biomedical knowledge graph.
|
|
1258
|
+
|
|
1259
|
+
- `get_kg_anchors(engine, icd_codes)` — resolve ICD-10 codes to KG node IDs via `fhir_bridges` table
|
|
1260
|
+
- `extract_icd_codes(bundle)` — parse ICD-10 codes from FHIR Condition bundles
|
|
1261
|
+
- `fhir_search_conditions(url, patient_id)` — FHIR REST client (10s independent timeout, BasicAuth)
|
|
1262
|
+
- `unified_clinical_pipeline(engine, ...)` — full pipeline: FHIR → anchors → PPR → ranked results with provenance
|
|
1263
|
+
- `FHIRSearchTool` — MCP-compatible FHIR search wrapper for AI agents
|
|
1264
|
+
- `GetPatientKGNeighborhoodTool` — MCP-compatible patient → graph neighborhood tool
|
|
1265
|
+
- Cypher API: `POST /api/cypher` accepts optional `fhir_patient_id` + `fhir_base_url` — auto-resolves patient anchors into `$patient_anchors` parameter
|
|
1266
|
+
|
|
1267
|
+
**Bug fix:**
|
|
1268
|
+
- Duplicate key detection now catches IRIS's actual "failed unique check" error message (previously only checked for SQLCODE -119 and "duplicate" substring, which don't match)
|
|
1269
|
+
|
|
1237
1270
|
### v1.91.0 (2026-05-09)
|
|
1238
1271
|
|
|
1239
1272
|
**Engine-first architecture** — `IRISGraphOperators` is now a thin shim over `IRISGraphEngine`.
|
|
@@ -624,11 +624,29 @@ components = ops.kg_WCC()
|
|
|
624
624
|
## FHIR Bridge
|
|
625
625
|
|
|
626
626
|
```python
|
|
627
|
+
from iris_vector_graph import get_kg_anchors, unified_clinical_pipeline, FHIRSearchTool
|
|
628
|
+
|
|
627
629
|
# Load ICD-10→MeSH mappings from UMLS MRCONSO
|
|
628
630
|
# python scripts/ingest/load_umls_bridges.py --mrconso /path/to/MRCONSO.RRF
|
|
629
631
|
|
|
632
|
+
# Resolve ICD-10 codes to KG node IDs
|
|
630
633
|
anchors = engine.get_kg_anchors(icd_codes=["J18.0", "E11.9"])
|
|
631
634
|
# → ["MeSH:D001996", "MeSH:D003924"] (filtered to nodes in KG)
|
|
635
|
+
|
|
636
|
+
# Full pipeline: FHIR patient → conditions → KG anchors → PPR → ranked results
|
|
637
|
+
result = unified_clinical_pipeline(
|
|
638
|
+
engine=engine,
|
|
639
|
+
query="pneumonia elderly",
|
|
640
|
+
fhir_base_url="http://localhost:8080/fhir",
|
|
641
|
+
patient_id="maria-gonzalez-001",
|
|
642
|
+
)
|
|
643
|
+
# result["status"] → "ok"
|
|
644
|
+
# result["anchors"] → ["MeSH:D011014", "MeSH:D003924"]
|
|
645
|
+
# result["ppr_results"] → [{"node_id": "...", "score": 0.85}, ...]
|
|
646
|
+
|
|
647
|
+
# MCP-compatible tool for AI agents
|
|
648
|
+
tool = FHIRSearchTool(base_url="http://localhost:8080/fhir")
|
|
649
|
+
conditions = tool("patient-123") # → {"conditions": [...], "error": None}
|
|
632
650
|
```
|
|
633
651
|
|
|
634
652
|
---
|
|
@@ -1162,6 +1180,21 @@ Four openCypher gaps closed, all from structured gap analysis against the openCy
|
|
|
1162
1180
|
|
|
1163
1181
|
## Changelog
|
|
1164
1182
|
|
|
1183
|
+
### v1.92.0 (2026-05-11)
|
|
1184
|
+
|
|
1185
|
+
**FHIR-KG Clinical Bridge** — new `iris_vector_graph.fhir_bridge` module bridges clinical patient data to the biomedical knowledge graph.
|
|
1186
|
+
|
|
1187
|
+
- `get_kg_anchors(engine, icd_codes)` — resolve ICD-10 codes to KG node IDs via `fhir_bridges` table
|
|
1188
|
+
- `extract_icd_codes(bundle)` — parse ICD-10 codes from FHIR Condition bundles
|
|
1189
|
+
- `fhir_search_conditions(url, patient_id)` — FHIR REST client (10s independent timeout, BasicAuth)
|
|
1190
|
+
- `unified_clinical_pipeline(engine, ...)` — full pipeline: FHIR → anchors → PPR → ranked results with provenance
|
|
1191
|
+
- `FHIRSearchTool` — MCP-compatible FHIR search wrapper for AI agents
|
|
1192
|
+
- `GetPatientKGNeighborhoodTool` — MCP-compatible patient → graph neighborhood tool
|
|
1193
|
+
- Cypher API: `POST /api/cypher` accepts optional `fhir_patient_id` + `fhir_base_url` — auto-resolves patient anchors into `$patient_anchors` parameter
|
|
1194
|
+
|
|
1195
|
+
**Bug fix:**
|
|
1196
|
+
- Duplicate key detection now catches IRIS's actual "failed unique check" error message (previously only checked for SQLCODE -119 and "duplicate" substring, which don't match)
|
|
1197
|
+
|
|
1165
1198
|
### v1.91.0 (2026-05-09)
|
|
1166
1199
|
|
|
1167
1200
|
**Engine-first architecture** — `IRISGraphOperators` is now a thin shim over `IRISGraphEngine`.
|
|
@@ -24,6 +24,14 @@ from .dbapi_utils import (
|
|
|
24
24
|
create_ivfflat_index,
|
|
25
25
|
vector_similarity_search,
|
|
26
26
|
)
|
|
27
|
+
from .fhir_bridge import (
|
|
28
|
+
get_kg_anchors,
|
|
29
|
+
extract_icd_codes,
|
|
30
|
+
fhir_search_conditions,
|
|
31
|
+
unified_clinical_pipeline,
|
|
32
|
+
FHIRSearchTool,
|
|
33
|
+
GetPatientKGNeighborhoodTool,
|
|
34
|
+
)
|
|
27
35
|
|
|
28
36
|
try:
|
|
29
37
|
from .embedded import EmbeddedConnection, EmbeddedCursor
|
|
@@ -58,4 +66,10 @@ __all__ = [
|
|
|
58
66
|
"KHop2Input",
|
|
59
67
|
"TemporalEdgeInput",
|
|
60
68
|
"VecSearchInput",
|
|
69
|
+
"get_kg_anchors",
|
|
70
|
+
"extract_icd_codes",
|
|
71
|
+
"fhir_search_conditions",
|
|
72
|
+
"unified_clinical_pipeline",
|
|
73
|
+
"FHIRSearchTool",
|
|
74
|
+
"GetPatientKGNeighborhoodTool",
|
|
61
75
|
]
|
|
@@ -70,8 +70,8 @@ class BulkLoader:
|
|
|
70
70
|
if commit_per_batch:
|
|
71
71
|
self.conn.rollback()
|
|
72
72
|
err_str = str(e)
|
|
73
|
-
|
|
74
|
-
if "-119" in err_str or "
|
|
73
|
+
err_lower = err_str.lower()
|
|
74
|
+
if "-119" in err_str or "unique" in err_lower:
|
|
75
75
|
for row in batch:
|
|
76
76
|
try:
|
|
77
77
|
cursor.execute(sql, row)
|
|
@@ -95,6 +95,9 @@ class CypherRequest(BaseModel):
|
|
|
95
95
|
query: str
|
|
96
96
|
parameters: dict[str, Any] = Field(default_factory=dict)
|
|
97
97
|
limitRows: int = 1000
|
|
98
|
+
fhir_patient_id: str | None = None
|
|
99
|
+
fhir_base_url: str | None = None
|
|
100
|
+
fhir_auth: tuple[str, str] | list[str] | None = None
|
|
98
101
|
|
|
99
102
|
|
|
100
103
|
@app.websocket("/")
|
|
@@ -185,12 +188,37 @@ def health():
|
|
|
185
188
|
return {"status": "ok", "engine": False, "error": str(e)}
|
|
186
189
|
|
|
187
190
|
|
|
191
|
+
def _resolve_patient_anchors(req: CypherRequest) -> list[str]:
|
|
192
|
+
from iris_vector_graph.fhir_bridge import fhir_search_conditions, get_kg_anchors
|
|
193
|
+
|
|
194
|
+
fhir_url = req.fhir_base_url or os.environ.get("FHIR_BASE_URL", "")
|
|
195
|
+
if not fhir_url:
|
|
196
|
+
return []
|
|
197
|
+
auth = tuple(req.fhir_auth) if req.fhir_auth else None
|
|
198
|
+
fhir_result = fhir_search_conditions(
|
|
199
|
+
fhir_base_url=fhir_url,
|
|
200
|
+
patient_id=req.fhir_patient_id,
|
|
201
|
+
auth=auth,
|
|
202
|
+
)
|
|
203
|
+
if fhir_result["error"] or not fhir_result["conditions"]:
|
|
204
|
+
return []
|
|
205
|
+
icd_codes = [c["code"] for c in fhir_result["conditions"] if c.get("code")]
|
|
206
|
+
if not icd_codes:
|
|
207
|
+
return []
|
|
208
|
+
engine = _get_engine()
|
|
209
|
+
return get_kg_anchors(engine, icd_codes)
|
|
210
|
+
|
|
211
|
+
|
|
188
212
|
@app.post("/api/cypher")
|
|
189
213
|
def cypher_query(req: CypherRequest):
|
|
190
214
|
trace_id = str(uuid.uuid4())[:8]
|
|
191
215
|
t0 = time.time()
|
|
192
216
|
try:
|
|
193
|
-
|
|
217
|
+
params = dict(req.parameters)
|
|
218
|
+
if req.fhir_patient_id:
|
|
219
|
+
anchors = _resolve_patient_anchors(req)
|
|
220
|
+
params["patient_anchors"] = anchors
|
|
221
|
+
result = _run_cypher(req.query, params, req.limitRows)
|
|
194
222
|
duration = int((time.time() - t0) * 1000)
|
|
195
223
|
_log("POST", "/api/cypher", 200, duration, trace_id)
|
|
196
224
|
return result
|
|
@@ -891,7 +891,8 @@ class IRISGraphEngine:
|
|
|
891
891
|
except Exception:
|
|
892
892
|
pass
|
|
893
893
|
finally:
|
|
894
|
-
cursor
|
|
894
|
+
if hasattr(cursor, 'close'):
|
|
895
|
+
cursor.close()
|
|
895
896
|
|
|
896
897
|
def execute_cypher(
|
|
897
898
|
self, cypher_query: str, parameters: Dict[str, Any] = None,
|
|
@@ -2828,10 +2829,11 @@ class IRISGraphEngine:
|
|
|
2828
2829
|
return True
|
|
2829
2830
|
except Exception as e:
|
|
2830
2831
|
cursor.execute("ROLLBACK")
|
|
2832
|
+
err_lower = str(e).lower()
|
|
2831
2833
|
if (
|
|
2832
|
-
"
|
|
2834
|
+
"unique" in err_lower
|
|
2833
2835
|
or "-119" in str(e)
|
|
2834
|
-
or "validation failed" in
|
|
2836
|
+
or "validation failed" in err_lower
|
|
2835
2837
|
):
|
|
2836
2838
|
logger.debug(f"create_node skipped: {node_id}: {str(e)[:80]}")
|
|
2837
2839
|
else:
|
|
@@ -2863,7 +2865,8 @@ class IRISGraphEngine:
|
|
|
2863
2865
|
self.conn.commit()
|
|
2864
2866
|
except Exception as e:
|
|
2865
2867
|
self.conn.rollback()
|
|
2866
|
-
|
|
2868
|
+
err_lower = str(e).lower()
|
|
2869
|
+
if "unique" in err_lower or "-119" in str(e):
|
|
2867
2870
|
logger.debug(
|
|
2868
2871
|
f"create_edge duplicate: {source_id}-[{predicate}]->{target_id}"
|
|
2869
2872
|
)
|
|
@@ -6858,7 +6861,8 @@ class IRISGraphEngine:
|
|
|
6858
6861
|
)
|
|
6859
6862
|
self.conn.commit()
|
|
6860
6863
|
except Exception as e:
|
|
6861
|
-
|
|
6864
|
+
err_lower = str(e).lower()
|
|
6865
|
+
if "-119" not in str(e) and "duplicate" not in err_lower and "unique" not in err_lower:
|
|
6862
6866
|
raise
|
|
6863
6867
|
finally:
|
|
6864
6868
|
cursor.close()
|
|
@@ -6890,7 +6894,8 @@ class IRISGraphEngine:
|
|
|
6890
6894
|
)
|
|
6891
6895
|
self.conn.commit()
|
|
6892
6896
|
except Exception as e:
|
|
6893
|
-
|
|
6897
|
+
err_lower = str(e).lower()
|
|
6898
|
+
if "-119" not in str(e) and "duplicate" not in err_lower and "unique" not in err_lower:
|
|
6894
6899
|
raise
|
|
6895
6900
|
finally:
|
|
6896
6901
|
cursor3.close()
|
|
@@ -6909,7 +6914,8 @@ class IRISGraphEngine:
|
|
|
6909
6914
|
)
|
|
6910
6915
|
self.conn.commit()
|
|
6911
6916
|
except Exception as e:
|
|
6912
|
-
|
|
6917
|
+
err_lower = str(e).lower()
|
|
6918
|
+
if "-119" not in str(e) and "duplicate" not in err_lower and "unique" not in err_lower:
|
|
6913
6919
|
raise
|
|
6914
6920
|
finally:
|
|
6915
6921
|
cursor.close()
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
"""FHIR-to-KG Clinical Bridge.
|
|
2
|
+
|
|
3
|
+
Bridges clinical patient data (FHIR Conditions with ICD-10 codes) to the
|
|
4
|
+
biomedical knowledge graph (MeSH/MONDO identifiers) via the fhir_bridges table.
|
|
5
|
+
|
|
6
|
+
Core functions:
|
|
7
|
+
get_kg_anchors(engine, icd_codes) -> list[str]
|
|
8
|
+
unified_clinical_pipeline(engine, ...) -> dict
|
|
9
|
+
extract_icd_codes(bundle) -> list[str]
|
|
10
|
+
|
|
11
|
+
MCP tools:
|
|
12
|
+
FHIRSearchTool
|
|
13
|
+
GetPatientKGNeighborhoodTool
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
import json
|
|
17
|
+
import logging
|
|
18
|
+
from typing import Any, Optional
|
|
19
|
+
|
|
20
|
+
import requests
|
|
21
|
+
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
|
|
24
|
+
__all__ = [
|
|
25
|
+
"get_kg_anchors",
|
|
26
|
+
"extract_icd_codes",
|
|
27
|
+
"fhir_search_conditions",
|
|
28
|
+
"unified_clinical_pipeline",
|
|
29
|
+
"FHIRSearchTool",
|
|
30
|
+
"GetPatientKGNeighborhoodTool",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# ---------------------------------------------------------------------------
|
|
35
|
+
# US2: Query Patient KG Anchors
|
|
36
|
+
# ---------------------------------------------------------------------------
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def get_kg_anchors(engine: Any, icd_codes: list[str], bridge_type: str = "icd10_to_mesh") -> list[str]:
|
|
40
|
+
"""Resolve ICD-10 codes to KG node IDs via the fhir_bridges table.
|
|
41
|
+
|
|
42
|
+
Delegates to engine.get_kg_anchors() which performs the SQL JOIN
|
|
43
|
+
against Graph_KG.nodes to filter to only existing KG nodes.
|
|
44
|
+
|
|
45
|
+
Args:
|
|
46
|
+
engine: IRISGraphEngine instance
|
|
47
|
+
icd_codes: List of ICD-10-CM codes (e.g. ["E11.9", "I10"])
|
|
48
|
+
bridge_type: Bridge type filter (default "icd10_to_mesh")
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
List of KG node IDs that exist in Graph_KG.nodes.
|
|
52
|
+
Empty list if no codes provided, no bridges loaded, or no matches.
|
|
53
|
+
"""
|
|
54
|
+
if not icd_codes:
|
|
55
|
+
return []
|
|
56
|
+
result = engine.get_kg_anchors(icd_codes=icd_codes, bridge_type=bridge_type)
|
|
57
|
+
if not result:
|
|
58
|
+
logger.warning(
|
|
59
|
+
"get_kg_anchors returned empty for codes=%s — check fhir_bridges table is populated",
|
|
60
|
+
icd_codes,
|
|
61
|
+
)
|
|
62
|
+
return result
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# ---------------------------------------------------------------------------
|
|
66
|
+
# US3: FHIR Client Helpers
|
|
67
|
+
# ---------------------------------------------------------------------------
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def fhir_search_conditions(
|
|
71
|
+
fhir_base_url: str,
|
|
72
|
+
patient_id: str,
|
|
73
|
+
auth: Optional[tuple[str, str]] = None,
|
|
74
|
+
timeout: float = 10.0,
|
|
75
|
+
) -> dict:
|
|
76
|
+
"""Search FHIR server for Condition resources for a patient.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
fhir_base_url: Base URL of FHIR server (e.g. "http://localhost:8080/fhir")
|
|
80
|
+
patient_id: FHIR patient ID
|
|
81
|
+
auth: Optional (username, password) tuple for BasicAuth
|
|
82
|
+
timeout: Request timeout in seconds (default 10s, independent per spec)
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
dict with keys:
|
|
86
|
+
"conditions": list of condition dicts with "code", "system", "display"
|
|
87
|
+
"error": None on success, error message string on failure
|
|
88
|
+
"""
|
|
89
|
+
url = f"{fhir_base_url}/Condition?patient={patient_id}&_format=json"
|
|
90
|
+
try:
|
|
91
|
+
resp = requests.get(url, auth=auth, timeout=timeout)
|
|
92
|
+
resp.raise_for_status()
|
|
93
|
+
bundle = resp.json()
|
|
94
|
+
conditions = extract_icd_codes_from_bundle(bundle)
|
|
95
|
+
return {"conditions": conditions, "error": None}
|
|
96
|
+
except requests.exceptions.Timeout:
|
|
97
|
+
msg = f"FHIR request timed out after {timeout}s"
|
|
98
|
+
logger.warning(msg)
|
|
99
|
+
return {"conditions": [], "error": msg}
|
|
100
|
+
except requests.exceptions.ConnectionError as e:
|
|
101
|
+
msg = f"FHIR server unreachable: {e}"
|
|
102
|
+
logger.warning(msg)
|
|
103
|
+
return {"conditions": [], "error": msg}
|
|
104
|
+
except requests.exceptions.HTTPError as e:
|
|
105
|
+
msg = f"FHIR HTTP error: {e.response.status_code}"
|
|
106
|
+
logger.warning(msg)
|
|
107
|
+
return {"conditions": [], "error": msg}
|
|
108
|
+
except Exception as e:
|
|
109
|
+
msg = f"FHIR request failed: {e}"
|
|
110
|
+
logger.warning(msg)
|
|
111
|
+
return {"conditions": [], "error": msg}
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def extract_icd_codes(bundle: dict) -> list[str]:
|
|
115
|
+
"""Extract ICD-10-CM codes from a FHIR Condition bundle.
|
|
116
|
+
|
|
117
|
+
Looks for coding entries with system containing 'icd-10' or 'icd10'.
|
|
118
|
+
|
|
119
|
+
Args:
|
|
120
|
+
bundle: FHIR Bundle resource (JSON dict)
|
|
121
|
+
|
|
122
|
+
Returns:
|
|
123
|
+
List of ICD-10 code strings (deduplicated).
|
|
124
|
+
"""
|
|
125
|
+
codes: list[str] = []
|
|
126
|
+
entries = bundle.get("entry", [])
|
|
127
|
+
for entry in entries:
|
|
128
|
+
resource = entry.get("resource", {})
|
|
129
|
+
if resource.get("resourceType") != "Condition":
|
|
130
|
+
continue
|
|
131
|
+
code_obj = resource.get("code", {})
|
|
132
|
+
for coding in code_obj.get("coding", []):
|
|
133
|
+
system = (coding.get("system") or "").lower()
|
|
134
|
+
if "icd-10" in system or "icd10" in system:
|
|
135
|
+
code_val = coding.get("code")
|
|
136
|
+
if code_val and code_val not in codes:
|
|
137
|
+
codes.append(code_val)
|
|
138
|
+
return codes
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def extract_icd_codes_from_bundle(bundle: dict) -> list[dict]:
|
|
142
|
+
"""Extract structured condition info from a FHIR Condition bundle.
|
|
143
|
+
|
|
144
|
+
Returns richer structure than extract_icd_codes (which returns only code strings).
|
|
145
|
+
|
|
146
|
+
Args:
|
|
147
|
+
bundle: FHIR Bundle resource
|
|
148
|
+
|
|
149
|
+
Returns:
|
|
150
|
+
List of dicts with "code", "system", "display" keys.
|
|
151
|
+
"""
|
|
152
|
+
conditions: list[dict] = []
|
|
153
|
+
entries = bundle.get("entry", [])
|
|
154
|
+
for entry in entries:
|
|
155
|
+
resource = entry.get("resource", {})
|
|
156
|
+
if resource.get("resourceType") != "Condition":
|
|
157
|
+
continue
|
|
158
|
+
code_obj = resource.get("code", {})
|
|
159
|
+
for coding in code_obj.get("coding", []):
|
|
160
|
+
system = (coding.get("system") or "").lower()
|
|
161
|
+
if "icd-10" in system or "icd10" in system:
|
|
162
|
+
conditions.append({
|
|
163
|
+
"code": coding.get("code", ""),
|
|
164
|
+
"system": coding.get("system", ""),
|
|
165
|
+
"display": coding.get("display", ""),
|
|
166
|
+
})
|
|
167
|
+
return conditions
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
# ---------------------------------------------------------------------------
|
|
171
|
+
# US3: Unified Clinical Pipeline
|
|
172
|
+
# ---------------------------------------------------------------------------
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def unified_clinical_pipeline(
|
|
176
|
+
engine: Any,
|
|
177
|
+
query: str,
|
|
178
|
+
fhir_base_url: str,
|
|
179
|
+
patient_id: str,
|
|
180
|
+
fhir_auth: Optional[tuple[str, str]] = None,
|
|
181
|
+
top_k: int = 10,
|
|
182
|
+
ppr_top_k: int = 20,
|
|
183
|
+
fhir_timeout: float = 10.0,
|
|
184
|
+
) -> dict:
|
|
185
|
+
"""Run the full clinical-to-literature pipeline.
|
|
186
|
+
|
|
187
|
+
Pipeline steps:
|
|
188
|
+
1. Search FHIR for patient Conditions
|
|
189
|
+
2. Extract ICD-10 codes
|
|
190
|
+
3. Resolve codes to KG anchors via fhir_bridges
|
|
191
|
+
4. Run Personalized PageRank from anchor nodes
|
|
192
|
+
5. Return ranked results with provenance
|
|
193
|
+
|
|
194
|
+
Args:
|
|
195
|
+
engine: IRISGraphEngine instance
|
|
196
|
+
query: Clinical query string (for provenance/context)
|
|
197
|
+
fhir_base_url: FHIR server base URL
|
|
198
|
+
patient_id: FHIR patient ID
|
|
199
|
+
fhir_auth: Optional (username, password) for BasicAuth
|
|
200
|
+
top_k: Number of top vector search results (unused in current impl)
|
|
201
|
+
ppr_top_k: Number of PPR results to return
|
|
202
|
+
fhir_timeout: FHIR request timeout in seconds
|
|
203
|
+
|
|
204
|
+
Returns:
|
|
205
|
+
dict with keys:
|
|
206
|
+
status: "ok" | "no_fhir_conditions" | "no_bridges_loaded" |
|
|
207
|
+
"anchors_resolved_but_no_graph_connectivity"
|
|
208
|
+
anchors: list of KG node IDs
|
|
209
|
+
ppr_results: list of PPR-ranked nodes (empty if no connectivity)
|
|
210
|
+
fhir_conditions: list of condition dicts from FHIR
|
|
211
|
+
provenance: dict with pipeline step details
|
|
212
|
+
"""
|
|
213
|
+
result = {
|
|
214
|
+
"status": "ok",
|
|
215
|
+
"anchors": [],
|
|
216
|
+
"ppr_results": [],
|
|
217
|
+
"fhir_conditions": [],
|
|
218
|
+
"provenance": {"query": query, "patient_id": patient_id, "steps": []},
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
# Step 1: Fetch FHIR conditions
|
|
222
|
+
fhir_result = fhir_search_conditions(
|
|
223
|
+
fhir_base_url=fhir_base_url,
|
|
224
|
+
patient_id=patient_id,
|
|
225
|
+
auth=fhir_auth,
|
|
226
|
+
timeout=fhir_timeout,
|
|
227
|
+
)
|
|
228
|
+
result["provenance"]["steps"].append({"step": "fhir_search", "error": fhir_result["error"]})
|
|
229
|
+
|
|
230
|
+
if fhir_result["error"]:
|
|
231
|
+
result["status"] = "fhir_error"
|
|
232
|
+
result["provenance"]["fhir_error"] = fhir_result["error"]
|
|
233
|
+
return result
|
|
234
|
+
|
|
235
|
+
result["fhir_conditions"] = fhir_result["conditions"]
|
|
236
|
+
|
|
237
|
+
# Step 2: Extract ICD-10 codes
|
|
238
|
+
icd_codes = [c["code"] for c in fhir_result["conditions"] if c.get("code")]
|
|
239
|
+
result["provenance"]["steps"].append({"step": "extract_icd_codes", "codes": icd_codes})
|
|
240
|
+
|
|
241
|
+
if not icd_codes:
|
|
242
|
+
result["status"] = "no_fhir_conditions"
|
|
243
|
+
return result
|
|
244
|
+
|
|
245
|
+
# Step 3: Resolve to KG anchors
|
|
246
|
+
anchors = get_kg_anchors(engine, icd_codes)
|
|
247
|
+
result["anchors"] = anchors
|
|
248
|
+
result["provenance"]["steps"].append({"step": "get_kg_anchors", "anchors": anchors})
|
|
249
|
+
|
|
250
|
+
if not anchors:
|
|
251
|
+
result["status"] = "no_bridges_loaded"
|
|
252
|
+
return result
|
|
253
|
+
|
|
254
|
+
# Step 4: Run PPR from anchors
|
|
255
|
+
try:
|
|
256
|
+
ppr_results = engine.kg_PERSONALIZED_PAGERANK(
|
|
257
|
+
seed_entities=anchors,
|
|
258
|
+
top_k=ppr_top_k,
|
|
259
|
+
)
|
|
260
|
+
result["ppr_results"] = ppr_results
|
|
261
|
+
result["provenance"]["steps"].append({"step": "ppr", "result_count": len(ppr_results)})
|
|
262
|
+
|
|
263
|
+
if not ppr_results:
|
|
264
|
+
result["status"] = "anchors_resolved_but_no_graph_connectivity"
|
|
265
|
+
except Exception as e:
|
|
266
|
+
logger.warning(f"PPR failed: {e}")
|
|
267
|
+
result["status"] = "anchors_resolved_but_no_graph_connectivity"
|
|
268
|
+
result["provenance"]["steps"].append({"step": "ppr", "error": str(e)})
|
|
269
|
+
|
|
270
|
+
return result
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
# ---------------------------------------------------------------------------
|
|
274
|
+
# US4: FHIR Search Tool (MCP-compatible)
|
|
275
|
+
# ---------------------------------------------------------------------------
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
class FHIRSearchTool:
|
|
279
|
+
"""MCP-compatible tool that searches a FHIR server for patient data.
|
|
280
|
+
|
|
281
|
+
Wraps FHIR REST API details (pagination, auth, resource parsing) so
|
|
282
|
+
AI agents don't need to know FHIR internals.
|
|
283
|
+
"""
|
|
284
|
+
|
|
285
|
+
name = "fhir_search_conditions"
|
|
286
|
+
description = (
|
|
287
|
+
"Search a FHIR server for patient Condition resources. "
|
|
288
|
+
"Returns structured list of conditions with ICD-10 codes."
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
def __init__(
|
|
292
|
+
self,
|
|
293
|
+
base_url: str,
|
|
294
|
+
auth: Optional[tuple[str, str]] = None,
|
|
295
|
+
timeout: float = 10.0,
|
|
296
|
+
):
|
|
297
|
+
self.base_url = base_url
|
|
298
|
+
self.auth = auth
|
|
299
|
+
self.timeout = timeout
|
|
300
|
+
|
|
301
|
+
def __call__(self, patient_id: str) -> dict:
|
|
302
|
+
"""Execute the tool.
|
|
303
|
+
|
|
304
|
+
Args:
|
|
305
|
+
patient_id: FHIR patient ID to search conditions for.
|
|
306
|
+
|
|
307
|
+
Returns:
|
|
308
|
+
dict with "conditions" list and "error" (None on success).
|
|
309
|
+
"""
|
|
310
|
+
return fhir_search_conditions(
|
|
311
|
+
fhir_base_url=self.base_url,
|
|
312
|
+
patient_id=patient_id,
|
|
313
|
+
auth=self.auth,
|
|
314
|
+
timeout=self.timeout,
|
|
315
|
+
)
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
# ---------------------------------------------------------------------------
|
|
319
|
+
# US5: Patient Graph Neighborhood Tool (MCP-compatible)
|
|
320
|
+
# ---------------------------------------------------------------------------
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
class GetPatientKGNeighborhoodTool:
|
|
324
|
+
"""MCP-compatible tool: patient_id -> conditions -> anchors -> PPR neighborhood.
|
|
325
|
+
|
|
326
|
+
Python equivalent of CareConnect's GetPatientGraphNeighborhood ObjectScript tool.
|
|
327
|
+
"""
|
|
328
|
+
|
|
329
|
+
name = "get_patient_kg_neighborhood"
|
|
330
|
+
description = (
|
|
331
|
+
"Get the knowledge graph neighborhood for a patient. "
|
|
332
|
+
"Chains: patient → FHIR Conditions → ICD codes → KG anchors → PPR walk → ranked concepts."
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
def __init__(
|
|
336
|
+
self,
|
|
337
|
+
engine: Any,
|
|
338
|
+
fhir_base_url: str,
|
|
339
|
+
fhir_auth: Optional[tuple[str, str]] = None,
|
|
340
|
+
fhir_timeout: float = 10.0,
|
|
341
|
+
ppr_top_k: int = 20,
|
|
342
|
+
):
|
|
343
|
+
self.engine = engine
|
|
344
|
+
self.fhir_base_url = fhir_base_url
|
|
345
|
+
self.fhir_auth = fhir_auth
|
|
346
|
+
self.fhir_timeout = fhir_timeout
|
|
347
|
+
self.ppr_top_k = ppr_top_k
|
|
348
|
+
|
|
349
|
+
def __call__(self, patient_id: str) -> dict:
|
|
350
|
+
"""Execute the tool.
|
|
351
|
+
|
|
352
|
+
Args:
|
|
353
|
+
patient_id: FHIR patient ID.
|
|
354
|
+
|
|
355
|
+
Returns:
|
|
356
|
+
dict with "anchors", "ppr_results", "status".
|
|
357
|
+
"""
|
|
358
|
+
return unified_clinical_pipeline(
|
|
359
|
+
engine=self.engine,
|
|
360
|
+
query=f"patient_neighborhood:{patient_id}",
|
|
361
|
+
fhir_base_url=self.fhir_base_url,
|
|
362
|
+
patient_id=patient_id,
|
|
363
|
+
fhir_auth=self.fhir_auth,
|
|
364
|
+
ppr_top_k=self.ppr_top_k,
|
|
365
|
+
fhir_timeout=self.fhir_timeout,
|
|
366
|
+
)
|
|
@@ -362,7 +362,8 @@ CREATE INDEX idx_edges_confidence ON Graph_KG.rdf_edges(JSON_VALUE(qualifiers, '
|
|
|
362
362
|
)
|
|
363
363
|
return True
|
|
364
364
|
except Exception as e:
|
|
365
|
-
|
|
365
|
+
err_lower = str(e).lower()
|
|
366
|
+
if "already exists" in err_lower or "duplicate" in err_lower or "unique" in err_lower:
|
|
366
367
|
return True
|
|
367
368
|
return False
|
|
368
369
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "iris-vector-graph"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.92.0"
|
|
8
8
|
description = "Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -548,16 +548,14 @@ class TestNewEngineAPIs:
|
|
|
548
548
|
def test_get_node_name_returns_name_property(self):
|
|
549
549
|
eng = self._make_engine()
|
|
550
550
|
eng.get_node = MagicMock(return_value={
|
|
551
|
-
"id": "n1", "labels": ["Gene"],
|
|
552
|
-
"properties": {"name": "TP53", "symbol": "tp53"}
|
|
551
|
+
"id": "n1", "labels": ["Gene"], "name": "TP53", "symbol": "tp53"
|
|
553
552
|
})
|
|
554
553
|
assert eng.get_node_name("n1") == "TP53"
|
|
555
554
|
|
|
556
555
|
def test_get_node_name_falls_back_to_label(self):
|
|
557
556
|
eng = self._make_engine()
|
|
558
557
|
eng.get_node = MagicMock(return_value={
|
|
559
|
-
"id": "n1", "labels": [],
|
|
560
|
-
"properties": {"label": "MyLabel"}
|
|
558
|
+
"id": "n1", "labels": [], "label": "MyLabel"
|
|
561
559
|
})
|
|
562
560
|
assert eng.get_node_name("n1") == "MyLabel"
|
|
563
561
|
|
|
@@ -569,10 +567,10 @@ class TestNewEngineAPIs:
|
|
|
569
567
|
def test_get_node_properties_returns_dict(self):
|
|
570
568
|
eng = self._make_engine()
|
|
571
569
|
eng.get_node = MagicMock(return_value={
|
|
572
|
-
"id": "n1", "
|
|
570
|
+
"id": "n1", "labels": [], "name": "Alice", "age": "30"
|
|
573
571
|
})
|
|
574
572
|
props = eng.get_node_properties("n1")
|
|
575
|
-
assert props
|
|
573
|
+
assert props["name"] == "Alice" and props["age"] == "30"
|
|
576
574
|
|
|
577
575
|
def test_get_nodes_by_ids_delegates_to_get_nodes(self):
|
|
578
576
|
eng = self._make_engine()
|