Im letzten Artikel zu dem Coding da Vinci Projekt habe ich ja schon die Idee des Projektes Zwei Welten vorgestellt. In diesem Teil widme ich mich der konkreten Umsetzung der Projektidee.

Statische Live-Version des Projektes „Zwei Welten – Berlin damals und heute“.

Informationsfluss im Projekt Zwei Welten

Korrektur der Original Datenquelle

Korrektur der XML Datenquelle

Die XML Datenquelle des Stadtmuseums musste korrigiert werden.

Wie schon im letzten Artikel beschrieben, gab es in der XML Datenquelle des Stadtmuseums Berlin einige Fehler und inkonsistente Daten. Diese habe ich teilweise korrigiert.

Dies ist mir recht schwer gefallen, da eine Datenquelle meiner Meinung nach im Original erhalten werden sollte. Da die XML Datei unter Versionskontrolle steht, lassen sich alle Änderungen daran nachvollziehen. Außerdem wurden lediglich offensichtliche Fehler wie fehlerhafte Links, Tipp-/Einlesefehler oder fehlende Tags korrigiert.

Extraktion der Stadtansichten via XSLT

Extraktion der Stadtansichten mit XSLT

Die relevanten Daten für die Stadtansichten wurden mit XSLT extrahiert.

Da die Original Datenquelle viele Daten beinhaltet, die für das Projekt Zwei Welten weniger relevant waren, haben wir die für uns relevanten Informationen mit Hilfe von XSLT in eine neue XML Datei überführt. Bei den ignorierten Daten handelt es sich zum Beispiel um Angaben zu Bild- und Rahmengrößen, oder biografischen Angaben zum Künstler.

Zur Einbindung in unseren automatisierten Extraktionsprozess haben wir die Transformation mit dem Kommandozeilenwerkzeug xsltproc durchgeführt.

Extraktion der Tags via XQuery

Extraktion der Tags mit XQuery

Die Tags wurden mit XQuery extrahiert und kategorisiert um sie im nächsten Schritt besser weiterverarbeiten zu können.

Die einzelnen Stadtansichten sind zusätzlich mit Annotationen (Tags) ausgezeichnet, die beschreiben was auf dem Gemälde zu sehen ist. Zu diesen Tags sollten zusätzliche Informationen aus Wikipedia abgerufen werden. Hierfür mussten diese aber erst extrahiert, Mehrfacheinträge gefiltert und die einzelnen Tags kategorisiert werden.

Die Kategorisierung nach den Kategorien Undefiniert, Abstrakt, Objekt, Person, Ort, Gebäude wurde vorgenommen, da zu den einzelnen Tags teilweise unterschiedliche Informationen abgerufen werden sollten. So hat zum beispiel eine Person meistens ein exaktes Geburtsdatum, ein Gebäude oder Ort relevante Geokoordinaten.

Die Kategorisierung wurde einmalig von Hand vorgenommen, könnte in einer Fortführung des Projektes aber auch automatisiert über Kontextinformationen in DBpedia geschehen.

Annotation der Tags via SPARQL/DBpedia

Annotation der Tags via SPARQL/DBpedia

Die Tags wurden via SPARQL mit Informationen und Bildern aus der DBpedia angereichert.

Die größten Probleme im Projekt bereitete die Abfrage weiterer Informationen zu den Tags aus den Wikipedia Quellen via SPARQL und DBpedia. Im einfachsten Fall stellt man eine einfache SPARQL-Anfrage an den DBpedia-Endpunkt und bekommt alle interessanten Informationen geliefert, wie wenn man einem Wikipedia-Artikel aufruft. Leider hatten wir in unseren Tags viele Stichworte, zu denen lediglich Informationen in der deutschen Wikipedia zu finden sind. Diese Informationen sind über den allgemeinen DBpedia Endpunkt nur verfügbar, wenn es eine englische Übersetzung dazu gibt, was bei unseren speziellen Stichworten jedoch häufig nicht der Fall war.

Tagcloud zu den im Projekt verwendeten Tags

Die verwendeten Tags im Projekt „Zwei Welten” als Wortwolke.

Die Lösung hierfür war, zum Endpunkt der deutschen DBpedia zu wechseln. Hier hatten wir jedoch das Problem, dass bei Stichwörtern mit Sonderzeichen (äöüß) in der deutschen DBpedia einige wichtige Informationen nicht angezeigt wurden. Unter anderem die für unser Projekt recht wichtige Zusammenfassung (abstract), die eigentlich für jeden Eintrag vorhanden sein sollte. Auch scheint es hin und wieder Probleme bei den Geokoordinaten in der deutschen DBpedia zu geben. Diese wurden teilweise als Integer (Ganzzahl) und nicht als Float (Kommazahl) zurückgegeben, was in unserem Fall einer Ungenauigkeit von circa 150km entspricht.

Da ich für die Abfrage der Bilddaten zu den Stadtansichten in Wikimedia Commons schon ein Python Skript geschrieben hatte, konnten wir die fehlenden und fehlerhaften Daten über die Wikipedia API abgreifen. Hier gab es teilweise Probleme mit fehlenden Quellangaben (Autor, Lizenz) der Bilder, weshalb ich als letzte Lösung zusätzlich noch einen HTML-Parser mit Beautiful Soup für die Extraktion der Quellangaben der Bilder ergänzt habe.

Als Hobbyfotograf fand ich es ziemlich enttäuschend, dass unsere Gruppe es als Einzige für nötig befunden hat, für die verwendeten Bilder Quellangaben unter Berücksichtigung und Angabe der entsprechenden Lizenzen zu verwenden. Aber das ist ein anderes Thema …


Im nächsten Teil beschreibe ich, welche Technologien wir für unsere Hauptanwendungen (Datenbank, Server, Client) eingesetzt haben.