Get the data
One table, 813,039 rows, one row per mandate (person × position × term). Public domain. No sign-up, no API key, no database to run — the Parquet answers queries straight over HTTP.
Version 1.0.0 · released 2026-09-01 · page rebuilt 2026-09-01
Hugging Face
Browse, search and query in place — or pull one file. The working copy, updated monthly.
mandates.parquet · 60 MB
Zenodo
The citable copy. Every version archived with a DOI, for papers that need a frozen reference.
DOI per release
GitHub Releases
Versioned files next to the pipeline that produced them, with SHA-256 checksums.
CSV · 82 MB gz
Quick start
DuckDB reads the Parquet over HTTP with range requests — this runs anywhere, downloads almost nothing:
SELECT person_name, position, start_date, end_date
FROM 'https://huggingface.co/datasets/rossigab/the-long-register/resolve/main/mandates.parquet'
WHERE country = 'PL' AND level = 'national'
AND start_year <= 1935 AND (end_year >= 1935 OR end_year IS NULL)
ORDER BY position;
import polars as pl
df = pl.read_parquet("hf://datasets/rossigab/the-long-register/mandates.parquet")
One row, concretely
The grain, shown rather than described — machine-readable schema at schema.json, catalogue record at dcat-ap.json:
| field | value |
|---|---|
| statement_id | Q8016-b5597e15-4207-53bc-2a5f-48cfa79196ce |
| person_name | Winston Churchill |
| person_qid | Q8016 |
| position | Prime Minister of the United Kingdom |
| position_qid | Q14211 |
| jurisdiction | United Kingdom |
| country | GB |
| level | national |
| start_date | 1940-05-10 |
| end_date | 1945-07-26 |
| parliamentary_group | null |
| source_url | https://www.wikidata.org/entity/Q8016 |
Updates
The pipeline re-runs on the first of each month: discovery → fetch → normalise → validate, then an agent researches open anomalies (proposals only — it never writes to the data), and a release is cut if anything moved.
| version | date | rows | coverage | |
|---|---|---|---|---|
| v1.0.0 | 2026-09-01 | 813,039 | 683–2026 | files |
What the record holds, by country
Schema
Primary key statement_id — the Wikidata statement GUID. Full machine-readable versions ship with every release (schema.json, dcat-ap.json).
| field | type | description |
|---|---|---|
| statement_id | string | Wikidata statement GUID; stable primary key for the mandate |
| person_qid | string | Wikidata entity ID of the office-holder |
| person_name | string | English label of the office-holder |
| position_qid | string | Wikidata entity ID of the office |
| position | string | English label of the office |
| country | string | ISO 3166-1 alpha-2 of the primary present-day country |
| countries_all | string | Semicolon-separated ISO codes incl. successor states of multinational polities |
| jurisdiction | string | Historical or present-day state the office belonged to |
| level | string | national | supranational | subnational |
| jurisdiction_link | string | P1001 = office formally scoped to the jurisdiction (high precision); P17 = only country-of-origin known |
| start_date | string | Term start, ISO 8601 date, null if unknown |
| end_date | string | Term end, ISO 8601 date, null if in office or unknown |
| start_year | integer | Signed year of start; negative = BCE. Use this for filtering |
| end_year | integer | Signed year of end |
| parliamentary_group | string | Parliamentary group / caucus for this mandate |
| electoral_district | string | Constituency for this mandate |
| parliamentary_term | string | Legislative term this mandate belongs to |
| replaces_qid | string | Wikidata ID of predecessor in the office |
| replaced_by_qid | string | Wikidata ID of successor in the office |
| party_labels | string | Pipe-separated parties of the person (person-level, not term-level) |
| party_qids | string | Pipe-separated Wikidata IDs of those parties |
| sex | string | Sex or gender as recorded in Wikidata |
| birth_date | string | Date of birth |
| death_date | string | Date of death |
| birth_year | integer | Signed year of birth |
| source | string | Upstream source; 'wikidata' for all rows in v1 |
| source_url | string | Resolvable URL for the person entity |
| fetched_at | string | Date the record was retrieved |
| processing_version | string | Version of this pipeline that produced the row |
Read this before you use it
- jurisdiction_link distinguishes precision: P1001 rows are offices formally scoped to a jurisdiction; P17 rows are only known to belong to the country and are a noisier population. Filter to P1001 for a high-precision subset.
- level='subnational' rows (mayors, regional councillors) are included for completeness but are NOT the dataset of record; filter to national/supranational for the headline population.
- party_labels is person-level, not mandate-level: a politician who changed party carries all their parties on every row. Use parliamentary_group for term-accurate affiliation where present.
- Coverage inherits Wikidata's demographic and era biases: women and pre-20th-century figures are systematically under-represented relative to the historical record, and coverage density varies by country. Raw counts are not an unbiased sample of historical office-holding; weight or caveat accordingly.
- Coverage is a function of Wikidata coverage. It is strong for heads of state/government across all periods and for post-1945 legislatures; it thins considerably for 19th-century and earlier legislatures, and is uneven between countries.
- Multinational polities (Austria-Hungary, USSR, Ottoman Empire, Holy Roman Empire) are attributed to a primary successor in `country` and to every successor in `countries_all`. Aggregating on `country` alone will undercount the non-primary successors.
- Dates before 1582 are proleptic and calendar systems vary by source; treat pre-modern dates as year-precision at best.
- Absence of a row is not evidence that an office was vacant.
Questions agents and humans ask
- What questions can this dataset answer?
- Population-level questions about political office-holding: who governed a country in a given year, how long ministers survived in office, when women entered each parliament, how turnover moved around 1918 or 1989. It holds 511,969 national and supranational mandates for 250,846 people across 47 European states, one row per mandate (person × position × term).
- Where does the data come from?
- Every row is derived from Wikidata and carries a source_url resolving to the Wikidata entity it was read from, a fetched_at date, and the pipeline version that produced it. The pipeline, its validation rules and its open defect queue are public at https://github.com/Milziade21/the-long-register.
- How current is it?
- The register is rebuilt from source on the first of each month. The current version is v1.0.0, released 2026-09-01; this page was rebuilt 2026-09-01. Immutable versions are archived with DOIs on Zenodo.
- Can I use it commercially, or without asking?
- Yes. The dataset and pipeline are CC0 (public domain) — no permission, no attribution required, though citation is appreciated. Wikidata, the upstream source, is itself CC0.
- A politician is missing — is that a gap in history or in the data?
- In the data. Coverage is Wikidata's coverage: strong for heads of state and government in all periods and for post-1945 legislatures, thinner earlier. Absence of a row is never evidence an office was vacant. The best fix is to add the person to Wikidata — the next monthly refresh picks them up.
- How are errors found and corrected?
- A deterministic rule suite flags impossible dates, implausible ages, overlapping holders and unmapped jurisdictions (2,775 findings currently open — published, not hidden). Corrections are applied deterministically from a reviewed file, and every correction is recorded in the public changelog.
Related datasets
The Long Register does not replace the specialist datasets — it complements them with span and grain. Depending on the question, you may want:
- Archigos — heads of state and government worldwide, 1875–2015, with exit modes (Goemans, Gleditsch & Chiozza).
- ParlGov — parties, elections and cabinets for established democracies since 1945.
- WhoGov — cabinet members worldwide since 1966 (Nyrup & Bramwell).
- Party Facts — the party-ID crosswalk between political datasets.
- EveryPolitician — mySociety's archived project; its effort continues inside Wikidata, which this register reads.
- IPU Parline — authoritative current composition of every national parliament.
- European Parliament Open Data — MEPs and EP activity, from the institution itself.
About the project
Built from Wikidata via the QLever SPARQL endpoint by a fully open pipeline: deterministic rules decide what is wrong, a language-model agent may propose what is right, and nothing an agent proposes enters the data without either a human or a narrow, audited auto-promotion rule. Every row carries its source URL and the pipeline version that produced it. Code, validation rules and open anomalies are on GitHub.
Cite it as:
Rossi, G. (2026). The Long Register: European political mandates
since state foundation (v1.0.0) [Data set]. Zenodo.
https://doi.org/10.5281/zenodo.22236882
Corrections, questions, suggestions
Three routes, in order of usefulness:
- The fact is wrong? It is probably wrong in Wikidata — fix it there, and the correction flows into the next monthly release and to every other user of the source.
- Wikidata is right and this dataset is wrong? That is a pipeline bug — file a correction or a coverage gap on GitHub, with a source.
- Anything else — the form below opens an email draft.