Skip to main content

omnigraph

Unified Python interface for multiple graph databases

PyPi PyPI Status License pypi format downloads
GitHub Github Actions Build Release Contributors Last Commit GitHub issues GitHub closed issues
Code style-black imports-isort
Docs API Docs formatter-docformatter style-google
Cite DOI

Cite as

If you use pyomnigraph in your research, please cite it via its Zenodo concept DOI (which always resolves to the latest version):

Fahl, W. pyomnigraph — Unified Python interface for multiple graph databases. Zenodo. https://doi.org/10.5281/zenodo.21721772

Machine-readable metadata is available in CITATION.cff; GitHub's "Cite this repository" button and Zenodo pick it up automatically. For a specific release, use the version DOI shown on the corresponding Zenodo record.

Docs and Tutorials

Wiki

Motivation

The graph database landscape is fragmented, with each triple store having its own APIs, deployment methods, and operational quirks. Developers and researchers working with RDF data often need to:

  • Switch between different triple stores for performance comparisons
  • Migrate data from one system to another
  • Test the same queries across multiple backends
  • Deploy applications that work with various graph databases

This leads to:

  • ❌ Duplicated effort writing database-specific code
  • ❌ Vendor lock-in making migrations difficult
  • ❌ Inconsistent interfaces slowing development
  • ❌ Manual deployment processes for each database

pyomnigraph solves this by providing:

  • ✅ Unified API - Same Python interface for all supported databases
  • ✅ Standardized deployment - Consistent Docker-based setup
  • ✅ Easy switching - Change backends with a single parameter
  • ✅ Comparative testing - Run identical operations across multiple stores
  • ✅ Simplified management - Start, stop, load data with simple commands

Supported Triple Stores

Database Status Notes
AllegroGraph 🟢 Working Multi-model, entity-event knowledge graphs, no license file needed
Blazegraph 🟢 Working High performance, easy setup
GraphDB 🟢 Working Enterprise features and reasoning; runs on the free image, empty ruleset
Apache Jena 🟢 Working Robust, standards compliant
MillenniumDB 🟢 Working Property Graph + RDF, build-only: the store is produced by mdb import before it can serve
Oxigraph 🟢 Working Rust-based, embedded, fast
QLever 🟢 Working Extremely fast queries
Virtuoso 🟢 Working Mature, SPARQL and SQL over one engine, reasoning and inference, fine grained attribute based access control, SPARQL via SQL
Stardog 🛑 Disabled License required, knowledge graphs and reasoning

Whether you're building a semantic web application, conducting research, or evaluating different triple stores, pyomnigraph eliminates the complexity of working with multiple graph database systems.

Examples

omnigraph --list --include-inactive --doc-format github
Active Name Container Name Wikidata Image Port Test Port Dataset User
🟢️ allegrograph allegrograph-omnigraph Q4731408 franzinc/agraph:latest 10035 10535 omnigraph admin
🟢️ blazegraph blazegraph-omnigraph Q20127748 lyrasis/blazegraph:2.1.5 9898 7898 kb
🟢️ graphdb graphdb-omnigraph Q58425577 ontotext/graphdb:11.2.0 7200 7700 repo1
🟢️ jena jena-omnigraph Q109376461 stain/jena-fuseki:latest 3030 7030 ds admin
🟢️ millenniumdb millenniumdb-omnigraph Q118954995 imfd/millenniumdb 1234 1734 default
🟢️ oxigraph oxigraph-omnigraph Q118980507 oxigraph/oxigraph:latest 7878 7378 default
🟢️ qlever qlever-omnigraph Q111016295 adfreiburg/qlever:latest 7019 7819 olympics
🟢️ virtuoso virtuoso-omnigraph Q7935239 openlink/virtuoso-opensource-7:latest 8890 8390 KB dba
🛑 stardog stardog-omnigraph Q91147741 stardog/stardog:latest 5820 5320 mydb admin

Server Management

# Start specific servers
omnigraph -s jena --cmd start

# Restart sequence - stop remove and start
omnigraph -s jena --cmd stop rm start

# Start all configured servers
omnigraph -s all --cmd start

# Check server status
omnigraph -s blazegraph --cmd status

# Open web ui
omnigraph -s jena --cmd webui

Data Operations

# Load datasets
omnigraph -s blazegraph --cmd load

# Get triple count
omnigraph -s blazegraph --cmd count

# Use test environment
omnigraph --test -s blazegraph --cmd start load

Usage

omnigraph command line

omnigraph -h
usage: omnigraph [-h] [-a] [-d] [-ds DATASETS [DATASETS ...]] [-dc DATASETS_CONFIG] [-f] [-r {turtle,rdf-xml,n3,json-ld}] [-q] [-V] [--apache APACHE]
                 [-c CONFIG] [--cmd CMD [CMD ...]] [-df DOC_FORMAT] [-l] [--test] [-s SERVERS [SERVERS ...]] [-v]

Unified Python interface for multiple graph databases

options:
  -h, --help            show this help message and exit
  -a, --about           show about info [default: False]
  -d, --debug           show debug info [default: False]
  -ds DATASETS [DATASETS ...], --datasets DATASETS [DATASETS ...]
                        datasets to work with - all is an alias for all datasets [default: ['wikidata_triplestores']]
  -dc DATASETS_CONFIG, --datasets-config DATASETS_CONFIG
                        Path to datasets configuration YAML file [default: /Users/wf/Library/Python/3.12/lib/python/site-
                        packages/omnigraph/resources/examples/datasets.yaml]
  -f, --force           force actions that would modify existing data [default: False]
  -r {turtle,rdf-xml,n3,json-ld}, --rdf_format {turtle,rdf-xml,n3,json-ld}
                        RDF format to use [default: turtle]
  -q, --quiet           avoid any output [default: False]
  -V, --version         show program's version number and exit
  --apache APACHE       create apache configuration file for the given server(s)
  -c CONFIG, --config CONFIG
                        Path to server configuration YAML file [default: /Users/wf/Library/Python/3.12/lib/python/site-
                        packages/omnigraph/resources/examples/servers.yaml]
  --cmd CMD [CMD ...]   commands to execute on servers: bash, clear, count, info, load, logs, needed, rm, start, status, stop, webui
  -df DOC_FORMAT, --doc-format DOC_FORMAT
                        The document format to use [default: plain]
  -l, --list-servers    List available servers [default: False]
  --test                use test environment [default: False]
  -s SERVERS [SERVERS ...], --servers SERVERS [SERVERS ...]
                        servers to work with - 'all' selects all configured servers [default: ['blazegraph']]
  -v, --verbose         show verbose output [default: False]

rdfdump command line

rdfdump -h
usage: rdfdump [-h] [-a] [-d] [-ds DATASETS [DATASETS ...]] [-dc DATASETS_CONFIG] [-f] [-r {turtle,rdf-xml,n3,json-ld}] [-q] [-V] [--limit LIMIT] [-l]
               [--count] [--dump] [-4o] [--max-count MAX_COUNT] [--no-progress] [--output-path OUTPUT_PATH] [--tryit]

Unified Python interface for multiple graph databases

options:
  -h, --help            show this help message and exit
  -a, --about           show about info [default: False]
  -d, --debug           show debug info [default: False]
  -ds DATASETS [DATASETS ...], --datasets DATASETS [DATASETS ...]
                        datasets to work with - all is an alias for all datasets [default: ['wikidata_triplestores']]
  -dc DATASETS_CONFIG, --datasets-config DATASETS_CONFIG
                        Path to datasets configuration YAML file [default: /Users/wf/Library/Python/3.12/lib/python/site-
                        packages/omnigraph/resources/examples/datasets.yaml]
  -f, --force           force actions that would modify existing data [default: False]
  -r {turtle,rdf-xml,n3,json-ld}, --rdf_format {turtle,rdf-xml,n3,json-ld}
                        RDF format to use [default: turtle]
  -q, --quiet           avoid any output [default: False]
  -V, --version         show program's version number and exit
  --limit LIMIT         Number of triples per request [default: 10000]
  -l, --list            List available datasets [default: False]
  --count               List available datasets with triple counts[default: False]
  --dump                perform the dump [default: False]
  -4o, --for-omnigraph  store dump at default omnigraph location [default: False]
  --max-count MAX_COUNT
                        Maximum number of solutions/triples to download (uses dataset expected_solutions if not specified)
  --no-progress         Disable progress bar
  --output-path OUTPUT_PATH
                        Path for dump files
  --tryit               open the try it! URL [default: False]

Metadata

Release files for pyomnigraph 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyomnigraph 0.3.0
File Size Uploaded
pyomnigraph-0.3.0.tar.gz 165.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyomnigraph 0.3.0
File Interpreter ABI Platform
pyomnigraph-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 237.6 kB

Release files / pyomnigraph-0.3.0.tar.gz

Download URL pyomnigraph-0.3.0.tar.gz
Size 165.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1299c024eaa3eac5d4509bd639e250b49bbba7a3ccc73a0b0c273c10f66ed1a6
BLAKE2b-256 checksum
How to use checksums
413fbbe8916eb0abb67894c9b0c9553628e42991ac5898136c5986aa53aa2049
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 6, 2026.

Transparency log

Release files / pyomnigraph-0.3.0-py3-none-any.whl

Download URL pyomnigraph-0.3.0-py3-none-any.whl
Size 71.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
016e33e36faea03c35aaa73cb3269e58214a97f9bd70c7b164ebf12d5436d79d
BLAKE2b-256 checksum
How to use checksums
e0ccbfef49ba45fc0011976701e433eb0caaee2821d8f88e9df96306eea3a950
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page