Snorql — A Browser-Based UI for Exploring Multiple SPARQL Endpoints
https://nakamura196.github.io/snorql/

Introduction
Have you ever wanted a quick, easy way to try out SPARQL endpoints?
SPARQL is the standard query language for searching Linked Open Data (LOD), but each endpoint often has a different UI — or none at all. To solve this, I published Snorql, a tool that lets you switch between multiple endpoints from a single, unified UI.
https://nakamura196.github.io/snorql/
What is Snorql?
Snorql is originally based on kurtjx/SNORQL, a SPARQL Explorer significantly extended by @masaka for Japan Search. This repository reorganizes the codebase into a multi-tenant architecture that supports multiple SPARQL endpoints.
Key Features
| Feature | Description |
|---|---|
| CodeMirror Editor | SPARQL editor with syntax highlighting and bracket matching |
| Multiple Result Views | Three output formats: Browse (table), JSON, XML |
| Resource Detail View | Click a URI to expand its details via DESCRIBE |
| Leaflet Map View | Plot results with coordinates on a Leaflet map |
| Sample Queries | One-click sample queries from the sidebar |
Supported Endpoints
The following four endpoints are preconfigured:
| Endpoint | Type | Description |
|---|---|---|
| Japan Search | Virtuoso | Integrated search for Japanese cultural heritage metadata |
| Hieratische Palaeographie DB | Dydra | Hieratic palaeography database |
| e-Stat Statistics LOD | Oracle RDF | Japanese government statistics as LOD |
| Local Fuseki | Fuseki | For local development and testing |
Simply select a card from the landing page to navigate to the Explorer for each endpoint.
Architecture
Directory Structure
The project uses docs/ as the root, enabling direct publishing via GitHub Pages.
Separation of Shared Code and Endpoint-Specific Config
Shared JS and CSS live in js/ and css/, while each endpoint folder contains only three configuration files specific to that endpoint:
With this structure, adding a new endpoint is just a folder copy + editing 3 files.
Handling Endpoint Differences
Although the SPARQL specification is common, response formats and supported query types differ across endpoint implementations. Snorql absorbs these differences through configuration in snorql_def.js alone.
There are two main differences:
1. How to request JSON responses
| Method | Used by | Mechanism |
|---|---|---|
output=json parameter | Virtuoso, Dydra, Oracle RDF | Append output=json to URL |
Accept header | Fuseki | Request via HTTP Accept header |
This is automatically determined by endpoint_type: "fuseki" uses the Accept header, while others ("virtuoso", "any") use the output=json parameter.
2. DESCRIBE query support
| Type | DESCRIBE behavior |
|---|---|
| Virtuoso (JPS) | DESCRIBE errors; internally converted to CONSTRUCT |
| Dydra | Works as-is |
| Fuseki | Works as-is |
| Oracle RDF | DESCRIBE/CONSTRUCT cannot return JSON; internally converted to SELECT |
These differences are controlled by endpoint_type and a few flags in snorql_def.js, so users only need to specify the endpoint URL and these settings.
How to Use
Try Online
Just visit the URL below to start exploring:
https://nakamura196.github.io/snorql/
Run Locally
Add Your Own Endpoint
Local Development with Fuseki
You can start Apache Jena Fuseki with Docker Compose:
Tech Stack
Pure CSS, no framework — A single
snorql-modern.csshandles all styles without Bootstrap or Tailwind. Zero external dependencies means it always works.CodeMirror 5 (CDN) — SPARQL syntax highlighting
Leaflet (CDN) — Map display
GitHub Pages — Publish the
docs/folder directly
Summary
Snorql is a lightweight Explorer UI for casually trying out SPARQL endpoints.
- Switch between multiple endpoints in one UI
- Add new endpoints by simply copying a folder
- Publish directly on GitHub Pages
- No framework needed — Pure CSS + Vanilla JS
If you want to explore LOD or need an Explorer for your own endpoint, give it a try.
GitHub: https://github.com/nakamura196/snorql Demo: https://nakamura196.github.io/snorql/
Acknowledgments
- SNORQL — Richard Cyganiak / kurtjx
- snorql_ldb.js — @masaka (Extensions for Japan Search)
- CodeMirror — SPARQL editor
- Leaflet — Map display