You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make committed TriG base-relative (base applied at load time)
Committed datasets/current/**/*.trig now use base-relative IRIs with no
@base (e.g. <persons/84854/#this>) instead of absolute
https://linkeddata.lt/… URIs. The base is supplied at load/parse/validate
time, so one committed dataset serves any deployment base (localhost dev,
linkeddata.lt prod) with no regeneration.
RDF stores only absolute IRIs, so the data loaded into Fuseki is identical;
only the git serialization changes. The mappings still mint absolute IRIs
in-model — a new etl/lib/relativize.sh rewrites arq/rdflib output to
relative on write (riot streaming writer + strip @base), leaving external
URIs (Wikidata, Commons, lrs.lt, schema.org, EU tables, mailto/tel) absolute.
- write: relativize.sh; graphify.sh pipes arq through it; reconcile/photos
become base-aware via rdflib publicID and are relativized on write
- read: validate.sh/shacl.sh/run.sh take a base, resolving relative→absolute
- load: tdb-loader resolves against BASE_URI (.env) via riotcmd.riot before
tdb2.tdbloader; make load passes -e BASE_URI
- CI (shacl-validation.yml) + docs (CLAUDE.md, README, URI-SCHEME, config.mk)
Verified with Jena 5.6.0: round-trip (riot --base=$B --output=nquads) of
every relativized file is byte-identical to the prior absolute triples;
validation, cross-graph queries, and load-time rebase to both bases pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments