Skip to content

Person matching: lifetime guard (Wikidata death dates), curated Seimas alignments - #76

Merged
namedgraph merged 1 commit into
masterfrom
feat/match-lifetime-guard
Oct 21, 2026
Merged

namedgraph merged 1 commit into
masterfrom
feat/match-lifetime-guard

Conversation

@namedgraph

Copy link
Copy Markdown
Member

Follow-ups of the audit in #75, which found one wrong exact-name link and one duplicate person.

Lifetime guard

ltlod-reconcile persons now reads Wikidata's date of death (P570) and writes schema:deathDate into seimas/alignments.trig (148 persons). Every name matcher — VMI declarations, VTEK contacts / PINREG / lobbyists, VRK candidates and campaign participants — loads it (--alignments) and refuses any candidate who had died before the source's date: a namesake who had died is no candidate at all, so the living namesake (if unique) still resolves.

It drops two 2020 candidate links, both to Seimas members who had died:

  • "Jonas KUBILIUS" (LSDDP) → the mathematician persons/122/ († 2011) — the audit's one wrong link;
  • "Algirdas GRICIUS" (Greens) → persons/41/, member 2000–2004 († 2013) — not in the sample.

1 719 candidate results, 678 → persons/ (was 680).

Curated Seimas–Wikidata alignments

etl/seimas/data/wikidata-alignments.csv (asmens_id → QID, --curated) aligns persons whose LRS and Wikidata labels differ. The one entry — 12253 "Jaroslaw Narkiewicz" = Q1282407 "Jaroslav Narkevič" — makes the officials pipeline reuse the Seimas person for his 2019–2020 ministry instead of minting persons/Q1282407/ (350 persons: 162 reused, 188 new). The Lithuanian spelling is added to declarations/data/aliases.csv (shared by VMI and VTEK), so his PINREG declaration and two lobbying contacts link to 12253 by alias. 64 VTEK matches to review (was 67).

Reconcile fix found on the way

The candidate index kept only the first WDQS row's label per item, so a match depended on row order ("Linas Linkevičius" vs "Linas Antanas Linkevičius" — the first run of this branch lost six alignments). Every label is indexed now: 758 of 831 Seimas persons aligned (was 738), the 20 new ones checked against their lt labels, none lost. 13 officials' offices remain attributed by exact-name (was 19 — four of those persons are now aligned by QID).

Also

  • audit sampler: recounts the population even for review files it keeps (it wrote an empty population.csv otherwise); the recorded table in CLAUDE.md shows the population after these fixes;
  • SHACL: schema:deathDate on the Person shape; docs in CLAUDE.md, README, ONTOLOGY-NOTES;
  • datasets whose only change was the build timestamp are left as committed; 0 dangling persons/ links.

🤖 Generated with Claude Code

…imas alignments

Follow-ups of the audit (#75), which found one wrong exact-name link and a
duplicate person.

Lifetime guard: ltlod-reconcile persons now reads P570 and writes
schema:deathDate into seimas/alignments.trig (148 persons). Every name
matcher (VMI declarations, VTEK contacts/PINREG/lobbyists, VRK candidates
and campaign participants) loads it and refuses any candidate who had died
before the source's date, so a namesake who had died is no candidate at
all. It drops two 2020 candidate links: "Jonas KUBILIUS" (LSDDP) -> the
mathematician († 2011), found by the audit, and "Algirdas GRICIUS"
(Greens) -> the member of 2000–2004 († 2013), which the sample had not
drawn. 1 719 candidate results, 678 -> persons/ (was 680).

Curated alignments: etl/seimas/data/wikidata-alignments.csv (asmens_id ->
QID, --curated) aligns persons whose LRS and Wikidata labels differ. The
one entry, 12253 "Jaroslaw Narkiewicz" = Q1282407 "Jaroslav Narkevič",
makes the officials pipeline reuse the Seimas person for his 2019–2020
ministry instead of minting persons/Q1282407/ (350 persons: 162 reused,
188 new); the Lithuanian spelling goes into declarations/data/aliases.csv,
so his PINREG declaration and two lobbying contacts now link to 12253 by
alias (64 VTEK matches to review, was 67).

Reconcile fix: the candidate index kept only the first WDQS row's label
per item, so matching depended on row order — "Linas Linkevičius" vs
"Linas Antanas Linkevičius". Every label is indexed now: 758 of 831
Seimas persons aligned (was 738; the 20 new ones checked against their
lt labels), none lost. 13 officials' offices remain attributed by
exact-name (was 19: four of those persons are now aligned by QID).

Audit sampler: recount the population even for review files it keeps
(it wrote an empty population.csv otherwise). SHACL: schema:deathDate on
the Person shape. Datasets whose only change was the build timestamp are
left as committed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@namedgraph
namedgraph merged commit b45fe71 into master Oct 21, 2026
4 checks passed
@namedgraph
namedgraph deleted the feat/match-lifetime-guard branch October 21, 2026 21:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant