MHDBDB-Schema
Welches TEI-Modell verwendet die MHDBDB? Diese Seite zeigt das normative Schema mit Pflicht-Elementen, neun validierten Beispieldateien zum Anschauen und einen Step-by-Step-Pfad von der reinen Textdatei zur MHDBDB-konformen TEI-XML.
1. Was ist das MHDBDB-Schema?
Das MHDBDB-Schema ist eine
RELAX-NG-Definition,
die festlegt, wie eine TEI-Datei aussehen muss, damit sie von den
MHDBDB-Werkzeugen verarbeitet werden kann. Es gibt zwei Schemata:
eines für die Korpustexte
(schema/mhdbdb.rnc),
eines für die acht Authority-Files
(schema/mhdbdb-authority.rnc).
Jede Datei wird in zwei Stufen validiert:
- Stufe 1 – TEI P5 (
tei_all.rng, gepinnt auf Version 4.11.0): Ist die Datei valides TEI? - Stufe 2 – MHDBDB-Constraints (
mhdbdb.rncbzw.mhdbdb-authority.rnc): Folgt sie den MHDBDB-Konventionen?
Stufe 2 ist das maßgebliche Schema und wird hart in der CI geprüft; Stufe 1 sichert die Interoperabilität mit dem TEI-Ökosystem ab. Beide Schemata liegen im Schema-Verzeichnis auf GitHub.
Warum kein ODD? Die MHDBDB-Schemata sind direkt in
RELAX NG geschrieben, nicht aus ODD generiert. Hintergrund:
Die ODD-Toolchain (Roma, odd2relax)
ist faktisch nicht mehr gepflegt; RELAX NG ist die eigentliche
Validierungssprache. Details siehe
schema/README.md.
2. Schema-Skelett und Pflicht-Elemente
Dokumentstruktur einer Korpusdatei
<TEI xml:id="SIGLE">
<teiHeader>
<fileDesc>
<titleStmt>...</titleStmt>
<publicationStmt>...</publicationStmt>
<sourceDesc><msDesc>...</msDesc></sourceDesc>
</fileDesc>
<encodingDesc>
<projectDesc>...</projectDesc>
<editorialDecl>...</editorialDecl>
<classDecl><taxonomy>...</taxonomy></classDecl>
</encodingDesc>
<profileDesc>
<langUsage><language ident="gmh"/></langUsage>
<particDesc><listPerson>...</listPerson></particDesc>
</profileDesc>
<revisionDesc><change when="..." who="...">...</change></revisionDesc>
</teiHeader>
<text><body>
<div type="...">
<p> oder <lg> oder <l> oder <ab> <!-- Blockelemente -->
<w xml:id="..." lemmaRef="..." pos="...">...</w>
<pc join="left">,</pc>
</p>
</div>
</body></text>
</TEI>
Pflicht-Attribute auf Kernelementen
| Element | Pflicht | Empfohlen | Funktion |
|---|---|---|---|
<w> |
@xml:id |
@lemmaRef, @pos, @ana, @corresp |
Wort-Token mit semantischer Annotation |
<pc> |
@join = left | right |
@xml:id |
Interpunktion (kein <seg type="pc">) |
<div> |
– | @type, @n |
Textgliederung; Enum siehe TEI-MODEL §6 |
<lg> |
– | @type="stanza", @n |
Strophe (Vers) |
<l> |
– | @n |
Verszeile |
<lb/> |
– | @n |
Zeilenumbruch (Prosa); kein <l> für Prosa |
<msIdentifier> |
@corresp = works.xml#work_N |
– | Werk-Anker in den Authority Files |
Wort-Annotationsmuster
<w xml:id="ABG_101_0"
lemmaRef="lexicon.xml#lemma_879"
pos="NOM"
ana="lexicon.xml#lemma_879_sense_1234"
corresp="variants.xml#type_5678">brôt</w>
@lemmaRef– Pfad zum Lemma-Eintrag inlexicon.xml@pos– POS-Tag aus dem 19-Tag-MHDBDB-Set (nicht STTS/UD)@ana– Pfad zur Bedeutung/zum Konzept@corresp– Pfad zum orthographischen Variantentyp
Wörter ohne @lemmaRef
werden vom Korpus-Index übersprungen. Vollständige normative Spezifikation:
docs/TEI-MODEL.md.
3. Neun Beispieldateien zum Anschauen
Das Repository enthält neun validierte Beispieldateien, eine pro Dokumenttyp. Jede ist eine minimale, aber vollständige Vorlage. Klicken Sie zum Aufklappen.
Quelle: schema/examples/ im Repository.
corpus.example.tei.xml – Alle Gattungsmuster (Vers, Prosa, Rezept, Lyrik, Predigt, Kolophon)
authority-lexicon.example.xml – Lemma-Einträge mit Bedeutungen
authority-persons.example.xml – Personeneinträge mit GND/Wikidata
authority-works.example.xml – Werkeinträge mit Bibliographie
authority-genres.example.xml – Hierarchische Gattungstaxonomie
authority-concepts.example.xml – Semantische Begriffsontologie
authority-variants.example.xml – Orthographische Variantenzuordnungen
authority-names.example.xml – Mittelalterliche Namensformen
authority-contributors.example.xml – Mitwirkenden-Register
4. Von der Textdatei zur MHDBDB-TEI
Sie haben einen lemmatisierten oder unlemmatisierten mittelhochdeutschen Text, etwa als Plaintext oder als CSV mit Token-Spalten? So kommen Sie Schritt für Schritt zu einer MHDBDB-konformen TEI-Datei. Wenn Sie schon eine TEI-Datei haben, die in ein älteres MHD-Schema kodiert ist, ist der Konversionsleitfaden der bessere Einstieg.
-
1
Skelett kopieren
Starten Sie nicht von Null. Kopieren Sie corpus.example.tei.xml aus dem Repository. Diese Datei enthält bereits Header-Skelett, Schema-Verweis und Beispiel-Strukturen für Vers und Prosa.
-
2
Sigle und Werk-Anker vergeben
Vergeben Sie eine eindeutige Sigle (z. B.
ABGfür „Albrechts Gesta") und tragen Sie sie in<TEI xml:id="...">,<idno type="sigle">und in alle<w xml:id="SIGLE_...">-Präfixe ein. Die Sigle wird mit dem MHDBDB-Team abgestimmt.Verlinken Sie das Werk per
<msIdentifier corresp="works.xml#work_N">zurworks.xml. Existiert das Werk dort noch nicht, legen Sie es vorab gemeinsam mit dem Team an. -
3
Header füllen
Titel, Autor*in, Publikation, Lizenz, sowie ein Eintrag in
<revisionDesc>mit@whenund@who. Beispiel-Skelett komplett: Abschnitt 2 oben.Für die Sprachstufe wird aktuell durchgängig
<language ident="gmh">(Mittelhochdeutsch) verwendet. Eine MHDBDB-Konvention für Frühneuhochdeutsch oder feinere Sprachstufen ist noch in Diskussion (siehe Issue #81); klären Sie den passenden Code vor der Einreichung mit dem Team. -
4
Body strukturieren
Verspoesie:
<lg type="stanza"><l>...</l></lg>. Prosa:<p>...<lb/>...</p>. Für die Gliederung verwenden Sie<div type="chapter|section|song|number|recipe|colophon|parallel">; das genaue Enum dokumentiert TEI-MODEL §6. -
5
Wörter und Interpunktion taggen
Jedes Wort bekommt ein
<w xml:id="...">mit dateiweit eindeutiger ID. Interpunktion wird als<pc join="left">(an das vorige Wort) oderjoin="right"(an das folgende) kodiert, nie als<seg type="pc">.Lemmatisierung (
@lemmaRef) und POS-Tagging (@pos) sind in der Erstfassung nicht zwingend; das MHDBDB-Team führt sie nachträglich in einer halbautomatischen Pipeline durch (siehe Konversionsleitfaden, Abschnitt 6). -
6
Validieren
Vor der Einreichung gegen beide Schemata prüfen. Anleitung im nächsten Abschnitt.
5. Validieren
Im Editor (oXygen, VS Code Scholarly XML)
Setzen Sie am Datei-Anfang eine
<?xml-model?>-Processing-Instruction:
<?xml-model href="../schema/mhdbdb.rng"
type="application/xml"
schematypens="http://relaxng.org/ns/structure/1.0"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" xml:id="SIGLE">
...
Damit prüft Ihr Editor live gegen das MHDBDB-Schema (Stufe 2). Die TEI-P5-Validation (Stufe 1) bleibt der CI vorbehalten, weil 30 Korpus-Files bewusst gegen TEI-Standard sind (GAPs 1–11 im Schema-Header).
Vor dem Einreichen (Python)
pip install lxml rnc2rng
# tei_all.rng einmalig herunterladen
curl -sL "https://tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" \
-o schema/tei_all.rng
# Korpus-Datei validieren
python -c "
from lxml import etree
tree = etree.parse('tei/SIGLE.tei.xml')
tei_all = etree.RelaxNG(etree.parse('schema/tei_all.rng'))
mhdbdb = etree.RelaxNG(etree.parse('schema/mhdbdb.rng'))
print('TEI P5:', 'VALID' if tei_all.validate(tree) else tei_all.error_log)
print('MHDBDB:', 'VALID' if mhdbdb.validate(tree) else mhdbdb.error_log)
"
Beide Stufen müssen VALID
ausgeben. Bei Stufe-2-Fehlern muss die Datei korrigiert werden, bei
Stufe-1-Fehlern können Sie mit dem Team prüfen, ob ein GAP-Eintrag im
Schema gerechtfertigt ist.
6. Einreichen
Wenn Ihre Datei beide Validierungsstufen besteht, gibt es zwei Wege:
- Einreichung per E-Mail – mhdbdb@plus.ac.at mit Sigle-Vorschlag, Werk-Metadaten (Titel, Autor, Edition, Lizenz) und der validierten TEI-Datei.
-
Pull Request auf GitHub – wenn Sie git-vertraut sind:
Fork von
DigitalHumanitiesCraft/mhdbdb-tei-only,
TEI-Datei in
tei/plus Werk-Eintrag inauthority-files/works.xml, PR eröffnen. Die CI prüft automatisch beide Validierungsstufen.
Was wir vom Beitrag wissen müssen
- Sigle – ein 2–5 Buchstaben langer Werk-Identifier (z. B.
ABG,ARI1) - Werk-Metadaten – Titel, Autor (mit GND/Wikidata wenn vorhanden), Entstehungszeit, Gattung
- Quellangabe – Edition oder Handschrift, auf der die Auszeichnung basiert
- Lizenz – idealerweise CC BY-NC-SA 4.0, kompatibel mit dem MHDBDB-Korpus
- Kontakt – wer hat das transkribiert / annotiert, wer ist Ansprechperson
Für die Schema-Konversion bereits TEI-kodierter Daten siehe den Konversionsleitfaden; für den breiteren Kontext (Authority-Files, Pipeline, Wenzelsbibel als Worked Example) ebenfalls dort.
Stand: Mai 2026 · Änderungen auf GitHub