Heratio Help Center article. Category: Technical / Integration.
Controlled Vocabularies as SKOS Concept Schemes
Overview
Heratio publishes its controlled vocabularies (the authorities that records are described under) as standard SKOS concept schemes. SKOS (Simple Knowledge Organization System) is the W3C standard for sharing thesauri, taxonomies and subject-heading lists as linked data, so any SKOS-aware tool can consume your authorities directly.
Three schemes are published out of the box: subjects, places and genres / forms. Each scheme, and each individual concept within it, has a stable web address that returns linked data (JSON-LD, Turtle or RDF/XML).
These surfaces are open data: no API key, read-only, published records only, and cross-origin (CORS) open so a browser app on any site can fetch them.
The index
GET /vocabularies
A human page listing the published concept schemes with their live term counts and links to each scheme and serialisation. Add ?format=json (or send a JSON Accept header) to get a machine list of the schemes instead.
One vocabulary as a concept scheme
GET /vocabulary/{scheme}
{scheme} is one of subjects, places or genres. The response is content-negotiated:
| Request | You get |
|---|---|
bare path or Accept: application/ld+json |
JSON-LD (the default for machines) |
.ttl suffix or Accept: text/turtle |
Turtle |
.rdf suffix or Accept: application/rdf+xml |
RDF/XML |
You can also force a format with ?format=jsonld|turtle|rdf.
The scheme is a skos:ConceptScheme. Every term becomes a skos:Concept with:
skos:prefLabel- the preferred label, language-tagged for your active localeskos:notation- the term's notation (its in-house code, or its stable id)skos:inScheme- a link to the scheme it belongs toskos:topConceptOforskos:broader- its place in the hierarchyskos:narrower- its child concepts, where the vocabulary nestsskos:scopeNote- a usage note, where the term has one
Example
# The subjects vocabulary as Turtle
curl -H "Accept: text/turtle" https://your-site/vocabulary/subjects
# or by suffix
curl https://your-site/vocabulary/subjects.ttl
# The places vocabulary as JSON-LD
curl https://your-site/vocabulary/places.jsonld
One concept
GET /vocabulary/{scheme}/{termId}
Returns a single concept nested under its scheme, with its labels, notation, hierarchy and scope note, plus a bounded handful of example published records that use the concept (as dcterms:relation links to those records' linked-data URIs). The same content negotiation and .ttl / .jsonld / .rdf suffixes apply.
The canonical per-term address remains /id/term/{slug}; each concept here links to it with skos:exactMatch, so the two views of the same concept reference each other.
curl https://your-site/vocabulary/places/901113.jsonld
Notes
- A large vocabulary is paginated / capped; when a scheme has more concepts than one document lists, the scheme carries an honest note pointing you at the per-concept addresses.
- An unknown scheme name or concept id returns a clean 404 in the format you asked for, never an error page.
- The vocabularies are also listed in the open-data protocol index at /open-data/protocol, so a machine can discover them by fetching one URL.
- The vocabulary content is entirely data-driven - labels, notations, hierarchy and notes all come from your own term records, in whatever languages you have captured.