5 Verarbeiten von PICA-Daten
Dieses Kapitel gibt eine allgemeine Übersicht von frei zugänglichen Werkzeugen zur Verarbeitung von PICA-Daten. Auf folgende Werkzeuge wird ausführlicher eingegangen:
- Das Kommandozeilenprogramm picadata (Kapitel 8)
- Das Datenverarbeitungs-Werkzeug Catmandu (Kapitel 9)
- Das Kommandozeilenprogramm pica-rs (Kapitel 10)
Darüber hinaus gibt es die Web-Komponente PicaEditor und mehrere Programmbibliotheken zur Entwicklung eigener Werkzeuge und Anwendungen. Schließlich können PICA-Daten in beliebigen Programmiersprachen auch direkt verarbeitet werden.
5.1 PicaEditor
PicaEditor ist eine Komponente für Webanwendungen mit der PICA-Daten im Browser analysiert und bearbeitet werden können. Die Komponente basiert auf CodeMirror und dem JavaScript-Framework Vue3.
Der zentrale Teil des Editors dient der Anzeige und Bearbeitung von PICA+ Daten. Syntaxfehler und Fehler bei der Validierung gegen ein Avram Schema werden dabei hervorgehoben und mit dem Tabular kann schnell zwischen (Unter)feldern des Datensatzes gewechselt werden. Unter dem Bearbeitungsfeld werden (sofern vorhanden) Schema-Informationen zum jeweils ausgewählten Feld angezeigt. Über dem Bearbeitungsfeld stehen die PPN und ein Link in den Katalog, aus dem Datensätze per PPN geladen werden können. Eine Möglichkeit zum Speichern in den Katalog besteht allerdings nicht.
Die Darstellung an dieser Stelle wird gerade überarbeitet!
003@ $0355973081 010@ $ager 011@ $a2001 019@ $aXA-DE$XXX 021A $a@Zehn Jahre Pica in Niedersachsen und Deutschland$dSkizzen eines Erfolgs aus Anlass der 5. Verbundkonferenz des Gemeinsamen Bibliotheksverbundes der Länder Bremen, Hamburg, Mecklenburg-Vorpommern, Niedersachsen, Sachsen-Anhalt, Schleswig-Holstein und Thüringen, vom 11.-12. September, 2001 in Göttingen$h[Redaktion, Elmar Mittler] 029A $a@Gemeinsamer Bibliotheksverbund der Länder Bremen, Hamburg, Mecklenburg-Vorpommern, Niedersachsen, Sachsen-Anhalt, Schleswig-Holstein und Thüringen$bVerbundkonferenz$xGöttingen, Germany) 029F $a@Niedersächsische Staats- und Universitätsbibliothek Göttingen 033A $pGöttingen$nNiedersächsische Staats- und Universitätsbibliothek 034D $a181 p 034I $a21 cm 034M $aill 044A $aPICA Project$aCongresses 045A $aZ699.4.P23 045V $a10$a24,2
Technische Details zur Installation und Konfiguration findet sich in der PicaEditor-Dokumentation.
5.2 Programmbibliotheken
Bei komplexeren Aufgaben stoßen die vorhandenen Werkzeuge mitunter an ihre Grenzen, so dass eigene Programme entwickelt werden müssen. Für einige Programmiersprachen gibt es Softwarebibliotheken, die die Arbeit mit PICA-Daten vereinfachen und verlässlicher machen. Bislang gibt es:
- Die Perl-Programmbibliotheken PICA::Data, auf der sowohl picadata (Kapitel 8) als auch die PICA-Funktionen von Catmandu (Kapitel 9) basiert (ein ältere, inzwischen nicht mehr weiterentwickelte Version der Bibliothek ist PICA::Record).
- Das Node-Modul pica-data stellt JavaScript-Funktionen zur Verarbeitung von PICA+ als PICA Plain und PICA JSON bereit.
- luapica ist eine Programmbibliothek zur PICA-Verarbeitung in Lua.
- pica_parse ist eine Python-Bibliothek für PICA+ Daten.
- Das mit Catmandu vergleichbare Werkzeug Metafacture unterstützt neben anderen Formaten auch das Lesen und Schreiben von PICA-Daten (siehe Java-Quellcode).
5.3 Direkte Verarbeitung
Die relativ einfache Struktur von PICA ermöglicht die direkte Verarbeitung von PICA-Daten, insbesondere wenn diese in Form von normalisiertem PICA vorliegen. Ohne PICA-Programmbibliothek können sich zwar etwas leichter Fehler einschleichen, dafür muss nichts installiert werden und die Verarbeitung ist unter Umständen sogar schneller. Hier ein Beispiel in Perl, das aus normalisiertem PICA alle Unterfelder $a
von Felder mit Inhaltserschließung (044.
und 045.
) ausgibt:
while (<>) { # Ein Datensatz pro Zeile
for ( split /\x1E/ ) { # Schleife über alle Felder
my ( $field, $tmp ) = split ' ', $_, 2; # Tag und Occurrence
my ( undef, @sfs ) = split /\x1F/, $tmp; # Unterfelder
next if $field !~ /^04[45]/; # Verarbeitung des Datensatz
for (@sfs) {
say $1 if $_ =~ /^a(.+)/;
}
} }