Theory — deployment
Three deliverables, zero reasoner
Deliverable 1 — Skosmos
Skosmos (open-source, born at the National Library of Finland) is the de-facto browser for SKOS vocabularies. Point it at a Turtle file (or a SPARQL endpoint) and it renders: search, hierarchy, alphabetical index, multilingual labels, mapping cross-links, REST API. Zero custom code.
Deliverable 2 — JSON-LD context for the website
The OpenLearn front-end is a Next.js app. It doesn't speak SPARQL natively. We publish a JSON-LD context that maps the SKOS IRIs to the JSON shape the front-end expects. Reading the same data via Turtle (for the API) or JSON-LD (for the website) becomes a content-type negotiation, not a code change.
Deliverable 3 — schema.org DefinedTerm on resource pages
Every reading-list resource page embeds JSON-LD with @type: 'DefinedTerm', inDefinedTermSet: <ConceptScheme IRI>. Google Scholar, Bing, and the rest of the web that understands schema.org now indexes our subject metadata. SEO became an emergent property of the data model.
What we are NOT deploying
- ❌ No HermiT, no ELK, no Pellet — there is nothing to reason.
- ❌ No SHACL-on-import gate (the vocabulary itself is validated at edit-time in Skosmos).
- ❌ No
robot reason --reasoner …step in CI.
We replaced ~80% of the MedaCore deployment surface with essentially zero loss in capability — because the problem didn't need it.