Skip to main content

A Python hypergraph library with provenance and SQLite persistence.

Project description

Hypabase

CI PyPI Python License Downloads

A Python hypergraph library with provenance and SQLite persistence.

Install

uv add hypabase

Quick example

from hypabase import Hypabase

hb = Hypabase("my.db")

# One edge connecting five entities
hb.edge(
    ["dr_smith", "patient_123", "aspirin", "headache", "mercy_hospital"],
    type="treatment",
    source="clinical_records",
    confidence=0.95,
)

# Query edges involving a node
hb.edges(containing=["patient_123"])

# Find paths between entities
hb.paths("dr_smith", "mercy_hospital")

Features

  • Hyperedges — an edge connects 2+ nodes in a single relationship
  • Provenance — every edge carries source and confidence
  • SQLite persistence — data persists to a local file automatically
  • O(1) vertex-set lookup — find edges by their exact node set
  • Namespace isolation.database("name") for scoped views in a single file
  • Provenance queries — filter by source and min_confidence, summarize with sources()
  • MCP server — 14 tools + 2 resources for AI agent integration
  • CLIhypabase init, hypabase node, hypabase edge, hypabase query

Provenance

Every edge carries source and confidence:

hb.edge(
    ["patient_123", "aspirin", "ibuprofen"],
    type="drug_interaction",
    source="clinical_decision_support_v3",
    confidence=0.92,
)

# Bulk provenance via context manager
with hb.context(source="schema_analysis", confidence=0.9):
    hb.edge(["a", "b"], type="fk")
    hb.edge(["b", "c"], type="fk")

# Query by provenance
hb.edges(source="clinical_decision_support_v3")
hb.edges(min_confidence=0.9)

# Overview of all sources
hb.sources()

Namespace isolation

Isolate data into separate namespaces within a single file:

hb = Hypabase("knowledge.db")

drugs = hb.database("drugs")
sessions = hb.database("sessions")

drugs.node("aspirin", type="drug")
sessions.node("s1", type="session")

drugs.nodes()     # -> [aspirin]
sessions.nodes()  # -> [s1]

What is a hypergraph?

In a regular graph, an edge connects exactly two nodes. In a hypergraph, a single edge — called a hyperedge — can connect any number of nodes at once.

Consider a medical event: Dr. Smith prescribes aspirin to Patient 123 for a headache at Mercy Hospital. In a traditional graph, you'd split this into binary edges — doctor-patient, doctor-drug, patient-hospital — and the fact that they belong to one event becomes an inference, not a structure. A hypergraph stores this natively: one edge connecting all five entities.

This matters because real-world relationships often involve more than two things. A paper has three or four authors, not one. A transaction involves a buyer, a seller, a product, and a payment method. A chemical reaction has reagents and products on both sides. Forcing these into pairs means the grouping becomes implicit.

Why provenance?

When relationships come from different sources — manual entry, LLM extraction, sensor data, clinical records — you need to know where each one came from and how much you trust it. Hypabase tracks this with two fields on every edge: source (a string identifying the origin) and confidence (a float from 0 to 1). You can filter queries by these fields and get a summary of all sources in your graph with hb.sources().

Where hypergraphs show up

  • Knowledge graphs — representing complex real-world relationships without decomposition
  • Agent memory — structured, queryable memory for AI agents that persists across sessions
  • Biomedical data — drug interactions, clinical events, molecular pathways
  • RAG pipelines — storing extracted relationships for retrieval-augmented generation
  • Supply chains, collaboration networks, and anywhere relationships involve more than two things

The broader idea has roots in AI research going back to OpenCog's AtomSpace, which uses hypergraph-like structures to represent knowledge for AGI. More recent work applies hypergraphs specifically to retrieval and reasoning:

MCP server

Hypabase includes an MCP server with 14 tools and 2 resources so AI agents can use it as structured memory. Works with Claude Code, Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.

uv add hypabase[mcp]
hypabase mcp

CLI

uv add hypabase[cli]
hypabase init
hypabase node dr_smith --type doctor
hypabase edge dr_smith patient_123 aspirin --type treatment --source clinical_records
hypabase query --containing dr_smith
hypabase stats

Documentation

docs.hypabase.app

License

Apache 2.0

Project details


Download files

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

Source Distribution

hypabase-0.1.1.tar.gz (187.9 kB view details)

Uploaded Source

Built Distribution

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

hypabase-0.1.1-py3-none-any.whl (44.3 kB view details)

Uploaded Python 3

File details

Details for the file hypabase-0.1.1.tar.gz.

File metadata

  • Download URL: hypabase-0.1.1.tar.gz
  • Upload date:
  • Size: 187.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hypabase-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5d18bd1637a019affc17393fcd2a5aa83473b6e5bc7b206096f63d9f14201372
MD5 8433cacb081b63656859bfe7be0b2271
BLAKE2b-256 c797c2e5c7ec3b09114fb4e8cc66bdad98818e247e6717d7af9a33088f3013a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for hypabase-0.1.1.tar.gz:

Publisher: release.yml on hypabase/hypabase

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hypabase-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: hypabase-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 44.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hypabase-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e68b192d6c30a0697035044bb9b1c4caf49c201a67d02f520ab08f29047bdf05
MD5 b6db6df01e4f96f2366d98c6f6dea34a
BLAKE2b-256 d203c9adb558ddfc4ca1e3b19b1401b9e0810f72d41036660dfa04b125ab55f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for hypabase-0.1.1-py3-none-any.whl:

Publisher: release.yml on hypabase/hypabase

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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