Rechteangaben aus Wikimedia Commons extrahieren

Wikimedia Commons ist ein großer Schatz an frei zu verwendenden Bildern. Allerdings stehen viele Bilder unter einer CC-BY-Lizenz, also mit verpflichtender Namensnennung. Wer solche Bilder auf der eigenen Webseite verwenden möchte, der muss die Rechteangaben extrahieren. lobid-gnd macht das richtig und zeigt unter den Bildquellen eine Rechteangabe/Attribution an, vgl. lobid-gnd (rechts erscheint ein zufälliges Bild, darunter die Rechteangabe). Diese wird aber offenbar dynamisch vom Frontend generiert und ist nicht im entsprechenden GND-Datensatz enthalten.

Für das DLA Marbach baue ich für die Anreicherung mit Daten aus lobid-gnd und wikidata einen “Enrichment Cache”, der wöchentlich aktualisiert und dann bei der täglichen Routine verwendet wird. Die Bilder aus Wikimedia Commons (URL via lobid-gnd depiction und wikidata P18) sollen im Katalog angezeigt werden und dafür brauche ich eben auch die Rechteangabe für alle Bilder (mehrere 10.000). Ich habe keine andere Möglichkeit gefunden als die Wikimedia Commons API abzufragen und die teils unstrukturierten Daten aufwendig zu parsen.

Kennt ihr einen besseren Weg?

Hier meine Lösung:

  1. Python-Script zum Abfragen der Commons API
  1. Parsen der relativ unstrukturierten Daten (Zeile 173-211)

Es läuft zwar so, aber die Abfrage von Wikimedia Commons ist der langsamste Teil des Prozesses. Ich hätte gerne eine elegantere Lösung. Für Tipps bin ich dankbar!

2 Likes

Hi Felix!
In lobid taucht das auf, weil die Information über EntityFacts kommt.
Wir nutzen auch die CommonsAPI in EntityFacts
Siehe https://hub.culturegraph.org/entityfacts/4223772-5

Wir fragen auch die Wikicommons API ab und müssen dieses unsägliche Freitextfeld parsen. Bis vor kurzem haben wir das immer on-the-fly gemacht, wenn ein EntityFacts Satz abgefragt wurde. Leider führte das in letzter Zeit zu Performance-Problemen, deshalb haben wir jetzt ein caching eingerichtet und einen Ablaufzeitpunkt eingeführt. D.h. nach 3 Monaten wird die Lizenz nochmal neu abgerufen (kann ja sein, dass sich was ändert)
Das entlasstet jetzt die CommonsAPI und EntityFacts antwortet im Durchschnitt schneller.

Momentan fragen wir tatsächlich für lobid-gnd selbst noch die Wikimedia Commons API ab. Wir wollten die Attributionsangaben eigentlich in lobid-gnd ergänzen und hatten ja damals auch das Jira-Ticket dazu bei der DNB aufgemacht. Dann ist die Diskussion am entsprechenden Ticket lobid-gnd#285 im Oktober 2022 eingeschlafen. Gut, dass @felixlohmeier das hier nochmal thematisiert hat. Wir werden das dann endlich mal in lobid ergänzen. Eventuell magst du am Ticket mal kommentieren, Felix. @fsteeg und ich waren uns noch uneinig, ob wie strukturierte Daten ergänzen oder ein Feld mit dem Attributions-Snippet als HTML.

Ach tut mir leid, ich dachte, ihr hättet das mal umgestellt. Dann nehme ich die Aussage natürlich zurück.

Ich fühle mich schon besser damit zu wissen, dass auch EntityFacts die Commons API nutzt und ich nichts übersehen habe. Danke für Eure schnellen Rückmeldungen!

Ich fände es stimmig, wenn die Commons-Daten via EntityFacts auch in lobid-gnd landen würden. Damit ließen sich beispielsweise die Bilder schonmal nach Lizenz filtern.

Zusätzlich wäre es vermutlich für andere praktisch, wenn ein Attributions-HTML-Snippet verfügbar wäre. In meinem Anwendungsfall würde ich das allerdings nicht nutzen, weil ich auch separat Wikidata abfrage (P18 image und P109 signature), bei Wikidata direkt ebenfalls keine Attributionsangabe verfügbar ist und ich das dann einheitlich halten möchte.

ein Blick in die Structured Data on Commons würde sich schon auszahlen bzw. könntest du im Skript das womöglich schön integrieren, auch so, dass daraus „Wartungslisten“ entstünden, wo die strukturierten Rechtehinweise noch fehlen, und diese mehr oder weniger aus deiner weiteren Verarbeitung der WikiPage eigentlich gut retour fließen könnten.

Für File:Peter-handke.jpg wäre die API-Abfrage für die SDC: https://commons.wikimedia.org/w/api.php?action=wbgetentities&format=json&sites=commonswiki&titles=File%3APeter-handke.jpg&normalize=1&formatversion=2

die Attribution relevanten Properties wären

  • P170 (mit all den Qualis für Urheber ohne WD-Item)
  • P6216 (UR-Status → v.a. für Public Domain relevant, da dann keine Lizenz)
  • P275 (Lizenz)

Denkbar wäre ein primärer Aufruf auf SDC-Entities und wenn das nix bringt erst das Parsing der WikiPage. (und dann aber eure „Struktur“ bereithalten für einen Re-Import :wink: )

Danke für den Hinweis @librerli! Ich habe allerdings den Eindruck, dass es den Prozess noch komplizierter machen würde.

Über imageinfo bekomme ich alle Werte raus, allerdings mit HTML-Formatierungs-Ballast. Über SDC (Dein Link oben) bekäme ich zwar strukturierte Daten, müsste aber die Q-IDs noch resolven, oder?

1 Like

ja klar, eine Vereinfachung ist es aufs erste einmal nicht, das ist leider klar. die Q-IDs sind in SDC noch zu resolven. das geht natürlich über den SPARQL-Endpoint dazu besser, hier eine beispielhafte Abfrage für das Handke-Porträt, auf Basis des bekannten Dateinamens (der Primäreinstieg in SDC-Sparql wäre eher die Konzept-ID (=pageid); der File:Name.jpg muss in Special:FilePath/{url_encoded(filename).fileext} umgebaut werden)

Abfrage: https://w.wiki/GQnE