Documentation

Overview

Tutorials
How-to guides
Infrastructure
Reference
Explanation
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.