EventSearch API

Projektinformation

Mit EventSearch API wird eine maschinenlesbare Schnittstelle (API) für in digitalen Editionen markierte Ereignisse entwickelt. EventSearch ermöglicht es, die aufgezeichneten Ereignisse einzelner digitaler Editionen sichtbarer und leichter auffindbar zu machen. Über die EventSearch-Schnittstelle können automatisch alle Ereignisse, die in einem bestimmten Format in digitalen Editionen kodiert sind, abgefragt und für weitere inhaltliche Analysen ausgewertet werden. Eine niederschwellige Möglichkeit zu partizipieren wird angeboten, sodass Editionsprojekte unabhängig von Größe und Budget nicht daran gehindert werden ihre Ergebnisse zu teilen.

Das Projekt wird in Kooperation mit der Österreichischen Akademie der Wissenschaften / Institut für die Erforschung der Habsburgermonarchie und des Balkanraumes (ÖAW/IHB) sowie der Universität Graz / Institut Zentrum für Informationsmodellierung (ZIM) durchgeführt. Es ist 2020 von CLARIAH-AT gefördert worden.

Die Basisinfrastruktur der API wurde von September bis November 2020 entwickelt. Die Schnittstelle mit Beispieldaten aus drei Projekten wird in Q2/2021 veröffentlicht. Die Dokumentation der Schnittstelle wird über das Swagger-Framework zur Verfügung gestellt.

Zugriff

Die einzelnen Komponenten der API sind über Pfad-Parameter, die an die Basis-URL https://edition.onb.ac.at/eventsearch angehängt weden können verfügbar. Die genauen Pfade, weitere Informationen zu den Endpunkten und Beispiele sind der Dokumentation in Swagger unter https://edition.onb.ac.at/eventsearch/docs zu entnehmen. Außerdem kann die Spezifikation der API gemäß der OpenAPI Initiative unter https://edition.onb.ac.at/eventsearch/openapi.json abgerufen werden.

Hintergrund

Ereignisse sind allgegenwärtige Merkmale menschlichen Lebens zu allen Zeiten an allen Orten. Entsprechend unausweichlich trifft man auf Erwähnung und Dokumentation von Ereignissen in historischen wie zeitgenössischen Quellen, die Grundlage geisteswissenschaftlicher Forschung sind, ebenso wie in fiktionalen Texten. Die Zeugen können Lebensdokumente (Tagebücher, Reisenotizen) genauso sein wie amtliche Dokumente (Urkunden, Protokolle, Kalender) oder Kulturüberlieferungen materieller Natur (Inschriften, Teppiche o.a.).

Werden diese Quellen und (fiktionalen) Texte digital ediert, hat sich zwar die Kodierung nach den Richtlinien der Text Encoding Initiative (TEI) durchgesetzt, jedoch fehlt eine gängige Praxis für die semantisch eindeutige Erfassung und Auszeichnung von Ereignissen. Hinzu kommt, dass zum Ereignis zugehörige grundlegende Informationen wie ein zeitlicher Hinweis, eine Lokalisierung oder die Angabe zu beteiligten Personen nicht ohne weiteres möglich ist. Im Projekt wird die Kodierung von Ereignissen im Rahmen der TEI modelliert und dem TEI-Konsortium entsprechende Änderungsvorschläge für eine universelle Auszeichnung von Events vorgelegt. Dabei wird eine verpflichtend flache Auszeichnung angestrebt, um die Datenmigration für alle Editionsdaten so niedrigschwellig wie möglich zu halten. Selbstverständlich liegt es bei den EditorInnen zu definieren, was im Kontext der jeweiligen Edition ein Ereignis ist. Das vorgeschlagene Modell wird auf bestehende Editionsprojekte der Projektpartner angewendet, um so einen Minimalkorpus an EventSearch-Daten zu generieren.

Technische Umsetzung

Die Schnittstelle besteht im Wesentlichen aus drei Komponenten. Die Schnittstelle selbst wurde um das Python-Framework FastAPI entwickelt. Das Framework erlaubt ein reibungslose Design der API und eine kontinuierliche Erweiterung. Die API ist so konzipiert, dass sowohl die Daten-Felder, die über die API ausgeliefert werden, als auch die Abfrageparameeter laufend erweitert werden können.

Die Daten selbst werden in einer MySQL-Datenbank gespeichert. Dabei wird eine Vielzahl an geläufigen Kalendern für die Datierung der Events unterstützt. Zusätzlich zu den Ereignissen selbst werden auch Entitäten wie Personen und Orte abgespeichert.

Es wurde ein eigener Scraper entwickelt, der die Daten zu den Events in den digitalen Editionen ausliest und in der oben genannten Datenbank speichert. Dazu wurde das Framework Scrapy verwendet. Um die einzelnen Scraper zu starten und zu verwalten kommt eine Instanz von Scrapyd zum Einsatz.

Die einzelnen Komponenten wurden als Docker-Container realisiert, um ein einfaches Deployment zu gewährleisten.

Software-Entwicklung: Philip Röggla und Christoph Steindl.