Fuseki
Install and manage Apache Jena Fuseki as a local user systemd service
with associated CLI tools (riot, shacl, etc.).
Overview
| Property | Value |
|---|---|
| Fuseki Home | ~/.local/share/apache-jena-fuseki/ |
| Jena Home | ~/.local/share/apache-jena/ |
| Systemd Unit | ~/.config/systemd/user/fuseki.service |
| Default Port | 3030 |
| Data Directory | ~/.local/share/fuseki-data/ |
| Web UI | http://localhost:3030 |
Signal Routing
| Signal | Action |
|---|---|
| “fuseki setup” | Run setup script (install binaries + systemd service) |
| “fuseki start” | Start the fuseki systemd user service |
| “fuseki stop” | Stop the fuseki systemd user service |
| “fuseki status” | Check service status, port, and dataset health |
Prerequisites
- Linux with systemd user sessions (
systemctl --usermust work) - Java 17+ installed and on PATH
curlandwgetavailable- Internet access (for initial binary download only)
Steps
1. Setup (install + configure)
Run the setup script. It is idempotent — safe to run multiple times.
bash ~/.agents/skills/fuseki/scripts/setup-fuseki.sh
This script:
- Checks Java 17+ is available
- Downloads Apache Jena and Jena Fuseki binaries (skips if already installed)
- Creates stable symlinks (
~/.local/share/apache-jena,~/.local/share/apache-jena-fuseki) - Adds
JENA_HOME,FUSEKI_HOME, and PATH entries to~/.bashrc(skips if already present) - Creates
~/.local/share/fuseki-data/for persistent data - Installs a systemd user service unit (
fuseki.service) - Enables the service (does NOT start it automatically)
2. Start
Run the start script:
bash ~/.agents/skills/fuseki/scripts/start-fuseki.sh
This script:
- Starts the
fuseki.servicesystemd user service - Waits for Fuseki to become healthy (polls
/$/ping) - Reports the endpoint URL and available datasets
3. Stop
Run the stop script:
bash ~/.agents/skills/fuseki/scripts/stop-fuseki.sh
This script:
- Stops the
fuseki.servicesystemd user service - Confirms the port is released
4. Status
Run the status script:
bash ~/.agents/skills/fuseki/scripts/status-fuseki.sh
This script:
- Checks whether Jena and Fuseki binaries are installed
- Checks systemd service state
- If running, queries the Fuseki API for datasets and health
- Reports versions of all Jena CLI tools
Verification
riot --versionreturns Apache Jena RIOT versionshacl --versionreturns Apache Jena SHACL versionsystemctl --user status fusekishows the service unitfuseki start→http://localhost:3030responds with HTTP 200fuseki stop→ port 3030 is released
Changelog
See CHANGELOG.md for version history.