Namespace: https://jeromev.github.io/Luna/ontology#
· prefix luna:
· Turtle
· code
Luna publishes content with
standard vocabularies — schema.org, Dublin Core, FOAF, SIOC,
PROV-O. This namespace defines only the system predicates that have no standard
equivalent. As projected into the triplestore, the whole custom vocabulary is the three terms
below; everything else is standard (schema:WebPage/Article,
foaf:Person, schema:name/identifier/headline/articleBody/isPartOf/hasPart/inLanguage,
foaf:name). Draft — terms may change.
| Term | Label | Meaning |
|---|---|---|
luna:isActive | is active | Whether a node (page, text, level, group, user, module) is active/published. A boolean flag, currently encoded as 1 / 0. |
luna:level | access level | Relates a node to the access level that gates it; the object is an access-level resource (e.g. …/id/level_public). |
luna:content | content | The Markdown source body of a text block, as authored (the HTML view renders it to HTML on the fly). Standard consumers can read the plain-text projection from schema:articleBody / schema:text. |
Note. There is effectively one content model: the
in-memory graph the XSLT renders from is the same schema.org + /id/{slug}
projection that is published. The legacy terms owl:isChildOf,
luna:is_active and /node/{nid} URIs are gone everywhere — replaced by
schema:isPartOf, luna:isActive and …/id/{slug} IRIs.
?output=xml/n3/json/jsonld serves this clean projection, matching the triplestore.
Render model. The XSLT chrome (i18n strings, pager, request
and message data) is driven by a separate render-model namespace
https://jeromev.github.io/Luna/render# · prefix ui:
(ui:vocabulary, ui:data, ui:pager, ui:request,
ui:message, …). These terms are not content and never reach the published
graph.
Resource (instance) IRIs are a separate concern — they follow the deployment
host (luna::$site_uri, e.g. http://localhost:8080/id/…), not this
vocabulary namespace.