8 picadata
Das Kommandozeilenprogramm picadata ermöglicht die Konvertierung zwischen verschiedenen PICA-Serialisierungen, einfache Analyse und Auswertung von PICA-Daten sowie die Validierung gegen Avram-Schemas.
8.1 Installation
Das Tool ist Teil der Perl-Programmbibliothek PICA::Data und wird mit dieser installiert. Unter Debian-basierten Linux-Distributionen (u.A. Ubuntu) geht dies so:
sudo apt-get install libxml-libxml-perl cpanminus
sudo cpanm PICA::DataDas Programm setzt vorhandene PICA-Daten voraus (siehe Kapitel 7) zum Zugriff auf PICA-Daten). Zum Ausprobieren können PICA-Daten in PICA Plain Syntax auch mit einem Texteditor erstellt werden. Laden Sie die Datei example.pica mit folgendem Inhalt herunter:
8.2 Konvertierung
Im einfachsten Anwendungsfall liest picadata PICA+ Datensätze in PICA Plain und gibt sie mit Syntax-Hervorhebung wieder aus. Hier drei Aufruf-Möglichkeiten:
picadata example.pica
cat example.pica | picadata
picadata < example.picaIn der ersten Variante wird die PICA-Syntax anhand der Dateiendung erkannt. Ansonsten kann mit der Option -f/--from das Serialisierungsformat festgelegt werden, beispielsweise -f bin für binäres PICA. Mit der Option -t/--to kann die Serialisierung der Ausgabe festgelegt werden. Standardmäßig sind Serialisierung für Ein- und Ausgabe gleich.
picadata example.pica # PICA Plain nach PICA Plain
picadata example.pica -t xml > example.xml # PICA Plain nach PICA/XML
picadata example.xml # PICA/XML nach PICA/XML
picadata example.xml -t json # PICA/XML nach PICA/JSONFolgende Serialisierungsformate werden unterstützt:
| Format | Name oder Dateiendungen |
|---|---|
| PICA Plain | plain, pp (Standard) |
| Binäres PICA | binary, bin, dat, extpp, ext |
| Normalisiertes PICA | plus, norm, normpp |
| PICA-Importformat | import |
| PICA/JSON | json, ndjson |
| PICA/XML | xml |
| PPXML | ppxml |
Für PICA Plain und PICA/JSON werden vorhandene Annotationen standardmäßig mit ausgegeben. Die Option -A unterdrückt die Ausgabe von Annotationen. Umgekehrt stellt die Option -a/--annotate sicher dass alle Felder annotiert sind, indem ggf. ein Leerzeichen als Standard-Annotation ergänzt wird.
In der Regel sind PICA-Felder in einem Datensatz geordnet. Die Option -o sortiert Datensätze neu und zwar getrennt für die bibliographische Ebene und innerhalb der einzelnen Lokal- und Exemplardatensätze.
8.3 Auswahl von Daten
Bei größeren Datenmengen macht es Sinn sich erstmal einige Beispiele anzuschauen. Mit der Option -n/--number werden nur eine begrenzte Zahl von Datensätzen verarbeitet, z.B. die ersten 10:
picadata -n 10 example.pica
picadata -10 example.pica # Equivalente Abkürzung der OptionOft interessieren nur bestimmte Felder bzw. deren Inhalte. Mit der Option -p/--path lassen sich Datensätze auf Felder eingrenzen. Zur Auswahl der Felder bzw. Unterfelder dient die Abfragesprache PICA Path Expression:
picadata -p '003@' example.pica # Nur Feld 003@
picadata -p '00..' example.pica # Alle Felder die mit 00 beginnen
picadata -p '003@|021A' example.pica # Mehrere FelderZur Abkürzung kann der Optionsschalter -p auch weggelassen werden wenn die Feldauswahl am Anfang steht. So lassen sich beispielsweise Datensätze auf K10plus-Felder zur klassifikatorischen Sacherschließung eingegrenzen:
picadata '003@|021A' <example.picaWenn die Liste der Felder länger ist, empfiehlt es sich sie in eine Datei zu schreiben und diese zur referenzieren:
picadata $(<fields) example.picaStatt ganze PICA-Felder können mit PICA-Path Expressions auch Unterfelder referenziert werden. Die Werte der gefundenen Unterfelder werden zeilenweise ausgegeben. Hier einige Beispiele:
$ picadata '003@$0' example.pica
12345X
$ picadata '021A$a' example.pica
Ein Buch
$ picadata '021A$ah' example.pica
Ein Buch
Zum LesenFür komplexere Auswahl- und Konvertierungs-Routinen (zum Beispiel mit Wenn-Dann-Regeln und Zusammenführung von Feldern) sollte ein mächtigeres Werkzeug zur PICA-Datenverarbeitung wie [Catmandu] oder eine andere Programmiersprache verwendet werden.
8.4 Datenanalyse
Die Option -c/--count erzeugt eine Einfache Statistik mit der Anzahl gelesener Datensätze und Felder. Standardmäßig wird die Ausgabe der Datensätze unterdrückt, außer mit -t/--to ist explizit eine Syntax festgelegt.
picadata -c example.picaDas Ausgabeformat fields (oder kurz f) listet alle vorkommenden Felder auf. Entsprechend gibt es das Ausgabeformat subfields (kurz sf).
picadata f example.pica 003@
021A
045B/02
Bei Angabe eines Schemas per Dateiname oder URL wird (falls vorhanden) das Feld bzw. Unterfeld dokumentiert:
picadata fields example.pica -s https://format.k10plus.de/avram.pl?profile=k10plus003@ o Pica-Produktionsnummer
021A o Haupttitel, Titelzusatz, Verantwortlichkeitsangabe
045B/02 * Systematik für Bibliotheken (SfB)
Das Zeichen nach der Feldnummer gibt an, ob das entsprechende Feld optional und wiederholbar oder nicht wiederholbar (* oder o) bzw. notwendig (+ oder .) ist.
Eine ausführlichere Analyse ist mit der Option -b/--build möglich, die aus vorhandenen PICA-Daten ein Avram-Schema erstellt. Option -B reduziert das Schema zur Besseren Lesbarkeit um redundante Bestandteile.
picadata -B example.pica{
"fields": {
"003@": {
"required": true,
"subfields": {
"0": {
"required": true
}
}
},
"021A": {
"required": true,
"subfields": {
"a": {
"required": true
},
"h": {
"required": true
}
}
},
"045B/02": {
"required": true,
"subfields": {
"a": {
"repeatable": true,
"required": true
}
}
}
}
}8.5 Validierung
Bei Angabe eines Avram-Schema per Datei oder URL mit Option -s/--schema werden Eingabedaten gegen das Schema validiert. Unbekannte Felder und Unterfelder werden dabei ignoriert, außer bei Angabe der zusätzlichen Option -u/--unknown. Das Ergebnis der Validierung kann auf verschiedene Weise angezeigt werden:
Standarmäßig werden nur Fehlermeldungen ausgegeben. Ist der Datensatz korrekt, erfolgt also keine Ausgabe.
Mit der Option
-a/--annotatewird das Ergebnis der Validierung als Feld-Annotation ausgegeben. Die Markierung von fehlerhaften Feldern ist!und von unbekannten Feldern?.
Wurde ein Fehler erkannt, so ist der Statuscode des Programms 1, so dass Shell-Programmierung verwendet werden kann:
picadata -s schema.json example.pica && echo "OK"Hier ein vollständiges Beispiel zur Abfrage und Validierung eines Teilbestandes des K10plus (Titel zum Thema Brückenbau an der TU Braunschweig):
curl https://format.k10plus.de/avram.pl?profile=k10plus-title > k10plus-title.json
catmandu convert kxp --base http://sru.k10plus.de/opac-de-84 --query pica.bkl=56.23 to pp > brueckenbau.pp
picadata validate -s k10plus-title.json brueckenbau.ppDie Validierung umfasst momentan nur die bibliographische Ebene und keine Occurrence-Bereiche (Siehe Issue)!