v0.1.0 — Initial Release
[0.1.0] — 2026-07-21
Added
- Initial release. 7 read-only tools over the LINDAS SPARQL endpoint:
search_cubes,get_cube_structure,query_cube_observations,
list_publishers,resolve_municipality,run_sparql,api_status. - Three-layer, extraction-ready
lindas/package:client.py(raw SPARQL/HTTP),
queries.py(anchored templates),cube.py(vocabulary guardrail). - Two-phase cube access with automatic code-to-label resolution.
- Version deduplication in
search_cubes(latest_only, default on). - Dual transport via
LINDAS_MCP_TRANSPORT; retry 2s/4s/8s; 400 passthrough. - Bilingual documentation (EN/DE) and full probe report in
docs/probe-lindas.md.
Known findings
Discovered during the live probe on 2026-07-21.
- Broad SPARQL times out.
COUNT(*)over the whole store andDISTINCT ?g
over all named graphs ran 70–90 s into a timeout (HTTP 000). The same question
anchored on?x a cube:Cubeanswers in ~2 s. Every template is anchored;
run_sparqlwarns and caps runtime. - Observations hang off
cube:observationSet, never directly off the cube.
The naive?cube cube:observation ?obsreturns zero rows. Caught by a live
test, not by mocks. - Dimension values are codes, not labels (region
1805, level4). Code
lists resolve viash:in → rdf:rest*/rdf:first → schema:name. Cantons are
coded asld.admin.ch/canton/<n>even without an sh:in list; the bare number
is surfaced. - Cubes are versioned in the URI (
.../cube/2024-1) withschema:version
andschema:creativeWorkStatus. Search deduplicates to the newest published. - Licences are per cube and often Fedlex URIs (
fedlex.data.admin.ch/eli/cc/),
which doubles as a join to fedlex-mcp. - Publishers deduplicate cleanly on
dcterms:creator(a single URI), not on
schema:publisher(multilingual, splits one body into several rows).