Skip to main content

iris-vector-graph

Turn InterSystems IRIS into a graph + vector database — openCypher queries, HNSW/BM25 hybrid search, temporal property graph, RDF/SHACL/PROV-O semantic layer, and Neo4j Bolt protocol compatibility.

PyPI Python 3.10+ IRIS 2024.1+ License: MIT


Getting Started

Five minutes from zero to running graph queries.

1. Start IRIS

docker compose up -d

Starts IRIS Community Edition on localhost:1972. No license required. Default credentials: _SYSTEM / SYS.

2. Install

pip install iris-vector-graph

3. Run your first query

import iris
from iris_vector_graph.engine import IRISGraphEngine

conn = iris.connect("localhost", 1972, "USER", "_SYSTEM", "SYS")
engine = IRISGraphEngine(conn, embedding_dimension=768)
engine.initialize_schema()

engine.create_node("alice", labels=["Person"], properties={"name": "Alice"})
engine.create_node("bob",   labels=["Person"], properties={"name": "Bob"})
engine.create_edge("alice", "KNOWS", "bob")

result = engine.execute_cypher(
    "MATCH (a {node_id:$id})-[:KNOWS]->(b) RETURN b.name AS name",
    {"id": "alice"}
)
print(result["rows"])  # [('Bob',)]

Note: initialize_schema() prints compile warnings on Community Edition — safe to ignore. Enterprise-only classes (Graph.KG.MCPService, Graph.KG.MCPToolSet) are not required.


What It Does

Feature Notes
openCypher MATCH, CREATE, MERGE, DELETE, WITH, UNWIND, variable-length paths, subqueries
Temporal property graph Time-windowed edges, pre-aggregated bucket analytics, O(1) window queries
Vector search HNSW (native IRIS VECTOR), IVFFlat, PLAID multi-vector, BM25 full-text
Graph analytics Betweenness, closeness, eigenvector, degree centrality; Leiden community detection; SCC; k-core; PPR
Shortest path Unweighted BFS (shortestPath), weighted Dijkstra (ivg.shortestPath.weighted)
NKG fast-path [*1..N] Cypher patterns route to integer-keyed ^NKG index, bypassing SQL translation
Bulk loader 190–312K edges/s direct ^KG write; incremental ^NKG rebuild
FHIR bridge ICD-10 → knowledge graph mapping via FHIR R4
Bolt protocol neo4j-driver compatible wire protocol (TCP + WebSocket)
Embedded Python Graph algorithms run server-side via IRIS embedded Python (igraph, leidenalg)
IPM / ZPM ObjectScript-only install via InterSystems Package Manager
RDF export export_rdf() — full or filtered graph to Turtle/NT/NQuads/JSON-LD
SHACL validation validate_shacl() — SHACL Core via PySHACL; ValidationReport dataclass
PROV-O prov_export() — temporal edges as W3C PROV-O provenance graph

Performance

Hardware: M3 Ultra, Community IRIS 2026.1, ARM64 Docker.

Query latency

Query Latency Notes
1-hop neighbor lookup ~0.4ms $Order on ^KG
NKG fast-path [*1..N], hops 2–5 1.4–2.0ms 4.9–13.4x faster than SQL path
IC3 2-hop with LIMIT (LDBC SF10) 1.2ms 3.5x faster than GES/GraphScope
IC13 shortest path (LDBC SF10) 2.1–3.2ms Comparable to GES at SF1000 on cluster
HNSW vector search (768-dim) 1.7ms Native IRIS VECTOR index
BM25 full-text (174 nodes, 3-term) 0.3ms Posting-list $Order
Temporal window query 0.1ms O(results), B-tree
Pre-aggregated bucket (24hr/288 buckets) 0.16ms O(buckets), not O(edges)

Algorithm comparison (vs Neo4j GDS and networkx)

IVG is competitive with or faster than Neo4j GDS on degree centrality, betweenness, and Leiden community detection, producing results identical to networkx (Pearson r = 1.0). Validated on DRKG biomedical KG (~97K nodes / ~5.9M edges).

Full methodology and numbers: docs/performance/BENCHMARKS.md and docs/performance/GRAPH_ALGORITHMS.md.


Architecture

┌─────────────────────────────────────────────────────────────────────┐
│                    iris-vector-graph  v2.1.0                        │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   ┌───────────────┐   ┌───────────────┐   ┌───────────────────┐    │
│   │  Python SDK   │   │  Cypher/AQL   │   │   Bolt (wire)     │    │
│   │  IRISGraph    │   │  translator   │   │   neo4j-driver    │    │
│   │  Engine       │   │  + executor   │   │   compatible      │    │
│   └───────┬───────┘   └───────┬───────┘   └────────┬──────────┘    │
│           └──────────────┬────┘                    │               │
│                          ▼                          │               │
│             ┌────────────────────────┐              │               │
│             │   GraphStore protocol  │◄─────────────┘               │
│             │   (pluggable backend)  │                              │
│             └───────────┬────────────┘                              │
│                         │                                           │
│          ┌──────────────┼──────────────┐                           │
│          ▼              ▼              ▼                            │
│   ┌─────────────┐ ┌──────────┐ ┌───────────────┐                  │
│   │  SQL layer  │ │  ^KG     │ │  ^NKG         │                  │
│   │  Graph_KG.* │ │  globals │ │  integer adj  │                  │
│   │  (nodes,    │ │  (edges, │ │  index        │                  │
│   │   edges,    │ │   temp,  │ └───────┬───────┘                  │
│   │   vectors)  │ │   PPR)   │         │                          │
│   └─────────────┘ └──────────┘         │                          │
│                                         ▼                          │
│                              ┌────────────────────┐               │
│                              │  Algorithm tiers   │               │
│                              ├────────────────────┤               │
│                              │ 1. Rust accelerator│ ← fastest     │
│                              │    (rayon parallel)│               │
│                              │ 2. ObjectScript    │               │
│                              │    parallel 8×     │               │
│                              │ 3. Python LazyKG   │ ← always works│
│                              └────────────────────┘               │
│                                                                     │
│   Centrality:  betweenness (Brandes) · closeness · eigenvector     │
│                degree                                              │
│   Community:   Leiden · triangle count · SCC · k-core             │
│   Search:      vector (HNSW/IVF/PLAID) · BM25 · temporal · PPR   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Full schema and ObjectScript class reference: docs/architecture/ARCHITECTURE.md.


Semantic Layer (RDF / SHACL / PROV-O)

pip install 'iris-vector-graph[rdf]'
# Export graph as Turtle (full or filtered)
engine.export_rdf("kg.ttl")
engine.export_rdf("proteins.nt", format="nt", label_filter=["Protein", "Disease"])
engine.export_rdf_from_cypher("MATCH (p:Patient)-[r]->(e) RETURN p,r,e", "patients.ttl")

# Persistent namespace prefixes
engine.register_namespace("fhir", "http://hl7.org/fhir/")

# SHACL Core validation
report = engine.validate_shacl("shapes/patient.ttl")
if not report.conforms:
    for v in report.violations:
        print(f"{v.focus_node}: {v.message} [{v.severity}]")

# PROV-O temporal provenance
engine.prov_export("provenance.ttl", ts_start=1700000000)
prov = engine.prov_as_dict(edge_id=42)

Every write to ivg is stored as W3C-aligned SPO triples (rdf_edges, rdf_props, rdf_labels) with OWL 2 RL inference, named graph support, and RDF-star style edge qualifiers. See docs/SEMANTIC_LAYER.md for the full guide: format reference, SHACL shape writing, PROV-O vocabulary mapping, and integration patterns.


Documentation

Document Contents
User Guide Cypher examples, temporal edges, vector search, bulk loader
Admin Guide Container setup, schema management, index rebuilding
Admin API Python API reference for engine administration
Benchmarks Full methodology, LDBC SNB results, ingestion throughput
Graph Algorithms Centrality and community detection benchmark details
Semantic Layer RDF export, SHACL validation, PROV-O provenance
Changelog Full version history

AI Agent Development

When building agents that use IVG as a knowledge graph backend, install the iris-agentic-dev MCP toolkit for ObjectScript compilation, global inspection, and IRIS method invocation from your agent's tool loop:

pip install iris-agentic-dev

This gives your agent iris_compile, iris_execute, iris_global, and related tools that work alongside IVG's Python API.

Skill files with agent-oriented quickstarts:


License

MIT. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iris_vector_graph-2.4.8.tar.gz (30.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iris_vector_graph-2.4.8-py3-none-any.whl (313.2 kB view details)

Uploaded Python 3

File details

Details for the file iris_vector_graph-2.4.8.tar.gz.

File metadata

  • Download URL: iris_vector_graph-2.4.8.tar.gz
  • Upload date:
  • Size: 30.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for iris_vector_graph-2.4.8.tar.gz
Algorithm Hash digest
SHA256 7ab763aaeafa86d3c7a94349a9f8cc831ad063890d3bc4b2d00f324f0f0e943f
MD5 02b15a0a55c0c00e84a1203a885b0cc1
BLAKE2b-256 ed62652eadc43ce9666ebfdda423580393fb98fa335cbbea03ded29c22bb8479

See more details on using hashes here.

File details

Details for the file iris_vector_graph-2.4.8-py3-none-any.whl.

File metadata

File hashes

Hashes for iris_vector_graph-2.4.8-py3-none-any.whl
Algorithm Hash digest
SHA256 08b43acffbd20902f6e3b985db167a5c4eaa9ef1e4df61a62c53d01f8333858d
MD5 59754b2b0011e9c88d98484632ba4e41
BLAKE2b-256 7729ba78b49783ea350f33944fa93f561b90e0127193d940a4f97e2486d0775d

See more details on using hashes here.

Release history Release notifications | RSS feed

2.7.0

2 files

2.5.1

2 files

2.5.0

2 files

This release

2.4.8 This release

2 files

2.4.6

2 files

2.4.5

2 files

2.4.3

2 files

2.4.2

2 files

2.4.1

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

2.1.1

2 files

2.0.0

2 files

1.99.3

2 files

1.99.2

2 files

1.99.1

2 files

1.99.0

2 files

1.98.0

2 files

1.97.10

1 file

1.97.9

1 file

1.97.8

1 file

1.97.7

1 file

1.97.6

1 file

1.97.5

1 file

1.97.4

1 file

1.97.3

1 file

1.97.2

1 file

1.97.0

1 file

1.96.2

1 file

1.96.1

1 file

1.96.0

1 file

1.95.0

2 files

1.94.0

2 files

1.93.0

2 files

1.92.2

2 files

1.92.1

2 files

1.92.0

2 files

1.91.4

2 files

1.91.3

2 files

1.91.2

2 files

1.91.1

2 files

1.91.0

1 file

1.90.1

2 files

1.90.0

2 files

1.89.0

2 files

1.88.0

2 files

1.87.0

2 files

1.86.0

2 files

1.85.0

2 files

1.84.0

2 files

1.83.0

2 files

1.82.0

2 files

1.81.0

1 file

1.80.5

2 files

1.80.4

2 files

1.80.3

2 files

1.80.2

2 files

1.80.1

2 files

1.80.0

2 files

1.79.0

2 files

1.78.0

2 files

1.77.0

2 files

1.76.0

2 files

1.75.0

2 files

1.74.0

2 files

1.73.0

2 files

1.72.0

2 files

1.71.0

2 files

1.70.0

2 files

1.69.0

2 files

1.68.0

2 files

1.67.1

2 files

1.67.0

2 files

1.66.5

2 files

1.66.4

2 files

1.66.3

2 files

1.66.2

2 files

1.66.1

2 files

1.66.0

2 files

1.65.4

2 files

1.65.3

2 files

1.65.2

2 files

1.65.1

2 files

1.65.0

2 files

1.64.9

2 files

1.64.8

2 files

1.64.7

2 files

1.64.6

2 files

1.64.5

2 files

1.64.4

2 files

1.64.3

2 files

1.64.2

2 files

1.64.1

2 files

1.64.0

2 files

1.63.6

2 files

1.63.5

2 files

1.63.4

2 files

1.63.3

2 files

1.63.2

2 files

1.63.1

2 files

1.63.0

2 files

1.62.1

2 files

1.62.0

2 files

1.61.1

2 files

1.61.0

2 files

1.60.0

2 files

1.59.2

2 files

1.59.1

2 files

1.59.0

2 files

1.58.1

2 files

1.58.0

2 files

1.57.0

2 files

1.56.0

2 files

1.55.3

2 files

1.55.2

2 files

1.55.1

2 files

1.55.0

2 files

1.54.2

2 files

1.54.1

2 files

1.54.0

2 files

1.53.1

2 files

1.53.0

2 files

1.52.1

2 files

1.52.0

2 files

1.51.1

2 files

1.51.0

2 files

1.50.2

2 files

1.50.1

2 files

1.50.0

2 files

1.49.0

2 files

1.48.0

2 files

1.47.1

2 files

1.47.0

2 files

1.46.0

2 files

1.45.3

2 files

1.45.2

2 files

1.45.1

2 files

1.45.0

2 files

1.44.0

2 files

1.43.0

2 files

1.42.0

2 files

1.41.0

2 files

1.40.0

2 files

1.39.0

2 files

1.38.0

2 files

1.37.0

2 files

1.36.0

2 files

1.35.0

2 files

1.34.0

2 files

1.33.0

2 files

1.32.0

2 files

1.31.0

2 files

1.30.0

2 files

1.29.0

2 files

1.28.0

2 files

1.27.0

2 files

1.26.4

2 files

1.26.3

2 files

1.26.2

2 files

1.26.1

2 files

1.26.0

2 files

1.25.1

2 files

1.25.0

2 files

1.24.1

2 files

1.24.0

2 files

1.23.0

2 files

1.22.1

2 files

1.22.0

2 files

1.21.1

2 files

1.21.0

2 files

1.20.2

2 files

1.20.1

2 files

1.20.0

2 files

1.19.2

2 files

1.19.1

2 files

1.19.0

2 files

1.18.0

2 files

1.17.0

2 files

1.16.2

2 files

1.16.1

2 files

1.16.0

2 files

1.15.0

2 files

1.14.1

2 files

1.14.0

2 files

1.13.1

2 files

1.13.0

2 files

1.12.0

2 files

1.11.0

2 files

1.10.2

2 files

1.10.1

2 files

1.10.0

2 files

1.9.0

2 files

1.8.2

2 files

1.8.1

2 files

1.8.0

2 files

1.7.0

2 files

1.6.5

2 files

1.6.4

2 files

1.6.3

2 files

1.6.2

2 files

1.6.1

2 files

1.6.0

2 files

1.5.4

2 files

1.5.3

2 files

1.5.2

2 files

1.5.1

2 files

1.5.0

2 files

1.4.9

2 files

1.4.8

2 files

1.4.7

2 files

1.4.6

2 files

1.4.5

2 files

1.4.4

2 files

1.4.3

2 files

1.4.1

2 files

1.4.0

2 files

1.3.4

2 files

1.3.3

2 files

1.3.2

2 files

1.3.1

2 files

1.3.0

2 files

1.2.0

2 files

1.1.9

2 files

1.1.8

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page