Store and search on RDF data that conform to SHACL.
git clone https://github.com/ULB-Darmstadt/rdf-store.git
cd rdf-store
cp .env.example .env (see below)
docker compose up -d
Afterwards, open browser at http://localhost:8089
- Copy the example file:
cp .env.example .env. - Update values as needed:
APP_URL: base URL for the deployment (used in redirects).FUSEKI_PASSWORD: admin password for Fuseki. Needs to be set before first starting the services.OAUTH2_PROXY_*: OIDC/OAuth settings (issuer, client id/secret, cookie secret).DISABLE_OAUTH: set to a non-empty value to bypass OAuth2 proxy authentication. For this to work, activate the port mapping3000:3000for theappservice indocker-compose.yml. The base URL of the application then ishttp://localhost:3000RDF_NAMESPACE,LOG_LEVEL: optional service tuning.
cd rdf-store
git pull
docker compose up -d --build --force-recreate
RDF store supports loading SHACL shapes locally from the directory rdf-store/backend/local/profiles/ or remotely from the NFDI4Ing metadata profiles service. See the .env.example file on how to enable/disable/configure these sources.
The backend API is exposed under http://localhost:8089/api/v1/ when running via Docker Compose.
Key endpoints include:
/api/v1/sparql/queryfor SPARQL queries on stored RDF resources./api/v1/solr/{colletion}/queryfor SOLR search requests./api/v1/resourcefor CRUD operations on RDF resources.
For a complete, interactive API reference, open the Swagger UI at http://localhost:8089/api/v1/ or refer to the OpenAPI document at http://localhost:8089/api/v1/openapi.json.
Example SPARQL query:
curl -Lk -X POST http://localhost:8089/api/v1/sparql/query -d "query=SELECT * WHERE { GRAPH ?g {?s ?p ?o } }"
When modifying the code in this repo (backend or frontend), the recommended steps for running/testing the local changes are:
cd rdf-store- edit docker-compose.yml and comment in the port mappings for fuseki, solr and validator services
docker compose up -d --builddocker compose stop appcd backend && go run .-> starts backend on port 3000, needs to be run again after each change in the backendcd frontend && npm run dev-> starts frontend on port 5173 with live reload- open browser at http://localhost:5173
flowchart TB
User[User browser]
Frontend[Frontend UI]
Gateway[Nginx gateway]
OAuth[OAuth2 proxy]
Redis[(Redis)]
App[Backend API]
Validator[SHACL validator<br/>and shape conformance classifier]
Fuseki[(Triple store<br/>Apache Jena Fuseki)]
Solr[(Search Index<br/>Solr)]
Profiles[SHACL Shape Sources<br/>Local + NFDI4Ing MPS]
User --> Frontend
Frontend -->|Search requests| Gateway
Frontend -->|View/Edit requests| Gateway
Gateway --> OAuth
OAuth --> Redis
OAuth --> App
Gateway --> App
App --> Validator
App --> Fuseki
App --> Solr
App --> Profiles