Fünf Jahre Avram

zur Beschreibung und Validierung von Bibliotheksdaten

Jakob Voß

2024-04-15

Warum Avram?

  • Lokale Anwendungsprofile von Katalogformaten

  • Prüfung von Daten schwer reproduzierbar

  • Umständliches Nachschlagen in PDF/HTML-Dokumentation

Wie kam es zu Avram?

  • Vorarbeiten von Péter Király mit dem Metadata Quality Assurance Framework (ab 2015)

  • Statistik von MARC21-Feldern (Herbst 2017, Karen Coyle)

  • Wunsch nach maschinenlesbarer Liste (Januar 2018)

  • Umsetzung von Validatoren in Java und Perl für MARC21 und PICA (Péter, ich und Johann Rolschewski)

  • Avram Spezifikation 0.1.0 (Februar 2018)

Henriette Avram

  • 1919 New York – 2006 Miami
  • 1941-1951 Heirat und Kinder
  • 1951 Studium der Mathematik
  • 1952-1959 Arbeit bei der NSA
  • 1965 Leiterin des Project MARC
  • bis 1992 and der LoC

Die Avram Spezifikation

Aufgaben einer Schema-Sprache

  • Formale Schemas definieren Formate

  • Gleiche Validierung mit verschiedenen Programmen

  • Dokumentation

Aufgaben einer Schema-Sprache

Informationen in Avram-Schemas

  • Welche Felder gibt es?

  • Welche Unterfelder gibt es?

  • Welche davon sind optional und wiederholbar?

  • Metadaten (Namen, Beschreibung, Änderungsdatum, Links auf Dokumentation…)

Beispiel (MARC21)

{
  "family": "marc",
  "fields": {
   "245": {
      "tag": "245",
      "label": "Title Statement",
      "repeatable": false,
      "url": "https://www.loc.gov/marc/bibliographic/bd245.html",
      "subfields": {
        "a": {
          "label": "Title",
          "repeatable": false,
          "required": true
        },
        "b": {
          "label": "Remainder of title",
          ...

Validierung von Feldinhalten

  • Codeliste erlaubter Werte (z.B. ISO-Sprachcodes)

  • Regulärer Ausdruck

  • Positionen

Beispiel-Feld (MARC21)

{
  "tag": "033",
  "label": "Date/Time and Place of an Event",
  "url": "https://www.loc.gov/marc/bibliographic/bd033.html",
  "subfields": {
    "a": {
      "label": "Formatted date/time",
      "repeatable": true,
      "pattern": "^[0-9-]{8}([0-9]{4}([+-][0-9]{4})?)?$"
    },
    "2": {
      "label": "Source of term",
      "repeatable": true,
      "codes": "https://www.loc.gov/standards/sourcelist/subject.html",

Zusätzliche Möglichkeiten

  • Markierung von Elementen als deprecated

  • Record Types

  • Erweiterung durch Verweis auf externe Regeln

  • Statistik: Wie oft kommen (Unter)felder vor?

Was kann Avram nicht?

  • Datentypen (Zahl, Datum…)

  • Wenn-dann-Regeln

  • Interpretation des Inhalts

Avram in der Praxis

Vorhandene Avram-Schemas

QA Catalogue

  • Erstes Validierungstool

  • Primär für MARC21, inzwischen auch PICA und UNIMARC

  • Backend: Analyse-Skript und Solr-Index (auch via Docker)

  • Frontend: Webinterface für Ergebnisse

Catmandu

  • Anwendung als Teil einer ETL-Pipeline:

    select valid(., MARC, schema: 'schema.json')
    
    validate(., MARC, schema: 'schema.json')
    if exists(errors)
      ...

picadata

  • PICA::Data

  • Grundlage von Catmandu::Validator::PICA

  • Konvertierung und Validierung von PICA+

  • Fehler in Datensätzen auch als Annotation möglich

Beispiel

003@ $012345X
003@ $0123      
021A $aEin $aBuch$hzum Lesen
$ curl https://format.k10plus.de/avram.pl?profile=k10plus-title \
  > k10plus-title.json
$ picadata validate -s k10plus-title.json example.pp 

12345X: field 003@ is not repeatable
12345X: invalid subfield 021A$a

Avram-JS

  • Referenzimplementierung (d.h. alle Features)

  • Validierung von MARC, PICA und CSV

  • Prüfung von Avram-Schema-Dateien (!)

Beispiel

$ avram -s k10plus-title.json example.pp

k10plus-title.json is a valid Avram 0.9.6 pica schema
$ avram -f pp k10plus-title.json example.pp

Field '003@' must not be repeated.
field 021A subfield a must not be repeated

PicaEditor

PicaEditor

  • Anzeige von PICA-Datensätzen mit Syntax-Highlighting und Kontexthilfe

  • Eher Proof of Concept

  • Problem: Pica3 vs. PICA+

  • Online-Demo ist grade kaputt

Verwandte Methoden

Alternativen zu Avram

  • JSON \(\Rightarrow\) JSON Schema

  • XML \(\Rightarrow\) XML Schema, Schematron, RelaxNG

  • RDF \(\Rightarrow\) SHACL, ShEx

  • CSV \(\Rightarrow\) Data Package Table Scheme, SQL…

Achtung: RDF/XML, MARCXML… sind nur XML-Verpackungen!

Wann sollte Avram nicht verwendet werden?

  • Kein MARC oder PICA im Einsatz

  • Was ich nicht weiß, macht mich nicht heiß

  • Die Daten werden sowieso nicht genutzt

Zusammenfassung

  • Avram gibt’s seit 5 Jahren

  • Validierung und Beschreibung von MARC- und PICA-Daten (und CSV)

  • Mehrere unabhängige Implementierungen und Schemas

  • Außer K10plus leider keine offizielle Unterstützung durch Herausgeberinnen von Bibliographischen Formaten (hello, LoC!*)

  • Ausstehende Verabschiedung der Spezifikation Version 1.0.0 nur Kosmetik

  • Validierung hilft, Qualität macht aber auch Arbeit

Weitere Informationen