Skip to main content

RDFscope

A local RDF explorer. Open a file or connect to a SPARQL endpoint, follow connections, inspect the exact RDF terms, and save your investigation.

Try RDFscope in your browser → · Quickstart with uv

Explore the sample or open your own RDF file. No installation; your data stays in your browser.

RDFscope browser edition showing The Semantic Web connected to its authors, publisher, and related concepts, with exact RDF properties in the inspector.

A real exploration of the bundled sample. Click the screenshot to try it yourself.

RDFscope is a Rust application with an embedded React interface and an in-process Oxigraph store. The built executable needs no Node.js, database server, Docker, or internet connection to explore local files.

Status: early release (alpha maturity). Version 0.1.1 is intended for developer exploration and feedback. Features, APIs, and saved workspace formats may change before 1.0. Keep your original RDF files; the store is disposable and in memory. See Data and operating limits before loading a dataset.

Quickstart with uv

With uv installed, try the bundled demo without a permanent install:

uvx rdfscope@0.1.1

This opens http://127.0.0.1:7878 in your browser. Double-click a resource to follow its connections, select it to inspect its RDF, or open the SPARQL editor to query the dataset. No dataset download or database setup is needed.

To explore your own local RDF file, pass its path:

uvx rdfscope@0.1.1 data.ttl

Or connect to a SPARQL endpoint (replace the example URL with yours):

uvx rdfscope@0.1.1 --endpoint https://example.org/sparql

In the connection dialog, you can optionally paste any resource IRI from the graph as your starting point. RDFscope opens that resource and its direct connections; the IRI does not need to be a designated root.

Press Ctrl+C in the terminal to stop the server. Each new process starts a fresh session; save a workspace in the interface if you want to keep your investigation. After the first download, cached local-file sessions can run offline with uvx --offline rdfscope@0.1.1 data.ttl.

Install

For regular use, install the standalone application from PyPI:

uv tool install rdfscope==0.1.1
# Or: pipx install rdfscope==0.1.1
rdfscope data.ttl

The Python package distributes the Rust executable, with no Python runtime dependencies. Wheels target Linux (glibc 2.28+, x86-64 and ARM64), macOS (Intel and Apple Silicon), and Windows (x86-64). The installer needs Python 3.10 or newer.

Or install through Cargo with Rust 1.98 or newer:

cargo install rdfscope --version 0.1.1 --locked

Registry source packages include the compiled interface, so Cargo installs and Python source builds do not require Node.js. Python source builds require Rust and a native C toolchain. Standalone archives with SHA-256 checksums are also available on the GitHub releases page.

Browser edition

Open the browser demo to explore the bundled sample or your own files without installing anything or uploading data. It runs the same Rust RDF engine through WebAssembly, hosted as a static app on Cloudflare. Browser files are limited to 10 MB; endpoint connections use the installed app. Save a workspace before closing or reloading the tab.

See Build, test, and deploy the browser demo.

VS Code extension

Download the VSIX from the VS Code preview release and use Extensions → Install from VSIX. Right-click a Turtle or RDF file to explore it in VS Code, inspect terms, and run SPARQL. The text editor remains the default; browsing does not modify your file. See build and usage instructions.

Build and run

Development prerequisites: current stable Rust (tested with 1.98), Node.js 22.12 or newer, and npm.

make build
./target/release/rdfscope

The command opens http://127.0.0.1:7878 with the bundled sample library. To use your data:

./target/release/rdfscope data.ttl
./target/release/rdfscope dataset.trig --port 8080
./target/release/rdfscope --endpoint https://example.org/sparql
./target/release/rdfscope --endpoint https://example.org/sparql --token-env SPARQL_TOKEN
./target/release/rdfscope --no-open --port 0

--port 0 selects an available local port and prints the address. Endpoint credentials are read from the named environment variable; values are never printed. You can also enter a bearer token in the connection dialog.

Copy target/release/rdfscope to another machine with the same OS and CPU architecture to run it. All UI assets and sample data are embedded at compilation. Build separately for each target platform. Release builds are installed and smoke-tested on Linux x86-64 and ARM64, macOS Intel and Apple Silicon, and Windows x86-64.

Explore

  • Open file: Turtle, TriG, N-Triples, N-Quads, RDF/XML, and JSON-LD. Drop a file onto the application or use the file dialog. Failed imports leave the current dataset intact.
  • Find a resource: search labels or full IRIs and narrow by RDF type. Endpoint mode searches the live dataset in pages of 25; switch to Loaded data for the cached sample. Enter a complete IRI to open it directly. The type catalog describes loaded data.
  • Follow connections: double-click a node to add its first 25 connections. Use Browse connections in the inspector to page through a neighborhood, filter incoming/outgoing relationships and graph scope, follow one exact predicate statement from its named graph, or add the full page. Browsing continues independently of the canvas limit. Existing positions stay fixed; arrange, pin, focus, hide, or undo graph changes.
  • Inspect RDF: endpoint resources fetch literal properties on selection, and connection pages hydrate labels and types. Literal values retain their language and datatype. Outgoing and incoming statements identify their named graph. Resource types are shown in the inspector rather than as rdf:type edges on the canvas.
  • Filter: choose a relationship or named graph, or use the type filter. Filters apply to the resources currently on the canvas. Use SPARQL for full-dataset filtering.
  • Query: SELECT, ASK, CONSTRUCT, and DESCRIBE run against the loaded store or connected endpoint. Example queries include named graphs explicitly. Result IRIs can be selected for inspection. Local SPARQL SERVICE requests and SPARQL Update are disabled.
  • Trace requests: the Trace view shows generated SPARQL, timings, HTTP status, result counts, response sizes, and failures for the last 50 completed endpoint requests. Copy a query or open it in the SPARQL editor. Authentication headers and endpoint URL query parameters are excluded.
  • Save: a .rdfscope.json workspace includes the loaded RDF, canvas, positions, pins, filters, labels, and query. Reopen it using Open file. Credentials are never included. Endpoint workspaces restore the cached sample as local data, and do not reconnect automatically.
  • Export: SVG of the visible graph, N-Quads of the loaded dataset, or JSON query results.

Keyboard shortcuts: / finds a resource, F fits the graph, ⌘/Ctrl S saves a workspace, and ⌘/Ctrl Enter runs the current query.

Data and operating limits

The store is in memory. Files are not modified, and application state ends when the process stops; save a workspace to retain your work. Multiple tabs connected to the same process share the active dataset, while their canvas arrangements are independent. Local files never leave the computer. Endpoint requests go to the endpoint you select. The interface itself uses no CDN, external fonts, accounts, or telemetry.

This first version intentionally bounds interactive work:

Operation Limit
RDF/workspace file import 64 MB
Canvas 200 resources, 2,000 edges
Connection / search page 25 results in the UI; API accepts 1–50
Relationship catalog First 200 predicate/direction groups; all remain browsable
Inspector properties 300 statements, with an explicit partial-results notice
Labels / types per fetch 2,000 statements, with an explicit partial-results notice
Query display 1,000 rows
Concurrent queries 2
Local query execution 30 seconds, then cancellation
Endpoint request 25 seconds, 8 MB response
Initial endpoint sample 500 statements
Concurrent endpoint requests 4; requests wait up to 5 seconds for a slot
Query trace Last 50 completed requests, in memory

The initial endpoint canvas is a cached sample, not a complete inventory. Sidebar counts describe loaded data; relationship counts and paginated connection searches query the endpoint directly. Connection pages show whether more results are available, without implying that the endpoint is fully loaded. Live data can change between pages; OFFSET pagination assumes a stable dataset. Label matching uses portable SPARQL substring searches, so large endpoints may need a more selective query. Local search is paginated; cached endpoint search considers the first 200 matches. Queries execute against the endpoint directly. Endpoint authentication supports bearer tokens; redirects are refused, so enter the final endpoint URL. Blank nodes are scoped to each endpoint response and cannot be reliably re-addressed across requests. JSON-LD files with embedded contexts are supported; automatic retrieval of remote contexts is not enabled. RDF 1.2/RDF-star and inferred reasoning are outside the current scope.

Relative IRIs in imported RDF use https://rdfscope.local/import/ as their fallback base unless the document defines a base. Use absolute IRIs or an explicit base when document-relative identifiers matter.

Development

cd web
npm ci
npm run build
cd ..
cargo run -- --no-open

For frontend hot reload, run npm run dev in web/ while the Rust process is running. Vite proxies API requests to port 7878. Rebuild the frontend before building a distributable binary; the binary embeds the files currently in web/dist/.

make test
python3 scripts/smoke.py http://127.0.0.1:7878

The smoke test uses a local mock SPARQL server, replaces the running app's dataset with test data, then restores the bundled sample. Run it against a disposable process. The Rust endpoint integration test also starts a loopback-only SPARQL fixture backed by real Oxigraph queries. It checks large-neighborhood pagination, named-graph identity, label/type hydration, remote search, counts, metadata failures, and trace privacy. Tests cover RDF semantics and serialization, all supported formats, incoming connections, query limits/cancellation, read-only enforcement, local request guards, stable graph expansion, quad deduplication, and endpoint interaction.

For repeatable browser testing against a live local SPARQL fixture:

python3 scripts/endpoint_fixture.py

Connect to the printed URL using the printed seed IRI. The fixture contains 138 outgoing connections across two named graphs and labels outside the initial neighborhood sample. Stop it with Ctrl+C; its temporary data and child process are cleaned up.

Source layout:

  • src/main.rs: CLI, local HTTP API, embedded assets, request guards.
  • src/lib.rs: shared RDF engine used by the native CLI and browser adapter.
  • src/dataset.rs: Oxigraph ingestion, indexes, graph projection, queries, serialization.
  • src/remote.rs: endpoint discovery, bounded requests, metadata, and query trace.
  • src/exploration.rs: shared search, property inspection, paginated connections, and exploration types.
  • browser/: WebAssembly adapter; shares the root Cargo lockfile and builds without native dependencies.
  • web/src/: React graph workspace, inspector, query editor, import flow.
  • examples/: illustrative research library dataset.

Builds bind only to IPv4 loopback. Cross-origin requests and non-local Host headers are rejected. The API is intended for one local user, not shared hosting or direct public exposure.

Releases and license

See the release guide for package checks, workflow dry runs, registry setup, and recovery after a partial release.

RDFscope is licensed under MIT. The embedded interface includes its dependency notices at /THIRD_PARTY_LICENSES.txt.

Metadata

Release files for rdfscope 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rdfscope 0.1.1
File Size Uploaded Provenance
rdfscope-0.1.1.tar.gz 306.5 kB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for rdfscope 0.1.1
File
rdfscope-0.1.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
rdfscope-0.1.1-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
rdfscope-0.1.1-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details
rdfscope-0.1.1-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
rdfscope-0.1.1-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 23.9 MB

Release files / rdfscope-0.1.1.tar.gz

Download URL rdfscope-0.1.1.tar.gz
Size 306.5 kB
Tags Source
SHA-256 checksum
How to use checksums
930fe14d324414c08b86eb68eab5267d68c379f33bd8421dfa416850197c7fa2
BLAKE2b-256 checksum
How to use checksums
aa9afe6923d9c51c552e4a9a78f73033e5c1c1d5f3c7794ab22817fe1032abe9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rdfscope-0.1.1-py3-none-win_amd64.whl

Download URL rdfscope-0.1.1-py3-none-win_amd64.whl
Size 4.8 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
a3d6bde7805feacfc47717c4ff1ab077b5be91ae28be74a2e68f2797ebb94a8d
BLAKE2b-256 checksum
How to use checksums
2f53c536fea29f9099cf122ef9fcbb6093d02e647d4d78e19102ef7d1533609a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rdfscope-0.1.1-py3-none-manylinux_2_28_x86_64.whl

Download URL rdfscope-0.1.1-py3-none-manylinux_2_28_x86_64.whl
Size 4.9 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
eb6740ae4da20a5220021d624af517bf6e369367018147b5260ae1737d684c20
BLAKE2b-256 checksum
How to use checksums
9cb65bf497f36cc5f288de9f9d503e1d7e7fcdb47b6c47ca1a05fb693083eb4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rdfscope-0.1.1-py3-none-manylinux_2_28_aarch64.whl

Download URL rdfscope-0.1.1-py3-none-manylinux_2_28_aarch64.whl
Size 4.7 MB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
9decd9d7566ae6eda7bf358e7df2a99d79c15962479e0127d36ea7aa33cd9fa4
BLAKE2b-256 checksum
How to use checksums
32926f8b7fe695003eb52cee42bb69e39339be32296c832880ff666f6969a609
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rdfscope-0.1.1-py3-none-macosx_11_0_arm64.whl

Download URL rdfscope-0.1.1-py3-none-macosx_11_0_arm64.whl
Size 4.5 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
854978629bf6f6169469706ff51a0236be649073b7d3748fd4c0d4d5984ed297
BLAKE2b-256 checksum
How to use checksums
6c95339db120803f078a3c27f5d77b8ea588466fa5b073e24446720ae2cb322e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / rdfscope-0.1.1-py3-none-macosx_10_12_x86_64.whl

Download URL rdfscope-0.1.1-py3-none-macosx_10_12_x86_64.whl
Size 4.7 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
33d7624aa37082c4a53018d064902db58bd9925fb53e43ad289395247326626e
BLAKE2b-256 checksum
How to use checksums
a5b62d9d2cbb83348fe18f2d2389ae8b2f2ba9bb8f0f6cea65bfe40b549d1216
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for rdfscope 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

6 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page