Beispiel für einen Parserbaum für RG III 213

Die Anwendung der Grammatik

In unserem letzten Beitrag haben Clemens Beck und Georg Zwilling bereits auf die Notwendigkeit einer Grammatik für die (semi-) automatische Auswertung des Repertorium Germanicums hingewiesen. Dieser Beitrag soll nun anhand etwas konkreterer Beispiele verdeutlichen, welche Schritte vollzogen werden müssen, um aus verschiedenen gleichartigen Sublemmas der Regesten eine allgemeingültige Grammatik entwickeln zu können.
Beispiel für einen Parserbaum für RG III 213
Foto: MEPHISTO

Meldung vom: | Verfasser/in: Clemens Beck & Jan Engelhardt

Das Markerwort „solv.“ fördert im RG-Online eine Reihe an Treffern zutage. All diese Treffer müssen am Ende von der Grammatik abgedeckt werden

Foto: MEPHISTO

Vom Regest zur Grammatik - ein Beispiel

Wie bereits im vorherigen Beitrag erwähnt, macht den Anfang dieses Prozesses die Suche nach Markerworten, die auf eine bestimmte Art des Eintrages hinweisen. So sind Einträge, die eine Annatenzahlung dokumentieren, immer mit dem Kürzel „solv.“ („bezahlt“) versehen. Anhand dieser Markerworte kann nun eine Auswahl an möglichst verschieden aufgebauten Einträgen gefunden werden, aus  derer sich die Grammatik konstruieren lässt.  Bereits der erste Blick auf die Einträge lässt die charakteristischen Regelmäßigkeiten des Repertorium Germanium erkennen. Alle Einträge beginnen (nach dem sogenannten Head, welcher allgemeine und biographische Informationen über den Antragssteller enthält, mit dem Wort „solv.“ Im Falle des ersten abgebildeten Treffers (RGIII/213) folgt nun das Kürzel „p.m.“ („per manus“ = „durch die Hand von“) und anschließend ein weiterer Name. Dies ist der Name der Person , der für den eigentlichen Schuldner den Geldbetrag einzahlte, „durch dessen Hand“ also bezahlt wurde. Anschließend folgt der Geldbetrag in arabischen Zahlen und das Kürzel „fl.“ für die Währung, in diesem Fall der Florentinische Gulden (Florin). Diese Informationen sind noch relativ einfach in eine Grammatik zu überführen. In dem von uns verwendete Programm sähe dies so aus:

annatePay: introAnn einzahler waehrung;

Eine Annatenzahlung besteht aus einem „Annatenintro“ (dem Markerwort), einem Einzahler und eine Währung. Jeder dieser Bestandteile muss  genau ausdifferenziert werden, indem die jeweiligen  möglichen Ausprägungen jeweils aufgelistet werden:

 

introAnn : ’<abk ref="720">solv.</abk>’ ;

einzahler : ’<abk ref="522">p. m.</abk>’ person ;

waehrung : ’(INT (’<abk ref="354">fl.</abk>’| ’<abk ref="716">sol.</abk>’| ’<abk ref="277">den.</abk>’)

 

Das Intro einer Anntenzahlung besteht immer aus dem gleichen Wort: „solv.“; ein Einzahler besteht immer aus der Abkürzung „p.m.“, gefolgt voneinem Personennamen. Streng genommen bedürfte „Person“ an dieser Stelle einer eigenen Ausdefinierung, auf die jedoch aus Platz und Verständnisgründen verzichtet sei. Als „Währung“ wird eine Konstruktion bezeichnet, die aus einer arabischen Zahl besteht, auf die eine von mehreren Währungen folgen kann. Da die Menge der Währung nur ganzzahlig angegeben wird, ist hierfür der Datentyp Integer (INT) ausreichend. Der senkrechte Strich (auch „Pipe“ genannt) markiert ein logisches „oder“ und bedeutet, dass genau eine der abgetrennten Optionen folgen kann. In unserem vereinfachten Beispiel kennt das Programm die Währungen Florin („fl.“), Solidus („sol.“) und Denar („den.“).

Diese Grammatik bildet nun einen einzigen Regesteneintrag (RG III/213) ab.

 

Beispiel für einen Parserbaum für RG III 213

Foto: MEPHISTO

Bereits der nächste Eintrag (RGIII/216) jedoch lässt sich mit der Struktur schon nicht mehr darstellen. Zwischen Einzahler und Geldwert wird hier erläutert, um was für eine Art der Zahlung es sich handelt. „Pro complem. annate“ bedeutet dabei, dass es sich nur um eine Teilzahlung von Annaten handelt. Das nächste Beispiel fügt neben der Tatsache, dass es sich um eine andere Zahlungsart („pro parte annate“) handelt (ebenfalls um Annaten, jedoch um die Abschlusszahlung) noch die Pfründe hinzu, für die bezahlt wird. Einzelne Bestandteile eines Sublemmas können also optional sein und tauchen daher nicht in jedem Regest auf. Diese wird in ANTLR mit Hilfe eines Fragezeichens abgebildet. Nach einer Einarbeitung all dieser und weiterer Unregelmäßigkeiten ergibt sich folgende grammatische Regel:

 

grammar AnnatenZahl;

annatePay: introAnn einzahler? beschreibung? (waehrung | pfruende spec? Waehrung);

 

Auf das Intro folgt optional ein Einzahler, dann optional eine nähere Beschreibung und darauf entweder direkt ein Geldbetrag mit Währung oder zunächst die entsprechende Pfründe mit einer optionalen Spezifizierung (beispielsweise in welchem Umfang mit der Pfründe Seelsorgepflichten verbunden sind) und dann Art und Menge der Währung.

Die XML-Auszeichnung

Beim Parsen sucht ANTLR innerhalb der Regesteneinträgs die entsprechenden Markerworte. Stellt die „ALL(*)“-Parsertechnik mittels des „Look Aheads“ fest, dass sowohl das Markerworte als auch die darauf folgenden Tokens (kleinste Bestandteile der Grammatik, in unserem Fall die einzelnen Worte) in das Schema der möglichen Ausprägungen einer Annatenzahlung passen, so leitet ANTLR in diese eine / die benötigte grammatische Regel ab. Dabei werden die einzelnen Bestandteile gemäß den grammatischen Regeln identifiziert und in einem Parserbaum ausgegeben. Mittels dieses Parserbaums ist es wiederum möglich die Regesten und Sublemmas in XML auszuzeichnen. Wir können beispielsweise jede Annatenzahlung als solche annotieren, damit diese Informationen dauerhaft im XML abgebildet werden und bei Bedarf leichter extrahiert werden können.