Mein Praktikum am Deutschen Historischen Institut Rom
Jana Klinger
Diesen Sommer habe ich ein sechswöchiges Praktikum in der Digital Humanities-Abteilung des Deutschen Historischen Instituts Rom (DHI Rom) absolviert. Dort erhielt ich Einblicke in den Arbeitsalltag am DHI im Allgemeinen und der Digital Humanitites-Abteilung im Besonderen. Finanziell wurde mein Praktikum durch den DAAD im Rahmen eines Kurzstipendiums unterstützt.
Bei meiner Ankunft wurde ich am DHI sehr freundlich in Empfang genommen. Zunächst wurden mir von der Verwaltung die Schlüssel für mein Zimmer ausgehändigt. Da es am DHI Rom ein Gästehaus gibt, in dem Räume für Stipendiat:innen und Praktikant:innen zur Verfügung stehen, entfiel im Vorfeld die Suche nach einer Unterkunft. Während des Praktikums war es dann sehr angenehm direkt neben dem Institut mit den anderen Praktikant:innen und Stipendiat:innen zusammen zu wohnen.
An meinem ersten Tag hatte ich einen Termin mit Jörg Hörnschemeyer, meinem Praktikumsbetreuer aus der Digital Humanities-Abteilung am DHI Rom. In einem ersten Gespräch haben wir uns über die Geschichte des DHI, die Digital Humanities-Projekte am DHI Rom, sowie über meine eigenen Forschungsinteressen und Studienschwerpunkte ausgetauscht. Auf dieser Grundlage hat Herr Hörnschemeyer mir die Aufgabe gegeben, die mich die nächsten Wochen begleitet hat: Die Weiterentwicklung eines Prototyps der Visualisierung von Geodaten zur Präsenz deutscher Einheiten in Italien 1943-1945.
Das Projekt: Visualisierung von Geodaten mit Javascript
Die Datenbank, auf der die Visualisierung basieren sollte, wurde zwischen 2000 und 2004 von Carlo Gentile im Auftrag des DHI erarbeitet und wird von Historiker:innen regelmäßig zu Forschungszwecken konsultiert. Da das Interface und das dahinterliegende Backend inzwischen etwa 20 Jahre alt und somit etwas in die Jahre gekommen sind, ist eine Neuauflage dieser Datenbank in Form einer Visualisierung der Geodaten geplant. Donata Gerhards hatte im Rahmen ihres Praxisprojektes im Masterstudiengang “Digitale Methodik in den Geistes- und Kulturwissenschaften (M.A.)” der Johannes Gutenberg-Universität Mainz am DHI Rom schon einen ersten Prototypen erstellt, der auf der Javascript-Bibliothek OpenLayers und dem Datenstandard KML[1] basiert. Im Zuge dessen hatte sie auch die Daten aus Carlo Gentiles Datenbank mit Geodaten angereichert.
Mit den von Frau Gerhards angereicherten Daten und dem Prototypen als Orientierungshilfe sollte ich nun eine Visualisierung entwickeln, die auf der Javascript-Bibliothek Leaflet basiert. Leaflet ist „designed with simplicity, performance and usability in mind.“[2] Da ich bislang wenig Erfahrung in der Arbeit mit Javascript hatte, schien die Arbeit mit dieser Bibliothek eine gute Wahl um einen ersten Eindruck von der Funktionsweise dieser Programmiersprache zu bekommen. Die ersten Tage meines Praktikums verbrachte ich damit mich in die Welt von Leaflet einzuarbeiten, indem ich die Tutorials von Leaflet bearbeitete, mich in die Dokumentation einlas und überlegte, wie ich das Gelernte für die Erarbeitung einer Visualisierung der vorliegenden Daten nutzbar machen kann.
Zuerst habe ich den Rahmen der Visualisierung erstellt. Dazu zählten für mich zunächst ein Header und eine Karte, die die gesamte Seite ausfüllt (siehe Abb. 1). Für den Header habe ich auf Bootstrap 5 als Framework zurückgegriffen und die Karte mit Hilfe eines, dank Leaflet sehr kurzen, Javascripts eingebunden.[3] Im Anschluss habe ich mich daran gemacht, die Seite mit Inhalten zu füllen. Dabei stieß ich jedoch schnell an Grenzen, da ich merkte, dass die bisherige Datengrundlage in Form von KML sich nicht gut mit Leaflet verträgt. Bei der Programmierung der Webanwendung mit Leaflet war das JSON-Format die bessere Wahl. Bei der Arbeit mit Geodaten bietet sich ferner die Spezifikation GeoJSON an, um Daten mit Javascript zu verarbeiten.
Mit dem Ziel vor Augen, die Visualisierung mit möglichst geringem Aufwand zu realisieren, sobald mir die Daten im richtigen Format vorliegen, habe ich ein XSLT-Skript erstellt, mit dessen Hilfe ich die Daten in GeoJSON transformieren konnte. Und tatsächlich: Die GeoJSON-Daten ließen sich ohne großen Aufwand in Form von Markern auf der Karte in meiner Webanwendung darstellen! Jedoch kam sofort sas nächste Problem auf: Sobald ich nicht ALLE in der GeoJSON-Datei enthaltenen Daten gleichzeitig abbilden wollte, stieß ich an Grenzen. Denn Datensätze innerhalb eines JSON-Dokuments lassen sich nicht mit Javascript abfragen, wie dies zum Beispiel bei einem XML-Dokument und einem XPath-Ausdruck möglich ist.
Die Lösung für dieses Problem fand ich in dem eBook Introduction to Web Mapping von Michael Dorman. Dank seiner Tutorials zu Leaflet und der Arbeit mit GeoJSON fand ich heraus, dass ich durch das Laden der GeoJSON-Daten in eine per SQL API abfragbare Datenbank mein Problem würde lösen können. Der Anhang von Michael Dormans eBook beinhaltet eine auf den ersten Blick recht komplizierte und auf mich zunächst einschüchternd wirkende Anleitung mit dem Titel Setting up an SQL API. Nach einigen weiteren erfolglosen Versuchen doch irgendwie ohne SQL API bestimmte Datensätze aus der GeoJSON-Datei herauszufiltern, entschloss ich mich schließlich dazu, einen Versuch zu unternehmen eine SQL API einzurichten. Dormans Disclaimer zu Beginn seiner Anleitung habe ich mir dabei stets vor Augen gehalten:
These instructions are more advanced than the material given in the main part of the book. If you are not familiar with the software components being used, be prepared for some amount of trial and error, which is part of the learning process.[4]
Es hat nichts auf Anhieb funktioniert und ich habe nicht alles zu 100% so umgesetzt, wie in Dormans Anleitung vorgegeben war, da ich erstmal alles nur bei mir lokal auf dem Rechner ans Laufen bringen wollte und daher nicht auf einen Cloud Service zurückgegriffen habe. (Das erste Kapitel der Anleitung direkt zu überspringen hat sich falsch angefühlt, aber am Ende hat es trotzdem funktioniert!). Aber nach „some amount of trial and error, which is part of the learning process“ hatte ich eine funktionierende SQL API, mit deren Hilfe ich in meinem Projekt weiterarbeiten konnte. Durch Nutzung der SQL API war ich nun in der Lage in meinem Javascript mittels SQL-Abfragen spezifische Teile der Daten liefern und auf der Karte anzeigen zu lassen (z.B. alle Orte an denen eine bestimmte Einheit zwischen 1943 und 1945 stationiert war oder alle Einheiten der Gattung „Luftwaffe“, siehe Abb. 2).
Nachdem die größte technische Hürde genommen war, konnte ich dann recht unkompliziert mit Hilfe der Tutorials in Dormans eBook (besonders durch die Kapitel über Non-Spatial Queries und Spatial Queries) sowie das GeoJSON Tutorial von Leaflet Marker mit nach Einheiten spezifizierten Stilen setzen und Pop-Ups erstellen, die beim Klick auf einen Marker erscheinen und weitere Informationen geben (siehe Abb. 3). Features wie Menüs in der Sidebar in Kombination mit funktionalen Checkboxen konnte ich ebenfalls aus den Daten generieren lassen, sodass beim Anklicken einer Box in der Liste von Gattungen und Einheiten die entsprechenden Marker auf der Karte erscheinen. Sogar einen ersten Prototypen einer Umkreissuche konnte ich ohne großen Aufwand implementieren (siehe Abb. 4).
Das Drumherum: Meine Zeit in Rom
Am DHI habe ich mir mit zwei anderen Praktikant:innen ein Büro geteilt. Im Rahmen eines Praktikums am DHI Rom ist eine Arbeitszeit von vier Stunden am Tag vorgesehen. So bleibt neben dem eigentlichen Praktikum genügend Zeit für eigene Forschungsprojekte und Entdeckungstouren durch Rom. Unser Alltag sah meist so aus, dass wir bis zum Mittag zunächst die Arbeit für das Praktikum erledigten und uns danach noch einige Stunden eigenen Aufgaben widmeten. Hierbei konnten wir z.B. auf die Literatur in der sehr gut ausgestatteten Bibliothek des DHI Rom zurückgreifen.
Nachmittags und abends sind wir dann regelmäßig gemeinsam ins centro storico gefahren. So haben wir zum Beispiel zusammen die Galleria Borghese besucht und dort Berninis Statuen bewundert oder sind an Ferragosto über die Via Appia aus Rom herausspaziert. Darüber hinaus war das Essen in Rom ein besonderes Highlight. Während meiner sechs Wochen in Rom habe ich unglaubliche Mengen an Pizza und Pasta verzehrt und trotz meiner Aversion gegen das Kochen habe ich mir fest vorgenommen bei der nächsten Gelegenheit für meine Wuppertaler WG Spaghetti cacio e pepe zuzubereiten.
Fazit
Die sechs Wochen am DHI haben mir großen Spaß gemacht. Die Arbeit an dem hier vorgestellten Projekt war spannend und ich konnte meine technischen Kompetenzen in Bereichen ausbauen, die z.B. auch für meine anstehende Master-Thesis nützlich sein werden. Bei Fragen und Problemen konnte ich mich jederzeit an meinen Praktikumsbetreuer, Jörg Hörnschemeyer, wenden. Gleichzeitig hatte ich die Freiheit, selbstständig an dem Projekt zu arbeiten. Auch abseits der Arbeit hatte ich eine sehr schöne Zeit in Rom. Durch die gemeinsame Unterkunft im Gästehaus des DHI sowie das gemeinsame Büro habe ich schnell engen Kontakt zu den anderen beiden Praktikant:innen geknüpft, was uns die Möglichkeit eröffnete, spontan gemeinsame Unternehmungen zu machen. Insgesamt kann ich am Ende des Praktikums auf eine tolle und lehrreiche Zeit zurückblicken. Ich freue mich sehr, dass ich die Chance hatte, in der Digital Humanitites-Abteilung des DHI Rom ein Praktikum zu absolvieren und kann daher allen Studierenden mit Interesse an Geschichte und Digital Humanities nur empfehlen, sich ebenfalls dort auf ein Praktikum zu bewerben.
[1] KML ist die Abkürzung für “Keyhole Markup Language”. Dabei handelt es sich um einen XML-basierten Standard für die Beschreibung von Geodaten. Die Dokumentation kann hier eingesehen werden: https://www.ogc.org/standards/kml. Zuletzt abgerufen am 12.09.2022.
[2] Leaflet: https://leafletjs.com. Zuletzt abgerufen am 01.09.2022.
[3] Siehe: Leaflet Quick Start Guide. https://leafletjs.com/examples/quick-start/. Zuletzt abgerufen am 01.09.2022.
[4] Dorman, Michael. Introduction to Web Mapping. Kapitel H.1 Setting up an SQL API, Introduction. Zuletzt aktualisiert am 11.07.2022. https://geobgu.xyz/web-mapping2/setting-up-an-sql-api.html#introduction-12. Zuletzt abgerufen am 01.09.2022.