Hackety hack hack

Atypisches Nutzerverhalten mit Rat und Tat.

Wikidata-Items schnell auf der Kommandozeile nachschlagen? Mediawiki APIs hacken

Ein richtiger Hack ist das nicht, aber es ist besser, wenn ich das folgende aufschreibe, bevor ich es wieder vergesse.

Wikidata benutzt für jeden Wissensgegenstand in der Datenbank einen Bezeichner, der mit Q beginnt (oder mit P, wenn es sich um eine Eigenschaft handelt). Berlin ist z.B. Q64.

Wenn ich etwa mit qLabel die Möglichkeiten multilingualer Labels auf Basis von Wikidata in Webseiten benutzen will, brauche ich diese Bezeichner mit Q für alles, was übersetzt werden soll.

Prima wäre es, wenn ich auf der Kommandozeile einfach ein paar Begriffe eingeben könnte und die entsprechenden Q-Bezeichner als Liste bekomme. Und so wird’s gemacht:

Die API von Wikidata folgt im Grunde der allgemeinen MediaWiki-API, die ich schon an anderer Stelle beschrieben habe.

Um jetzt auf der Kommandozeile darauf zuzugreifen, brauche ich noch zwei Tools:

Der Begriff “Hacker” ist schön zweideutig und kann viele Bedeutungen annehmen, die jeweils eigene Wissensgegenstände in Wikidata mit eigenem Q-Bezeichner sind. Suchen wir doch einfach danach!

Suche nach einem Titel (z.B. in der englischen Wikipedia)

curl -s https://www.wikidata.org/w/api.php\?action\=wbgetentities\&sites\=enwiki\&titles\=Hacker\&languages\=en\&format\=json | jq -r '.entities | keys'

Hier bekommen wir nur einen Q-Bezeichner zurück, nämlich genau den, der zu der Seite mit dem Titel “Hacker” in der englischen Wikipedia passt (in dem Fall: eine Begriffserklärungs-Seite).

Suche nach Labels von Wissensgegenständen

curl -s https://www.wikidata.org/w/api.php\?action\=wbsearchentities\&search\=Hacker\&language\=en\&format\=json | jq -r '[.search[].id]'

Hier bekomme eine längere Liste, z.B. mit dem Computerspiel gleichen Namens, der Subkultur, dem Begriff in der Computersicherheit etc.

Mit curl und jq zusammen kann ich mir beliebige Kommandozeilen-Programme für die Wikidata-API schreiben und auf das zurückgegebene JSON-Ergebnis zugreifen. Die Möglichkeiten sind fast endlos.