Proposal · Discussion draft v0.1 · 2026-05-21
Open Law Standards
Six open standards for the identification, structuring, publication and verification of Swiss court decisions. Where international standards exist — do not reinvent. Where they are missing — make a simple, documented proposal and deliver it visibly in the reference implementation.
§01 Rationale
Why open standards
Swiss court decisions are official works (Art. 5 para. 1 CopA) and therefore in the public domain. Even so, frictionless machine access to them is anything but self-evident today:
- Every source assigns identifiers by its own convention. The same BGE decision has five different URLs in five databases.
- Most cantonal portals deliver PDFs or HTML without machine-readable structure — facts, considerations and the dispositive must be reconstructed by hand by everyone.
- Citations between decisions are plain-text strings (
BGE 140 III 86) — every consuming application must resolve them itself, with varying accuracy. - There is no cryptographically verifiable proof that a quoted decision text is actually the officially published one. In the age of hallucinating AI tools, this is the central question of trust.
Four of the six proposed standards profile existing international specifications for the Swiss context (Schema.org/LegalCase, Akoma Ntoso, Markdown, ELI). Two are genuinely Swiss proposals: the cli:ch Caselaw Identifier (with ECLI as a deterministic European projection), because existing identifier schemes flatten Swiss specifics — trilingualism, cantonal sovereignty, pinpoint addressing; and a provenance layer (Merkle root over each publication, Bitcoin-anchored) that the legal-data world does not yet have.
This is not a manifesto and not a demand on the federal courts or cantons, but an open basis for discussion. The proposal is deliberately small and compatible: each provision can be adopted individually, without blocking others.
§02 Summary
The six standards
Identification
cli:ch — Swiss Caselaw Identifier (primary) · ECLI as European projectionEvery decision carries two deterministically linked identifiers: cli:ch as the canonical Swiss form and ECLI as a lossy projection for European interoperability.
cli:ch makes five properties of Swiss case law first-class that ECLI flattens:
- Trilingualism — DE/FR/IT versions of a BGE are legally equivalent authentic texts (Art. 14 PublA). cli:ch treats language as a first axis via
?lang=. - Cantonal sovereignty — 26 independent judicial systems remain visible (
cli:ch:zh:…,cli:ch:ti:…), not collapsed into an opaque court code. - Pinpoint addressing — consideration level first-class via
#e-4.1(Swiss citation convention). - Chamber granularity — Cantonal High Court, Administrative Court, Social Insurance Court etc. remain explicitly named instead of vanishing into a 3-letter code.
- Versioning —
@YYYY-MM-DDaddresses a specific anonymisation version; rare, but legally relevant when needed.
cli:ch:bge:140-III-86
cli:ch:bge:140-III-86?lang=fr (französische Fassung desselben BGE)
cli:ch:bge:140-III-86#e-4.1 (Pinpoint auf Erwägung 4.1)
cli:ch:bger:6B_1234/2025
cli:ch:bvger:A-1234/2024
cli:ch:zh:obergericht:LB230012 (Kanton Zürich, Obergericht)
cli:ch:ti:tribunale-appello:34.2025.27 (Kanton Tessin, Tribunale d'appello)
cli:ch:finma:2024-12345 (FINMA-Verfügung)
Form: cli:ch:<court>[:<chamber>]:<docket>[@<version>][?lang=<l>][#<pinpoint>]. Federal courts without a canton prefix, cantonal courts with an ISO-3166-2 canton code plus the court's own designation. The identifier model parallels the FRBR layers of Akoma Ntoso (Work / Expression / Manifestation) — we do not invent, we apply an established model with Swiss labelling.
ECLI as projection for European resolvers: from every cli:ch an ECLI is derived deterministically (pure function cli_ch_to_ecli). The projection is many-to-one — language, pinpoint, version and chamber detail are lost.
cli:ch:bge:140-III-86 → ECLI:CH:BGE:2014:140.III.86
cli:ch:bger:6B_1234/2025 → ECLI:CH:BGER:2025:6B_1234.2025
cli:ch:zh:obergericht:LB230012 → ECLI:CH:ZHO:2023:LB230012
Why a Swiss form of its own in the first place? Because Swiss case law has properties — trilingualism as equivalent authentic texts, 26 sovereign cantonal judicial systems, pinpoint citation at consideration level — that, in a general European scheme, necessarily collapse onto a flat axis. cli:ch makes them first-class; ECLI ensures European connectivity. The two together are more than the choice of one.
Existing internal identifiers (case numbers, file numbers) remain unchanged — cli:ch and ECLI are additional, standardised layers.
Reference implementation: cli_ch.py mints cli:ch URIs deterministically; cli_ch_to_ecli() projects onto ECLI. cli_ch.py on GitHub · ecli.py on GitHub.
Metadata
Schema.org / LegalCase (JSON-LD)Every decision web page carries in the <head> a Schema.org/LegalCase block as JSON-LD with both identifiers (cli:ch + ECLI), court, date, language, regeste, outgoing case and legislation citations.
{
"@context": "https://schema.org",
"@type": "LegalCase",
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "cli:ch",
"value": "cli:ch:bge:140-III-86"
},
{
"@type": "PropertyValue",
"propertyID": "ECLI",
"value": "ECLI:CH:BGE:2014:140.III.86"
}
],
"name": "BGE 140 III 86",
"datePublished": "2014-04-15",
"inLanguage": "de",
"court": {"@type": "GovernmentOrganization", "name": "Bundesgericht"},
"citation": [...], // ausgehende Fall-Zitationen
"legislationCited": [...] // ausgehende Gesetzeszitate
}
This achieves two things: search engines index the decision with rich-result support, and AI agents receive a machine-readable record without web scraping.
Reference: every decision page under opencaselaw.ch/entscheid/<id> delivers this block. Implementation in seo_pages.py.
Structure
Akoma Ntoso 3.0 (XML)When an XML representation of the decision is required, then per Akoma Ntoso 3.0 (UN/OASIS standard for legislative and judicial documents). Facts, considerations, dispositive and regeste in the designated elements — do not invent your own XML language.
Akoma Ntoso is clearly the least painful path: already in use in Italy, Brazil, the European Union and the UN. Swiss specifics (Swiss citation, cantonal case numbers, multilingualism) can be embedded as optional metadata attributes without bending the core schema.
Status: partly in production in OpenCaseLaw (Materialien v0.2 uses Akoma Ntoso for federal messages). Full XML output for court decisions is a roadmap item for 2026 Q3.
Full text
Markdown with consideration anchors (Swiss citation)For the machine-readable full-text representation: Markdown with HTML anchors on every consideration, named after the Swiss citation (E. 4.1 → #e-4-1).
# BGE 140 III 86
## Sachverhalt {#sachverhalt}
...
## Erwägungen
### E. 2 {#e-2}
...
### E. 4.1 {#e-4-1}
Die zentrale Aussage steht hier...
## Dispositiv {#dispositiv}
1. Die Beschwerde wird abgewiesen.
This allows pinpoint-precise linking to every consideration — the lifeblood of legal citation practice. Tools can cite and verify considerations individually, without reparsing the entire decision.
Reference: opencaselaw.ch/entscheid/bge_BGE_140_III_86#e-4-1 jumps directly to consideration 4.1.
Citations
Resolved, machine-readable, bidirectionalEvery citation of another decision or statute article is resolved: not only as a plain-text string, but linked to a concrete cli:ch (case, primary — ECLI available as a projection) or ELI URI (statute). Bidirectional — both outgoing (what this decision cites) and incoming (who cites this decision).
The Swiss citation graph thus becomes the shared substrate for doctrine tracking, leading-case detection, appeal-chain tracing. Exactly the material AI tools need to verify what is cited — instead of hallucinating.
Reference: OpenCaseLaw currently resolves 6.46 M case-citation edges and 11.3 M legislation citations, re-verified daily. Available via the MCP tools find_citations, find_appeal_chain, find_leading_cases.
Provenance
RFC-6962 Merkle anchor · OpenTimestamps-Bitcoin · Live from 2026-05-21At every publish of the corpus, an RFC-6962 Merkle tree is computed over all decisions. Each leaf commits to (decision_id, cli:ch, ECLI, content_hash, decision_date). The root is
- committed to the public Git repository (
docs/integrity/<YYYY-MM-DD>.{root,json}) — daily, ~700 bytes per publish, - anchored on the Bitcoin blockchain via OpenTimestamps (
.root.otsfile, ~945 bytes per publish, free, upgraded in ~1 Bitcoin block). - available as an inclusion proof path per decision via the API (roadmap).
This means every quoted decision statement can be verified bit-exact against the publication root — without trusting opencaselaw.ch. Hallucinations are not prevented by promises but proven by mathematics.
Status: live from 2026-05-21. The hashing convention (RFC 6962, same as Certificate Transparency) and the leaf schema are documented at opencaselaw.ch/integrity/. This is the only one of the six standards that does not profile an existing schema — the convention is to be consolidated publicly at openlawstandards.ch.
§03 OpenCaseLaw.ch
Reference implementation
The six standards are not hypothetical. All six are already in production in OpenCaseLaw.ch (Akoma Ntoso already live for Materialien, on the roadmap for court decisions):
- 01 Identification: cli:ch (Swiss form, primary) plus ECLI (European projection) for all 1,050,000+ decisions; both deterministically minted on call, visible in every API response and every
/entscheid/<id>page. HTTP resolver under/cli/ch/…. - 02 Metadata: Schema.org/LegalCase JSON-LD on every decision page, with cli:ch + ECLI in the
identifierarray, citation and legislation graph. - 03 Structure: Akoma Ntoso for Materialien (federal messages) already in production. For court decisions: roadmap Q3 2026.
- 04 Full text: Markdown with consideration anchors, Swiss-citation-compliant. Pinpoint links like
/entscheid/bge_BGE_140_III_86#e-4-1work. - 05 Citations: 6.46 M resolved case edges + 11.3 M legislation citations, regenerated daily, available bidirectionally.
- 06 Provenance: live from 2026-05-21 — daily RFC-6962 Merkle root over all decisions under
docs/integrity/<date>.root, documented at opencaselaw.ch/integrity/. OpenTimestamps anchor and API endpoint for inclusion proof paths as next steps.
Everything open, everything CC0 for the data and MIT for the code. Other providers can adopt individual provisions or take over the whole convention — the specification belongs to no single provider.