Landtage und Regierungen im Lexikon, Rang als Gleichstandsregel
Drei neue Spiegelabfragen schliessen die gemessene Luecke im
Akteurslexikon: landtage (1539), regierung (2003), sondergesandte (5).
Lexikon 5540 -> 8856 Akteure, Aufloesung 21,1 % -> 23,2 % ueber 5018
Items. Der Gewinn steckt in wenigen Personen - Siegmund 123, Witkoff
102, Kushner 93, Lawrow 21.
Drei Abfragen, weil Wikidata drei Wege verlangt:
landtage P31/P279*, nicht P279* - "Mitglied des Landtag
Sachsen-Anhalt" ist eine Instanz von Q1939559, keine
Unterklasse. Dazu ein schaerferer Datumsfilter: von
11464 je gewaehlten Personen tragen 9700 keinerlei
Zeitangabe, ein blosses "kein Ende gesetzt" liesse die
Weimarer Republik herein.
regierung P1308, Amt -> derzeitiger Inhaber. Ueber die Amtszeit
der Person faellt Lawrow (amtiert seit 2004) aus jedem
Datumsfenster, ohne Fenster kommen Tausende Minister
herein, deren Amtszeit nie zu Ende gepflegt wurde.
sondergesandte Der andere Weg, fuer Witkoff - sein Amt traegt kein
P1308. Beide Wege in einer Abfrage laufen in die
Zeitgrenze der WDQS.
Kushner steht in hand.json: sein Amt endete 2021, seine Rolle nicht.
Die Erweiterung hat zuerst Schaden angerichtet. Mit den Landtagen kamen
Janine und Heiner Merz ins Lexikon, "Merz" wurde mehrdeutig, und 125
Nennungen des Bundeskanzlers fielen aus. Aus jedem "Hamburg" wurde eine
Kultusministerin (22-mal), aus "KI" ein Nachname (16-mal). Daher sieben
neue Sperreintraege und eine dritte Regel in waehle(): traegt genau ein
Kandidat den niedrigsten Rang, gewinnt er. Der Rang kommt aus der
Spiegelabfrage, Staatsfuehrung vor Bundestag vor Landtag - keine
Wichtigkeitsordnung, sondern eine Erwartung darueber, wen eine deutsche
Schlagzeile mit blossem Nachnamen meint. Abschlag 0,15, Grund steht in
der Nutzlast. Die Amtstabelle bekommt den schlechtesten Rang: sie reicht
bis 1794 zurueck, mit Rang 0 wurde aus "Teufel" ein
Ministerpraesident a. D.
Dabei fiel ein Loch im Fingerabdruck auf: NACHNAMEN_SPERRE stand nicht
in EINSTELLUNGEN_FEST. Ein Eintrag mehr aenderte das Ergebnis von 4868
auf 4820 aufgeloeste Nennungen unter derselben coder_version - genau
der Fehler, den die Version verhindern soll. Sperrliste und Rangordnung
gehen jetzt als Hash ein.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
a2e62a7d5e
commit
3a9c000a0e
@@ -450,3 +450,58 @@ Gemessen, nicht behauptet: ein Slot-Lauf im Container (Debian trixie,
|
|||||||
Python 3.13) erzeugt für die Akteure bitgleich dieselbe Nutzlast wie die
|
Python 3.13) erzeugt für die Akteure bitgleich dieselbe Nutzlast wie die
|
||||||
Workstation (Fedora, Python 3.14) — 3407 Codings, 0 Abweichungen, gleiche
|
Workstation (Fedora, Python 3.14) — 3407 Codings, 0 Abweichungen, gleiche
|
||||||
`coder_version`.
|
`coder_version`.
|
||||||
|
|
||||||
|
## Landtage und Regierungen: was die Lexikonerweiterung gekostet hat
|
||||||
|
|
||||||
|
Zwei neue Spiegelabfragen, 08.09.2026, gemessen an 5018 Items:
|
||||||
|
|
||||||
|
| | vorher | nachher |
|
||||||
|
|---|---|---|
|
||||||
|
| Akteure im Lexikon | 5540 | 8856 |
|
||||||
|
| aufgelöste Nennungen | 4539 (21,1 %) | 4982 (23,2 %) |
|
||||||
|
|
||||||
|
Der Gewinn steckt fast vollständig in wenigen Personen: Witkoff 102,
|
||||||
|
Kushner 93, Siegmund 123, Lawrow 21. Der lange Schwanz bleibt liegen —
|
||||||
|
von 1757 unaufgelösten PER-Formen trugen 1344 genau eine Nennung.
|
||||||
|
|
||||||
|
### Zwei Wege zum amtierenden Minister, und beide werden gebraucht
|
||||||
|
|
||||||
|
`P1308` (Amt → derzeitiger Inhaber) fängt Lawrow, der seit 2004 amtiert
|
||||||
|
und aus jedem Datumsfenster fällt. Der Weg über die Amtszeit der Person
|
||||||
|
fängt Witkoff, dessen Amt kein `P1308` trägt. Beides in einer Abfrage zu
|
||||||
|
vereinen, läuft in die Zeitgrenze der WDQS — deshalb zwei Dateien.
|
||||||
|
|
||||||
|
Die Landtagslisten sind nicht über Unterklassen erreichbar: "Mitglied des
|
||||||
|
Landtag Sachsen-Anhalt" ist eine *Instanz* von Q1939559, keine
|
||||||
|
Unterklasse. `P31/P279*` statt `P279*`.
|
||||||
|
|
||||||
|
### Die Erweiterung hat zuerst Schaden angerichtet
|
||||||
|
|
||||||
|
Mit den Landtagen kamen Janine und Heiner Merz ins Lexikon. "Merz" war
|
||||||
|
damit mehrdeutig, und **125 Nennungen des Bundeskanzlers fielen aus** —
|
||||||
|
der teuerste Einzelposten des Korpus, verloren durch einen Zugewinn.
|
||||||
|
Ebenso wurde aus jedem "Hamburg" eine niedersächsische Kultusministerin
|
||||||
|
(22-mal) und aus "KI" ein südkoreanischer Nachname (16-mal).
|
||||||
|
|
||||||
|
Daraus zwei Änderungen:
|
||||||
|
|
||||||
|
1. Die Sperrliste wuchs um sieben Einträge, alle mit Begründung.
|
||||||
|
2. `waehle()` hat eine dritte Regel: trägt genau ein Kandidat den
|
||||||
|
niedrigsten Rang, gewinnt er. Der Rang kommt aus der Spiegelabfrage —
|
||||||
|
Staatsführung vor Bundestag vor Landtag. Das ist kein Münzwurf,
|
||||||
|
sondern eine Erwartung darüber, wen eine deutsche Schlagzeile mit
|
||||||
|
blossem Nachnamen meint; Abschlag 0,15 auf die Konfidenz, und der
|
||||||
|
Grund steht als `grund` in der Nutzlast.
|
||||||
|
|
||||||
|
Die Amtstabelle bekam dabei den *schlechtesten* Rang, nicht den besten.
|
||||||
|
Sie reicht bis 1794 zurück und besteht überwiegend aus Verstorbenen; mit
|
||||||
|
Rang 0 wurde aus "Teufel" ein Ministerpräsident a. D. und aus "Otto" ein
|
||||||
|
Bremer Bürgermeister des 18. Jahrhunderts.
|
||||||
|
|
||||||
|
### Ein Loch im Fingerabdruck
|
||||||
|
|
||||||
|
`NACHNAMEN_SPERRE` stand nicht in `EINSTELLUNGEN_FEST`. Ein Eintrag mehr
|
||||||
|
änderte das Ergebnis von 4868 auf 4820 aufgelöste Nennungen — unter
|
||||||
|
derselben `coder_version`. Genau der Fehler, den die Version verhindern
|
||||||
|
soll, und er war zwei Module lang unentdeckt. Die Sperrliste geht jetzt
|
||||||
|
als Hash in den Fingerabdruck ein, die Rangordnung ebenso.
|
||||||
|
|||||||
+68
-4
@@ -87,6 +87,17 @@ NACHNAMEN_SPERRE = {
|
|||||||
"zeit",
|
"zeit",
|
||||||
"spiegel",
|
"spiegel",
|
||||||
"focus",
|
"focus",
|
||||||
|
# Staedtenamen, die zugleich Nachnamen von Abgeordneten sind. Erst mit
|
||||||
|
# den Landtagen kamen sie ins Lexikon, und sofort wurde aus jedem
|
||||||
|
# "Hamburg" eine niedersaechsische Kultusministerin - 22-mal im Korpus
|
||||||
|
# vom 08.09.2026.
|
||||||
|
"hamburg", # Julia Willie Hamburg, MdL Niedersachsen
|
||||||
|
"rostock", # Clemens Rostock, MdL Brandenburg
|
||||||
|
"oldenburg", # Simone Oldenburg, MdL Mecklenburg-Vorpommern
|
||||||
|
"ki", # Ki-hong Nam - in deutschen Schlagzeilen die KI
|
||||||
|
"nothing", # Volker Nothing, MdL - sonst das englische Wort
|
||||||
|
"andrew", # Stuart Andrew, MP - sonst ein Vorname
|
||||||
|
"champagne", # Francois-Philippe Champagne - sonst das Getraenk
|
||||||
}
|
}
|
||||||
|
|
||||||
# Aliase, die Wikidata fuehrt, die in Schlagzeilen aber regelmaessig etwas
|
# Aliase, die Wikidata fuehrt, die in Schlagzeilen aber regelmaessig etwas
|
||||||
@@ -99,6 +110,37 @@ FORMEN_SPERRE = {
|
|||||||
# entscheiden, und beide Lesarten sind haeufig.
|
# entscheiden, und beide Lesarten sind haeufig.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Rangordnung der Spiegelabfragen fuer den Gleichstandsfall. Sie ist eine
|
||||||
|
# Aussage darueber, wen eine deutsche Schlagzeile mit blossem Nachnamen
|
||||||
|
# meint, nicht darueber, wer wichtiger ist. Der Anlass ist messbar: mit den
|
||||||
|
# Landtagen kamen Janine und Heiner Merz ins Lexikon, und "Merz" war
|
||||||
|
# schlagartig mehrdeutig - 125 Nennungen des Bundeskanzlers fielen aus.
|
||||||
|
#
|
||||||
|
# Ein Rang entscheidet nur, wenn genau ein Kandidat den niedrigsten traegt.
|
||||||
|
# Bei Gleichstand innerhalb eines Rangs bleibt es beim Muenzwurfverbot.
|
||||||
|
RANG = {
|
||||||
|
"hand": 0,
|
||||||
|
"staatsfuehrung": 1,
|
||||||
|
"regierung": 1,
|
||||||
|
"sondergesandte": 1,
|
||||||
|
"bundestag": 2,
|
||||||
|
"landtage": 3,
|
||||||
|
# Die Amtstabelle reicht bis 1794 zurueck und besteht ueberwiegend aus
|
||||||
|
# Verstorbenen. Sie darf einen Gleichstand nicht gewinnen: sonst wird
|
||||||
|
# aus "Teufel" ein Ministerpraesident a.D. und aus "Otto" ein Bremer
|
||||||
|
# Buergermeister des 18. Jahrhunderts. Wer heute im Amt ist, steht
|
||||||
|
# ohnehin in einer der Personenabfragen.
|
||||||
|
"aemter": 5,
|
||||||
|
}
|
||||||
|
RANG_SONST = 4
|
||||||
|
|
||||||
|
|
||||||
|
def rang(quelle):
|
||||||
|
"""'wikidata:landtage@2026-09-08' -> 3."""
|
||||||
|
name = (quelle or "").split(":")[-1].split("@")[0]
|
||||||
|
return RANG.get(name, RANG_SONST)
|
||||||
|
|
||||||
|
|
||||||
EINSTELLUNGEN_FEST = {
|
EINSTELLUNGEN_FEST = {
|
||||||
"ner_modell": NER_MODELL,
|
"ner_modell": NER_MODELL,
|
||||||
"basis": "titel+teaser",
|
"basis": "titel+teaser",
|
||||||
@@ -106,7 +148,16 @@ EINSTELLUNGEN_FEST = {
|
|||||||
"ner_typen": list(TYPEN),
|
"ner_typen": list(TYPEN),
|
||||||
"typ_aus": "lexikon",
|
"typ_aus": "lexikon",
|
||||||
"fuzzy": "editierdistanz_nach_laenge",
|
"fuzzy": "editierdistanz_nach_laenge",
|
||||||
"nachnamen": "eindeutig_oder_kontext",
|
"nachnamen": "eindeutig_kontext_rang",
|
||||||
|
"rang": "|".join(f"{k}={v}" for k, v in sorted(RANG.items())),
|
||||||
|
# Die Sperrliste gehoert in die Version, nicht nur in den Quelltext.
|
||||||
|
# Sie aendert das Ergebnis - ein Eintrag mehr, und aus 22 Nennungen
|
||||||
|
# der Hansestadt wird keine Ministerin mehr. Ohne sie im Fingerabdruck
|
||||||
|
# traegt dieselbe coder_version zwei verschiedene Auszaehlungen, und
|
||||||
|
# genau das soll die Version verhindern.
|
||||||
|
"nachnamen_sperre": hashlib.blake2b(
|
||||||
|
"|".join(sorted(NACHNAMEN_SPERRE)).encode(), digest_size=8
|
||||||
|
).hexdigest(),
|
||||||
}
|
}
|
||||||
|
|
||||||
_UMLAUTE = str.maketrans({"ä": "ae", "ö": "oe", "ü": "ue", "ß": "ss"})
|
_UMLAUTE = str.maketrans({"ä": "ae", "ö": "oe", "ü": "ue", "ß": "ss"})
|
||||||
@@ -238,10 +289,10 @@ class Lexikon:
|
|||||||
|
|
||||||
def lade_lexikon(conn):
|
def lade_lexikon(conn):
|
||||||
with conn.cursor() as k:
|
with conn.cursor() as k:
|
||||||
k.execute("select id, typ, name, aliase, land, rolle from akteure")
|
k.execute("select id, typ, name, aliase, land, rolle, quelle from akteure")
|
||||||
akteure = [
|
akteure = [
|
||||||
{"id": r[0], "typ": r[1], "name": r[2], "aliase": r[3],
|
{"id": r[0], "typ": r[1], "name": r[2], "aliase": r[3],
|
||||||
"land": r[4], "rolle": r[5]}
|
"land": r[4], "rolle": r[5], "rang": rang(r[6])}
|
||||||
for r in k.fetchall()
|
for r in k.fetchall()
|
||||||
]
|
]
|
||||||
k.execute("select amt_id, person_id, von, bis from amtsinhaber")
|
k.execute("select amt_id, person_id, von, bis from amtsinhaber")
|
||||||
@@ -260,7 +311,8 @@ def waehle(lexikon, ids, kontext):
|
|||||||
|
|
||||||
1. Ist genau einer gemeint, ist die Sache erledigt.
|
1. Ist genau einer gemeint, ist die Sache erledigt.
|
||||||
2. Wird die Partei eines Kandidaten im selben Item genannt, gewinnt er.
|
2. Wird die Partei eines Kandidaten im selben Item genannt, gewinnt er.
|
||||||
3. Sonst bleibt die Nennung unaufgeloest. Ein Muenzwurf waere hier der
|
3. Traegt genau einer den niedrigsten Rang, gewinnt er - siehe RANG.
|
||||||
|
4. Sonst bleibt die Nennung unaufgeloest. Ein Muenzwurf waere hier der
|
||||||
schlimmere Fehler, weil er in der Zeitreihe nicht auffaellt.
|
schlimmere Fehler, weil er in der Zeitreihe nicht auffaellt.
|
||||||
"""
|
"""
|
||||||
if len(ids) == 1:
|
if len(ids) == 1:
|
||||||
@@ -270,6 +322,11 @@ def waehle(lexikon, ids, kontext):
|
|||||||
vergleichsform(lexikon.akteure[i]["notiz"]) in kontext]
|
vergleichsform(lexikon.akteure[i]["notiz"]) in kontext]
|
||||||
if len(mit_partei) == 1:
|
if len(mit_partei) == 1:
|
||||||
return mit_partei[0], "kontext_partei"
|
return mit_partei[0], "kontext_partei"
|
||||||
|
beste = min(lexikon.akteure[i].get("rang", RANG_SONST) for i in ids)
|
||||||
|
vorn = [i for i in ids
|
||||||
|
if lexikon.akteure[i].get("rang", RANG_SONST) == beste]
|
||||||
|
if len(vorn) == 1:
|
||||||
|
return vorn[0], "rang"
|
||||||
return None, "mehrdeutig"
|
return None, "mehrdeutig"
|
||||||
|
|
||||||
|
|
||||||
@@ -319,10 +376,17 @@ def aufloesen(lexikon, spannen, datum):
|
|||||||
a = lexikon.akteure[gewaehlt]
|
a = lexikon.akteure[gewaehlt]
|
||||||
konfidenz = {"alias": 0.95, "alias_ohne_anrede": 0.9,
|
konfidenz = {"alias": 0.95, "alias_ohne_anrede": 0.9,
|
||||||
"nachname": 0.8, "fuzzy": 0.6}[methode]
|
"nachname": 0.8, "fuzzy": 0.6}[methode]
|
||||||
|
# Abschlaege fuer die Gleichstandsregeln. Der Rang ist die
|
||||||
|
# schwaechere der beiden: die Partei steht im Text, der Rang ist
|
||||||
|
# nur eine Erwartung darueber, wer gemeint sein duerfte.
|
||||||
if grund == "kontext_partei":
|
if grund == "kontext_partei":
|
||||||
konfidenz -= 0.1
|
konfidenz -= 0.1
|
||||||
|
elif grund == "rang":
|
||||||
|
konfidenz -= 0.15
|
||||||
eintrag.update({"id": gewaehlt, "typ": a["typ"], "rolle": a["rolle"],
|
eintrag.update({"id": gewaehlt, "typ": a["typ"], "rolle": a["rolle"],
|
||||||
"methode": methode, "konfidenz": round(konfidenz, 2)})
|
"methode": methode, "konfidenz": round(konfidenz, 2)})
|
||||||
|
if grund != "eindeutig":
|
||||||
|
eintrag["grund"] = grund
|
||||||
|
|
||||||
# Aemter gegen das Datum des Items aufloesen. Das Amt bleibt stehen,
|
# Aemter gegen das Datum des Items aufloesen. Das Amt bleibt stehen,
|
||||||
# die Person kommt daneben - beides ist eine Aussage ueber den Text.
|
# die Person kommt daneben - beides ist eine Aussage ueber den Text.
|
||||||
|
|||||||
+74
-1
@@ -51,6 +51,10 @@ ZEITGRENZE = 120
|
|||||||
# ist willkuerlich, aber sie steht hier und nicht verstreut in Abfragen.
|
# ist willkuerlich, aber sie steht hier und nicht verstreut in Abfragen.
|
||||||
STICHTAG = "2017-01-01"
|
STICHTAG = "2017-01-01"
|
||||||
|
|
||||||
|
# Anfang der Wahlperioden, die 2026 noch nachwirken. Dient als Untergrenze
|
||||||
|
# fuer laufende Mandate ohne Endedatum - siehe die Landtagsabfrage.
|
||||||
|
WAHLPERIODE = "2016-01-01"
|
||||||
|
|
||||||
# Aemter, die in deutschen Schlagzeilen ohne Namen auftauchen ("der
|
# Aemter, die in deutschen Schlagzeilen ohne Namen auftauchen ("der
|
||||||
# Kanzler", "die Aussenministerin"). Handverlesen, weil eine generische
|
# Kanzler", "die Aussenministerin"). Handverlesen, weil eine generische
|
||||||
# Abfrage hier tausende Aemter liefert, von denen keines je in einer
|
# Abfrage hier tausende Aemter liefert, von denen keines je in einer
|
||||||
@@ -148,6 +152,71 @@ WHERE {
|
|||||||
?p rdfs:label ?name . FILTER (lang(?name) = "de")
|
?p rdfs:label ?name . FILTER (lang(?name) = "de")
|
||||||
OPTIONAL { ?p skos:altLabel ?alias . FILTER (lang(?alias) = "de") }
|
OPTIONAL { ?p skos:altLabel ?alias . FILTER (lang(?alias) = "de") }
|
||||||
} GROUP BY ?p ?name ?land
|
} GROUP BY ?p ?name ?land
|
||||||
|
""",
|
||||||
|
# Landtagsabgeordnete aller sechzehn Laender. Die Landeslisten sind
|
||||||
|
# nicht ueber Unterklassen erreichbar: "Mitglied des Landtag
|
||||||
|
# Sachsen-Anhalt" ist eine *Instanz* von Q1939559, keine Unterklasse.
|
||||||
|
# Deshalb P31/P279* statt P279* wie beim Bundestag.
|
||||||
|
#
|
||||||
|
# Der Datumsfilter ist schaerfer als beim Bundestag, und das mit Grund:
|
||||||
|
# von den 11464 Personen, die je in einem Landtag sassen, tragen 9700
|
||||||
|
# ueberhaupt keine Zeitangabe. Ein blosses "kein Ende gesetzt" liesse
|
||||||
|
# die Abgeordneten der Weimarer Republik herein. Es zaehlt also, wer
|
||||||
|
# nachweislich nach dem Stichtag ausgeschieden ist oder wer ohne
|
||||||
|
# Endedatum seit der Wahlperiode ab 2016 im Amt steht.
|
||||||
|
"landtage": """
|
||||||
|
SELECT ?p ?name (GROUP_CONCAT(DISTINCT ?alias; separator="|") AS ?aliase)
|
||||||
|
(SAMPLE(?ptl) AS ?partei)
|
||||||
|
WHERE {
|
||||||
|
?a wdt:P31/wdt:P279* wd:Q1939559 .
|
||||||
|
?p p:P39 ?s . ?s ps:P39 ?a .
|
||||||
|
OPTIONAL { ?s pq:P580 ?von . }
|
||||||
|
OPTIONAL { ?s pq:P582 ?bis . }
|
||||||
|
FILTER (?bis >= "%(stichtag)s"^^xsd:dateTime
|
||||||
|
|| (!BOUND(?bis) && ?von >= "%(wahlperiode)s"^^xsd:dateTime))
|
||||||
|
%(rumpf)s
|
||||||
|
} GROUP BY ?p ?name
|
||||||
|
""",
|
||||||
|
# Amtierende Regierungsmitglieder unterhalb der Staatsspitze, weltweit.
|
||||||
|
# Ohne sie fehlt Lawrow - er sass in keinem Bundestag und fuehrt keinen
|
||||||
|
# Staat.
|
||||||
|
#
|
||||||
|
# Ueber P1308, das vom Amt auf seinen derzeitigen Inhaber zeigt. Der
|
||||||
|
# naheliegende Weg ueber die Amtszeit der Person taugt nicht: wer wie
|
||||||
|
# Lawrow seit 2004 amtiert, faellt aus jedem Datumsfenster, und ohne
|
||||||
|
# Fenster kommen Tausende Minister herein, deren Amtszeit nie zu Ende
|
||||||
|
# gepflegt wurde. P1308 ist Wikidatas eigene Aussage darueber, wer
|
||||||
|
# gerade im Amt ist, und damit die ehrlichere Quelle.
|
||||||
|
#
|
||||||
|
# Minister nur zwei Ebenen tief: "russischer Aussenminister" ist eine
|
||||||
|
# Unterklasse von "Aussenminister", das wiederum direkt von Q83307.
|
||||||
|
# Das volle P279* laeuft in die Zeitgrenze der WDQS - 9122 Aemter, und
|
||||||
|
# der Kreuzschnitt mit den Amtstraegern bricht ab.
|
||||||
|
"regierung": """
|
||||||
|
SELECT ?p ?name (GROUP_CONCAT(DISTINCT ?alias; separator="|") AS ?aliase)
|
||||||
|
(SAMPLE(?landc) AS ?land)
|
||||||
|
WHERE {
|
||||||
|
?a wdt:P279/wdt:P279? wd:Q83307 ; wdt:P1308 ?p .
|
||||||
|
OPTIONAL { ?a wdt:P1001 ?l . ?l wdt:P298 ?landc . }
|
||||||
|
?p rdfs:label ?name . FILTER (lang(?name) = "de")
|
||||||
|
OPTIONAL { ?p skos:altLabel ?alias . FILTER (lang(?alias) = "de") }
|
||||||
|
} GROUP BY ?p ?name
|
||||||
|
""",
|
||||||
|
# Sondergesandte. Eine eigene Abfrage, weil sie den anderen Weg
|
||||||
|
# brauchen: Witkoffs Amt traegt kein P1308, seine Amtszeit dagegen
|
||||||
|
# steht sauber da. Die Klasse ist klein und flach, hier ist P279*
|
||||||
|
# billig und ein Datumsfenster unnoetig - es gibt vier amtierende.
|
||||||
|
"sondergesandte": """
|
||||||
|
SELECT ?p ?name (GROUP_CONCAT(DISTINCT ?alias; separator="|") AS ?aliase)
|
||||||
|
(SAMPLE(?landc) AS ?land)
|
||||||
|
WHERE {
|
||||||
|
?a (wdt:P31|wdt:P279)/wdt:P279* wd:Q117403755 .
|
||||||
|
?p p:P39 ?s . ?s ps:P39 ?a .
|
||||||
|
FILTER NOT EXISTS { ?s pq:P582 ?bis . }
|
||||||
|
OPTIONAL { ?a wdt:P1001 ?l . ?l wdt:P298 ?landc . }
|
||||||
|
?p rdfs:label ?name . FILTER (lang(?name) = "de")
|
||||||
|
OPTIONAL { ?p skos:altLabel ?alias . FILTER (lang(?alias) = "de") }
|
||||||
|
} GROUP BY ?p ?name
|
||||||
""",
|
""",
|
||||||
# Boersennotierte Unternehmen aus den Leitindizes. Sie sind Akteure wie
|
# Boersennotierte Unternehmen aus den Leitindizes. Sie sind Akteure wie
|
||||||
# Parteien es sind - "VW streicht Stellen" ist eine Handlung. Ueber die
|
# Parteien es sind - "VW streicht Stellen" ist eine Handlung. Ueber die
|
||||||
@@ -190,7 +259,11 @@ SELECT ?p ?name ?von ?bis WHERE {
|
|||||||
|
|
||||||
def _abfragetext(name):
|
def _abfragetext(name):
|
||||||
if name in ABFRAGEN:
|
if name in ABFRAGEN:
|
||||||
return ABFRAGEN[name] % {"stichtag": STICHTAG, "rumpf": _PERSONEN_RUMPF}
|
return ABFRAGEN[name] % {
|
||||||
|
"stichtag": STICHTAG,
|
||||||
|
"wahlperiode": WAHLPERIODE,
|
||||||
|
"rumpf": _PERSONEN_RUMPF,
|
||||||
|
}
|
||||||
raise KeyError(name)
|
raise KeyError(name)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,12 @@
|
|||||||
"stand": "2026-09-08",
|
"stand": "2026-09-08",
|
||||||
"zeilen": 1680
|
"zeilen": 1680
|
||||||
},
|
},
|
||||||
|
"landtage": {
|
||||||
|
"abfrage_hash": "e098d7d5626c6d33",
|
||||||
|
"endpunkt": "https://query.wikidata.org/sparql",
|
||||||
|
"stand": "2026-09-08",
|
||||||
|
"zeilen": 1539
|
||||||
|
},
|
||||||
"organisationen": {
|
"organisationen": {
|
||||||
"abfrage_hash": "681d745f816308b4",
|
"abfrage_hash": "681d745f816308b4",
|
||||||
"endpunkt": "https://query.wikidata.org/sparql",
|
"endpunkt": "https://query.wikidata.org/sparql",
|
||||||
@@ -23,6 +29,18 @@
|
|||||||
"stand": "2026-09-08",
|
"stand": "2026-09-08",
|
||||||
"zeilen": 682
|
"zeilen": 682
|
||||||
},
|
},
|
||||||
|
"regierung": {
|
||||||
|
"abfrage_hash": "cec1167e7cacca2d",
|
||||||
|
"endpunkt": "https://query.wikidata.org/sparql",
|
||||||
|
"stand": "2026-09-08",
|
||||||
|
"zeilen": 2003
|
||||||
|
},
|
||||||
|
"sondergesandte": {
|
||||||
|
"abfrage_hash": "a2a5dc75d2250ad4",
|
||||||
|
"endpunkt": "https://query.wikidata.org/sparql",
|
||||||
|
"stand": "2026-09-08",
|
||||||
|
"zeilen": 5
|
||||||
|
},
|
||||||
"staaten": {
|
"staaten": {
|
||||||
"abfrage_hash": "9520842107b5208c",
|
"abfrage_hash": "9520842107b5208c",
|
||||||
"endpunkt": "https://query.wikidata.org/sparql",
|
"endpunkt": "https://query.wikidata.org/sparql",
|
||||||
|
|||||||
@@ -105,6 +105,16 @@
|
|||||||
"Facebook"
|
"Facebook"
|
||||||
],
|
],
|
||||||
"notiz": "Hat in Wikidata kein deutsches Label. Die Spiegelabfragen filtern auf lang(?name)='de' und verlieren solche Objekte stillschweigend - siehe NOTES.md."
|
"notiz": "Hat in Wikidata kein deutsches Label. Die Spiegelabfragen filtern auf lang(?name)='de' und verlieren solche Objekte stillschweigend - siehe NOTES.md."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "per:kushner_jared",
|
||||||
|
"typ": "person",
|
||||||
|
"name": "Jared Kushner",
|
||||||
|
"land": "USA",
|
||||||
|
"rolle": "GOV",
|
||||||
|
"wikidata_qid": "Q13628723",
|
||||||
|
"aliase": [],
|
||||||
|
"notiz": "Sein Amt - Senior Advisor to the President - endete 2021, seine Rolle in den Nahost-Verhandlungen nicht. Damit faellt er durch die Regierungsabfrage, die nur laufende Aemter kennt. 109 Nennungen im Korpus vom 08.09.2026."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"aliase": {
|
"aliase": {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
+11756
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,28 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"aliase": "Shaye Lu",
|
||||||
|
"name": "Lu Shaye",
|
||||||
|
"p": "http://www.wikidata.org/entity/Q10910089"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"aliase": "",
|
||||||
|
"name": "Jean Todt",
|
||||||
|
"p": "http://www.wikidata.org/entity/Q171998"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"aliase": "",
|
||||||
|
"name": "Steve Witkoff",
|
||||||
|
"p": "http://www.wikidata.org/entity/Q16189572"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"aliase": "",
|
||||||
|
"land": "YEM",
|
||||||
|
"name": "Hans Grundberg",
|
||||||
|
"p": "http://www.wikidata.org/entity/Q111507151"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"aliase": "",
|
||||||
|
"name": "Amandeep Singh Gill",
|
||||||
|
"p": "http://www.wikidata.org/entity/Q115671639"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -22,7 +22,10 @@ VERZEICHNIS = lexikon.VERZEICHNIS
|
|||||||
# jemand ueblicherweise in Nachrichten auftaucht, nicht seine Biographie.
|
# jemand ueblicherweise in Nachrichten auftaucht, nicht seine Biographie.
|
||||||
HERKUNFT = {
|
HERKUNFT = {
|
||||||
"bundestag": ("person", "LEG"),
|
"bundestag": ("person", "LEG"),
|
||||||
|
"landtage": ("person", "LEG"),
|
||||||
"staatsfuehrung": ("person", "GOV"),
|
"staatsfuehrung": ("person", "GOV"),
|
||||||
|
"regierung": ("person", "GOV"),
|
||||||
|
"sondergesandte": ("person", "GOV"),
|
||||||
"unternehmen": ("organisation", "BUS"),
|
"unternehmen": ("organisation", "BUS"),
|
||||||
"parteien": ("partei", None),
|
"parteien": ("partei", None),
|
||||||
"staaten": ("staat", None),
|
"staaten": ("staat", None),
|
||||||
|
|||||||
Reference in New Issue
Block a user