Infrastructure · The modules: what they do, run, test, call
Politikdaten-Engine
The own build over the Federal Chancellery's public LINDAS endpoint: popular votes per canton with the Ständemehr, referendum bills, popular initiatives, the Federal Council and National Council elections — 44 cubes, every figure with its provenance.
On this page
What it does
The LINDAS server reads the Confederation's political data cubes over the public SPARQL endpoint lindas.admin.ch/query — 44 cubes under politics.ld.admin.ch: popular votes, referendum bills, popular initiatives, the National Council elections of 2019, 2023 and 2027, the Federal Council and the Federal Chancellery's register of vested interests. Eight tools: the list of cubes with their states, search by a word of the name, a cube's declared dimensions, the values one dimension takes, the rows themselves with filters, the versions of a family, everything the store says about one IRI, and an IRI resolved to its label. The order is the point: the holding was measured first, the measurements became 58 rules, the rules became 38 numbered contract points, and only then this server. It does no arithmetic: the Ständemehr is READ from the row, never counted from the cantons — counting gives 17 where the Chancellery states 15.5 — and a ballot outcome comes from its own dimension, never from the yes share. States are answers, not faults: a published cube holding no observations says that it is one, and «not stated» stays «not stated», never 0. No licence is stated at the source, and every answer says so.
Run it yourself
You need:
- Rust (stable via rustup) and Git; every command runs from the root of the corpus checkout.
From the root of the corpus checkout, line by line:
cargo run --locked --manifest-path mcp/gateway/Cargo.toml -- --root . --http 8700 --fedlex-fixtures mcp/servers/fedlex/tests/fixtures --lindas-fixtures mcp/servers/lindas/tests/fixtures
Then you should see:
gateway on 127.0.0.1:8700
Like the fedlex engine: MCP over stdio, simplest start behind the gateway. Directly: cargo run --locked --manifest-path mcp/servers/lindas/Cargo.toml -- --fixtures mcp/servers/lindas/tests/fixtures.
Test
cargo test --locked --manifest-path mcp/servers/lindas/Cargo.toml
- Recorded fixtures:
mcp/servers/lindas/tests/fixtures - Runs without network: every answer comes from the repository, the result is the same every run.
Call
- Public: not yet — No public endpoint: zone, route and deployment are not switched on.
- Local: über das Gateway: POST http://127.0.0.1:8700/tool/lindas.
Contracts
- Tool contract v0
mcp/servers/lindas/TOOLSET-v0.md - Rulebook
docs/reference/lindas-cube-rules.md - Engine manifest
mcp/servers/lindas/engine.manifest.json
List all 44 cubes
curl -s -X POST http://127.0.0.1:8700/tool/lindas.list_cubes -H 'content-type: application/json' -d '{}'
Response (excerpt):
{"cubes":[{"cube":"https://politics.ld.admin.ch/fc/cube-chancellor","description":"Bundeskanzler der Schweiz mit Partei, Kanton und Amtszeiten.","family":"fc","name":"Bundeskanzler","observations":15, …}, …]}
Contribute
Changes go through merge requests and the same gates as the association's own: formatting, Clippy without warnings, tests, seal and drift checks. Security reports, in confidence, to [email protected].
The base tier costs nothing; what the operation lives on is under About us, Financing.
Module card
State, evidence, download and dependencies are on the infrastructure page: Politikdaten-Engine.