Digitale Edition von Notkers Psalmenkommentar (Notker III. von St. Gallen, ca. 950–1022). Prototyp für einen Drittmittelantrag, Psalm 2 als Demonstrationsobjekt.
| Rolle | Person / Organisation |
|---|---|
| Auftraggeber | Dr. Philipp Pfeifer, Universität Graz |
| Kooperation | Georg Vogeler, Bernhard Bauer (ZIM Graz) |
| Auftragnehmer | Digital Humanities Craft OG |
Repository: https://github.com/DigitalHumanitiesCraft/notker-edition
Promptotyping-Methode. Alle Designentscheidungen und Domänenwissen im Research Vault unter knowledge/. Lies die Wissensdokumente, bevor du Code schreibst.
Der knowledge/-Ordner folgt der Konvention Promptotyping Documents. Frontmatter-Schema-Version 0.2.
| Dokument | Funktion | Inhalt |
|---|---|---|
knowledge/INDEX.md |
Navigation + Begriffslexikon | Lesereihenfolge, Funktionsraster, Begriffslexikon |
knowledge/project.md |
Identität | Projektkontext, Phasen, was bewusst nicht geleistet wird |
knowledge/data.md |
Material | Domäne, Textschichten, Siglen, Datenquellen, ReA-Korpus, Probeseite-Strukturanalyse |
knowledge/specification.md |
Substanz | Anforderungen Iteration 1+2, Entscheidungen, Phasenplan, Stand pro Story, 2c-Follow-up |
knowledge/design.md |
Gestalt | Editionsinterface, Slot-System, Toggles, Farbsystem |
knowledge/architecture.md |
Bauweise | Pipeline, TEI-Modell, JSON-Schema, Web-Stack, IIIF |
knowledge/editorial-guidelines.md |
Bauweise (TEI-Spezialisierung) | TEI-Kodierungsregeln für alle Textphänomene |
knowledge/journal.md |
Genese | Projektchronologie, Entscheidungen pro Session |
knowledge/offene-korrekturen.md |
Process | Tech-Debt-Tracker (TEI, Pipeline, UI) |
Empfohlene Lese-Reihenfolge bei neuer Session: INDEX.md → project.md → data.md → specification.md → design.md → architecture.md → editorial-guidelines.md. journal.md und offene-korrekturen.md punktuell.
Nicht-indexiert: knowledge/_drafts/ enthält Mail-Entwürfe und andere interne Arbeitsdokumente. Wird von sync_vault.py nicht in den öffentlichen Vault kopiert.
TEI-XML ist die kanonische Datenquelle. JSON wird daraus abgeleitet.
Probeseite_Notker.docx → parse_probeseite.py → classify_layers.py → build_tei.py → psalm{N}.xml
↓
tei_to_json.py
↓
psalm{N}.json → docs/index.html
Textkorrekturen (z.B. Pfeifer-Review-Feedback) sind als zwei Listen in
parse_probeseite.py deklariert:
PFEIFER_CORRECTIONS— Fließtext-Patterns, viaapply_corrections()PFEIFER_LINE_CORRECTIONS— zeilenbezogene Patterns, viaapply_line_corrections()pro<l>
Beide sind idempotent (str.replace findet nichts, wenn die Korrekturen bereits in einer aktualisierten DOCX enthalten sind).
Multi-Psalm-ready:
python scripts/build_tei.py [N]erzeugtdata/tei/psalm{N}.xml(Default: 2)python scripts/tei_to_json.py [N]erzeugtdata/processed/psalm{N}.json(oder alle)data/tei/index.jsonunddata/processed/index.jsonlisten alle verfügbaren Psalmen- Frontend liest den JSON-Index dynamisch und rendert die Psalm-Nav. Aktiver Psalm via URL-Hash
#psalm=N build_tei.pyruft am Endesync_vault.pyauf (kopiertknowledge/*.md→docs/vault/)
Web-Stack: Vanilla JS + HTML/CSS, Gentium Book Plus, OpenSeadragon (CDN), GitHub Pages. Single-File-Prinzip: docs/index.html enthält alles.
notker-edition/
├── CLAUDE.md
├── ReadMe.md
├── index.html # Root-Redirect → docs/index.html
├── knowledge/ # Research Vault (Markdown-Dokumente)
├── data/
│ ├── Probeseite_Notker.docx # Primärdatenquelle
│ ├── tei/psalm{N}.xml # Kanonisches TEI-XML (normalisiert)
│ ├── tei/index.json # Liste verfügbarer Psalmen (TEI)
│ ├── processed/psalm{N}.json # Abgeleitetes JSON für Web-UI
│ ├── processed/index.json # Liste verfügbarer Psalmen (JSON)
│ └── schema/tei_all.rng # TEI RelaxNG Schema
├── scripts/
│ ├── parse_probeseite.py # DOCX → Zwischenformat (+ PFEIFER_CORRECTIONS, PFEIFER_LINE_CORRECTIONS)
│ ├── classify_layers.py # Sprachwechsel, Segment-Verkettung
│ ├── build_tei.py # → psalm{N}.xml (akzeptiert psalm_number als CLI-Arg)
│ ├── tei_to_json.py # → psalm{N}.json (single oder alle)
│ ├── sync_vault.py # knowledge/*.md → docs/vault/ (mit Git-Hash)
│ ├── test_pipeline.py # Integration/Regression-Tests
│ └── validate_tei.py # TEI-Validierung gegen RelaxNG
├── tests/
│ ├── test_gloss_classification.py # Unit-Tests Glossen-Heuristik
│ └── test_crossverse_nhd.py # Unit-Tests Cross-Verse-nhd-Drift
└── docs/
├── index.html # Single-File-Webanwendung
├── richtlinien.html # Editionsrichtlinien (Unterseite)
├── methode.html # Methode und technischer Aufbau (Unterseite)
├── vault.html # Research-Vault-Viewer (rendert knowledge/*.md)
└── vault/ # Synchronisierte Kopie von knowledge/ + index.json
Wenn Pfeifer eine DOCX für einen weiteren Psalm liefert:
- DOCX nach
data/{Psalm-Name}.docxlegen python scripts/build_tei.py N --docx data/{Psalm-Name}.docx— erzeugtdata/tei/psalmN.xml+ aktualisiert Indexpython scripts/tei_to_json.py N— erzeugtdata/processed/psalmN.json+ aktualisiert Index- Frontend erkennt den neuen Psalm automatisch (Reload genügt). Psalm-Nav macht ihn klickbar.
Keine Code-Änderung in docs/index.html nötig.
- TEI ist kanonisch. Bei Widersprüchen zwischen JSON und TEI gilt das TEI.
- Probeseite ist Ground Truth. Bei Widersprüchen zwischen Dokumenten und der Probeseite gilt die Probeseite.
- Keine ungeklärten Siglen erfinden. RII, N und H (als Quellen-Sigle) sind ungeklärt.
- Single-File-Prinzip. Die Webanwendung ist eine HTML-Datei. CSS und JS eingebettet.
- Drei Textschichten. Psalmzitation (olive), Übersetzung (grün), Kommentar (schwarz). Funktionale Klassifikation, nicht sprachbasiert. Im TEI als
<seg type="psalm|translation|commentary">. - Tests laufen lassen.
python scripts/test_pipeline.pynach Pipeline-Änderungen.