Qlue-UI is a modern WebUI for SPARQL, driven by Qlue-ls.
It does not target a single, but many SPARQL engines.
It’s small, shiny, and ready to help you explore your RDF data effortlessly.
- Modern, lightweight WebUI for SPARQL with many language capabilities
- completion
- formatting
- diagnostics
- code actions
- hover
- Result views for ANY sparql operation (including update for QLever endpoints)
- Live query execution monitoring for QLever backends
- Parse tree view for inspecting the internal representation of a SPARQL query
- Live completion template editor for rapid iteration on query templates (experimental)
- Tabs for multiple queries
- Share queries with your peers
- Proper indentation support for SPARQL ('.' and ';')
- Automatic line break after '.' or ';'
- Automatic addition or removal of PREFIX declarations (configurable)
- Jump to relevant positions in the query
- Manage example queries per SPARQL endpoint
- Easy deployment with Docker
- Clean separation of API and frontend
Follow these steps to get Qlue-UI up and running:
docker compose build
docker compose upQlue-UI is now available under http://localhost:7000
Endpoint configurations are defined in config.default.yaml (copied into the container as config.yaml).
To customize, mount your own config.yaml into the container.
| Variable | Default | Description |
|---|---|---|
CONFIG_FILE |
config.yaml |
Path to the endpoint configuration file |
EXAMPLES_DIR |
examples |
Directory containing example queries |
DB_FILE |
data.db |
Path to the SQLite database (shared queries) |
API_KEY |
(unset) | If set, protects write endpoints (PATCH, PUT, POST, DELETE) |
CORS_ORIGINS |
* |
Comma-separated list of allowed CORS origins |
The app runs behind uvicorn with --proxy-headers enabled, so it trusts X-Forwarded-* headers by default.
Your reverse proxy MUST set these headers:
- X-Forwarded-Host
- X-Forwarded-Proto
Note: The "Query Execution Tree View" opens a WebSocket directly from the browser to the QLever backend — it does not go through this proxy.
Enable the required modules:
a2enmod proxy proxy_http headers<VirtualHost *:443>
ServerName qlue.example.com
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://localhost:7000/
ProxyPassReverse / http://localhost:7000/
</VirtualHost>| Shortcut | Action |
|---|---|
? |
Open help |
Escape |
Close any dialog |
Ctrl+Enter |
Execute/cancel query |
Ctrl+F |
Format document |
Ctrl+, |
Open settings |
Tab |
Jump to next position |
Shift+Tab |
Jump to previous position |
Open the command prompt with : (editor must be out of focus) and type a command:
| Command | Action |
|---|---|
parseTree |
Open the parse tree panel |
templates |
Open the completion templates editor (experimental) |
updateExample |
Update the current example query |
createExample "<name>" |
Save the editor content as a new example for the active backend |
For local development, set up the frontend and backend separately.
The backend uses uv as the package manager.
cd backend
uv sync # Install dependencies
uv run fastapi dev src/api/main.py # Start server on port 8000cd frontend
npm install
npm run dev # Start dev server on port 5173