MarcLinkFinc ist ein Tool zur Demonstration der Umwandlung von Marc21-Datensätzen in strukturierte JSON-Objekte mithilfe von LinkML und Pydantic. Es dient als Showcase für die Integration von Marc21-Bibliotheksdaten mit modernen Datenmodellierungstechniken.
Das Projekt hilft dabei, den Weg der Daten aus binären Marc21-Dateien in validierte, strukturierte Datenmodelle visuell darzustellen und zu verstehen, wie Bibliotheksdaten mit modernen Python-Tools verarbeitet werden können.
- Marc21-Feldextraktion: Flexible Extraktion von Feldern und Unterfeldern aus Marc21-Datensätzen
- LinkML-Schemamodellierung: Definition von Datenmodellen in YAML mit LinkML
- Dynamische Modellgenerierung: Automatische Generierung von Pydantic- und Dataclass-Modellen aus dem Schema
- Datenvalidierung: Validierung der extrahierten Daten gegen das definierte Schema
- Modulare Struktur: Erweiterbare Komponenten für anpassbare Datenverarbeitungspipelines
- Marimo-Integration: Interaktive Visualisierung der Datenverarbeitung mit Marimo-Notebooks
- Python 3.12+
- uv (moderner Python-Paketmanager)
Für Linux oder MacOS:
curl -sSf https://astral.sh/uv/install.sh | sh
Für Windows (mit PowerShell):
irm https://astral.sh/uv/install.ps1 | iex
# Repository klonen
git clone https://github.com/thomsbe/MarcLinkFinc.git
cd MarcLinkFinc
# Virtuelle Umgebung erstellen und Abhängigkeiten installieren
uv venv
source .venv/bin/activate # Unter Windows: .venv\Scripts\activate
uv pip install -r requirements.txt
Das Haupttool marc2finc.py
konvertiert Marc21-Dateien in JSON:
python marc2finc.py --input samples/output.mrc --output result.jsonl
Optionen:
--input
: Pfad zur Marc21-Eingabedatei--output
: Pfad zur JSON-Ausgabedatei--format
: Ausgabeformat (pydantic oder dataclass)--schema
: Pfad zur LinkML-Schemadatei (Standard: schema/finc.yaml)
Das interaktive Marimo-Notebook bietet eine visuelle Demonstration (eines Tages, jetzt ist es noch nicht fertig):
marimo edit notebook.py
MarcLinkFinc/
├── help/ # Hilfsmodule
│ ├── marc_utils.py # Marc21-Verarbeitungsklassen
│ ├── slublogging.py # Logging-Konfiguration
│ └── linkml_generator.py # LinkML-Modellgenerator
├── slubmodels/ # Generierte Datenmodelle
│ ├── __init__.py
│ ├── pydantic_model.py # Pydantic-Klassen (generiert)
│ └── dataclass_model.py # Dataclass-Klassen (generiert)
├── samples/ # Beispieldateien
│ └── output.mrc # Beispiel-Marc21-Datei
├── schema/ # LinkML-Schemadefinitionen
│ └── finc.yaml # Haupt-Schema
├── marc2finc.py # Hauptprogramm
├── notebook.py # Marimo-Notebook
├── [technical.md](technical.md) # Technische Dokumentation
└── [user.md](user.md) # Benutzervisualisierungen
Diagramme und Visualisierungen des Datenflusses sind in der user.md-Datei verfügbar, die den gesamten Prozess von der Schema-Definition bis zur JSON-Generierung darstellt.
Das Projekt enthält zwei primäre Dokumentationsdateien:
- user.md - Enthält Mermaid-Diagramme und visuelle Darstellungen des Datenflusses für Endbenutzer
- technical.md - Detaillierte technische Dokumentation über Architekturentscheidungen, Implementierungsdetails und Projektstruktur
Die technische Dokumentation erläutert die verwendeten Bibliotheken, Logging-Konfiguration, Datenfluss und Marc21-Feldextraktion im Detail.
- ✅ Marc21-Feldextraktion mit Musterentfernung
- ✅ LinkML-Schemamodellierung
- ✅ Automatische Modellgenerierung
- ✅ Marimo-Notebook-Grundstruktur
- ✅ Kommandozeileninterface
- ✅ Testdateien und Beispiele
- 🔄 Erweiterte Marimo-Visualisierungen
- 🔄 Vollständige Testabdeckung
Dieses Projekt steht unter der MIT-Lizenz. Siehe die LICENSE-Datei für Details.