Skip to content

Add Oxigraph as the first engine of qeval - #328

Draft
tanmay-9 wants to merge 25 commits into
qlever-dev:mainfrom
tanmay-9:qeval-oxigraph
Draft

Add Oxigraph as the first engine of qeval#328
tanmay-9 wants to merge 25 commits into
qlever-dev:mainfrom
tanmay-9:qeval-oxigraph

Conversation

@tanmay-9

@tanmay-9 tanmay-9 commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

With this change, the whole workflow that qlever provides for QLever is available for Oxigraph via qeval oxigraph: setup-config, get-data, index, index-stats, start, status, log, query, stop, and benchmark-queries. The dataset configs are the same ones as for QLever (qeval oxigraph setup-config olympics, which writes a Qleverfile with only the parameters that Oxigraph knows), and everything works both natively, with oxigraph-cli on the PATH, and in a container with docker or podman.

The Qleverfile has a few Oxigraph-specific parameters: READ_ONLY and LENIENT, INDEX_BINARY and SERVER_BINARY (both oxigraph by default), and EXTRA_ARGS for the index and the server, which is appended to the command line verbatim, so that options not covered by the Qleverfile can still be used. With READ_ONLY = yes (the default), the index build compacts the store with oxigraph optimize after loading and the server runs serve-read-only. TIMEOUT accepts a unit like 60s or 5min as for QLever and is passed on as --timeout-s; older Oxigraph versions do not have that option, in which case the command says that the timeout is ignored instead of failing to start.

As for QLever, qeval oxigraph index-stats reads the phase times from the index log. Oxigraph's own output is not usable for that, though: its progress output is unreliable and it does not always print a final summary line. So qeval oxigraph index measures the load and the optimize phase itself and appends them, with the total, to the index log, which is also where the shaded phases of the plot come from. The index build records RSS and CPU usage and renders the resource-usage plot just like qlever index does, with the Oxigraph version in the subtitle.

Almost all of this is a thin layer on top of the existing qlever commands (mostly a different endpoint, a different process name, or a different way to find the server), and the classes are written so that the engines still to come can use them as their base rather than the QLever ones.

Also, a new end-to-end test runs the complete sequence from setup-config to stop on the olympics dataset, for all three of native, docker, and podman, and checks that the resource-usage log and plot are actually produced.

tanmay-9 and others added 17 commits August 15, 2026 15:51
@tanmay-9 tanmay-9 changed the title Qeval oxigraph Add Oxigraph as the first engine of qeval Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant