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::Data
Das 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.pica
In 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/JSON
Folgende 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 Option
Oft 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 Felder
Zur 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.pica
Wenn die Liste der Felder länger ist, empfiehlt es sich sie in eine Datei zu schreiben und diese zur referenzieren:
picadata $(<fields) example.pica
Statt 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 Lesen
Fü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.pica
Das 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=k10plus
003@ 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
/--annotate
wird 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.pp
Die Validierung umfasst momentan nur die bibliographische Ebene und keine Occurrence-Bereiche (Siehe Issue)!