ster
_____ ______ ______ ____
/ ___//_ __// ____// __ \
\__ \ / / / __/ / /_/ /
___/ / / / / /___ / _, _/
/____/ /_/ /_____//_/ |_|
[ Breton: "Meaning" or "Sense" ]
[ Semantic Knowledge Editor ]
ster is a terminal editor for semantic knowledge bases. Build and explore SKOS taxonomies and OWL ontologies together in one full-screen TUI — then visualise them as interactive graphs, run SPARQL, and publish HTML documentation, all from your terminal. No database required.
ster is the Breton word for meaning, with homonyms for river and star — keep the flow, and follow your star.
The TUI
The heart of ster is a Textual terminal app that shows your SKOS taxonomy and OWL ontology in a single tree:
- One unified tree — concept schemes, concepts, classes, named individuals, and properties side by side. Create, rename, delete, and edit any entity inline; every field is editable in a detail panel.
- Puns (class ⇔ concept) — an entity can be both an OWL class and a SKOS concept. Promote a concept to a class or demote it back with one action.
- Tag individuals with concepts — link named individuals to SKOS concepts
(
dcterms:subject), one at a time or in bulk from a checklist. - Live quality & coverage — a semanticlint pass colour-codes each tree node by its worst issue (🔴 error · 🟠 warning); hover for a per-entity issue count, and open the node to see the full list and its label/comment/property-fill coverage.
- Markdown notes — attach rich notes to any entity with a full-screen editor and a live rendered preview; markdown links are URL-checked when you open or edit them.
- Ontology overview — editable title/description; opening a pure-OWL file jumps straight to the overview.
- Bundled demo — a mixed SKOS + OWL sandbox you can load from the file list to try everything out (it resets on each load).
Beyond the tree
Every capability below is reachable from the home menu, acting on the file you selected:
| Menu action | What it does |
|---|---|
| TTL Viewer-Editor | The unified SKOS + OWL tree editor described above |
| SPARQL Query | In-TUI query editor with autocomplete and a cache-warmed engine (no cold-start delay); export results to CSV |
| Graph Viewer | Opens an interactive Cytoscape.js VOWL-style graph in the browser — classes as circles, property edges, per-class individual toggle, drag / zoom / detail panel |
| HTML Data Catalog | Generates browsable pyLODE documentation, one page per language |
| Import External Ontology | Fetch and cache external vocabularies, binding their namespaces for reuse |
| Linked Data Publish & Version | Semver-tagged releases served over a local Linked-Data server |
Installation
pip install ster
That's everything — TUI editing, graph viewer, SPARQL, HTML export, and the
publish server, no extras required. AI-assisted concept suggestions are
available via the llm library (online models,
local Ollama models, or a no-model copy-paste mode).
Quick start
ster
The home screen lists the ontology and taxonomy files in the current directory (plus a Load demo entry). Pick a file, then choose an action:
Select a file:
☑ my-ontology.ttl
🎒 Load demo ontology / taxonomy
▶ 🖥 TTL Viewer-Editor
🔍 SPARQL Query
📦 Linked Data Publish & Version
🌐 HTML Data Catalog
◈ Load Graph Viewer
📥 Import External Ontology
✕ Quit
Arrow keys navigate; Enter confirms. Inside the tree editor, press ? for
the full keymap — the essentials are + add, d delete, e edit,
Enter expand/open, Esc back.
Supported formats
| Extension | Format |
|---|---|
.ttl |
Turtle (recommended) |
.rdf / .xml |
RDF/XML |
.jsonld / .json |
JSON-LD |
.owl |
OWL/XML |
Key dependencies
| Package | Role |
|---|---|
| rdflib | RDF parsing / serialisation and the SPARQL engine |
| Textual | The terminal UI framework |
| Cytoscape.js | Browser graph rendering (VOWL viewer) |
| pyLODE | HTML documentation export |
Development
See CONTRIBUTING.md for the full workflow.
git clone https://github.com/gbelbe/ster.git
cd ster
uv sync --extra dev
bash scripts/install-hooks.sh # git pre-push hook (once per clone)
bash scripts/ci.sh # full local gate: lint · types · security · tests · coverage
The local gate mirrors GitHub Actions (ruff · mypy · bandit + pip-audit · pytest on Python 3.11 / 3.12 / 3.13), and a pre-push hook blocks any push without a passing run in the last 60 minutes. Coverage is reported to Codecov.
Release notes live in the GitHub releases.
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ster-0.9.6.tar.gz.
File metadata
- Download URL: ster-0.9.6.tar.gz
- Upload date:
- Size: 891.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4390f1538d2225bcdee90270aad870a1457d7fa77ea0630bf9f4115bad266b4
|
|
| MD5 |
90aa946e604440763940e61bed81dc00
|
|
| BLAKE2b-256 |
02929ca22e52f60dfad7f7d35f0d1df03d42ab421513b15413a00e82c13a88e5
|
Provenance
The following attestation bundles were made for ster-0.9.6.tar.gz:
Publisher:
ci.yml on gbelbe/ster
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ster-0.9.6.tar.gz -
Subject digest:
c4390f1538d2225bcdee90270aad870a1457d7fa77ea0630bf9f4115bad266b4 - Sigstore transparency entry: 2211010418
- Sigstore integration time:
-
Permalink:
gbelbe/ster@fea06bc489ccdcd8349bb3f6aebc71b349191117 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/gbelbe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@fea06bc489ccdcd8349bb3f6aebc71b349191117 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ster-0.9.6-py3-none-any.whl.
File metadata
- Download URL: ster-0.9.6-py3-none-any.whl
- Upload date:
- Size: 384.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85ffefac3dc53143ad6e6b36d9c5d373d78a3f91252e67a882aabeb33c8a2ecd
|
|
| MD5 |
8da9f8475018d06f8317b43a39794199
|
|
| BLAKE2b-256 |
50e6371c7d47c3ac610b1a612380eaac16bb4b9811806a5e343117ef90813a3b
|
Provenance
The following attestation bundles were made for ster-0.9.6-py3-none-any.whl:
Publisher:
ci.yml on gbelbe/ster
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ster-0.9.6-py3-none-any.whl -
Subject digest:
85ffefac3dc53143ad6e6b36d9c5d373d78a3f91252e67a882aabeb33c8a2ecd - Sigstore transparency entry: 2211010488
- Sigstore integration time:
-
Permalink:
gbelbe/ster@fea06bc489ccdcd8349bb3f6aebc71b349191117 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/gbelbe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@fea06bc489ccdcd8349bb3f6aebc71b349191117 -
Trigger Event:
push
-
Statement type: