Skip to content

Latest commit

 

History

History
203 lines (136 loc) · 11.3 KB

schnittstellen.md

File metadata and controls

203 lines (136 loc) · 11.3 KB

Schnittstellen

Für den lesenden Zugriff auf PICA-Daten gibt es unAPI für einzelne Datensätze und SRU zur Abfrage von Suchergebnissen. Darüber hinaus können PICA-Daten manuell über die OPAC-Oberfläche und mit WinIBW heruntergeladen werden. Über die Avram-API können Informationen zu Anwendungsprofilen abgerufen werden.

unAPI

Die unAPI-Schnittstelle ermöglicht den Abruf einzelner PICA-Datensätze mittels ihrer PPN. Zusätzlich muss ein Datenbankkürzel angegeben werden und in welchem Format der Datensatz zurückgeliefert werden soll.

?> unAPI im K10plus-Wiki

?> unAPI im GBV-Verbundwiki

Eine Liste aller unterstützen Formaten wird bei Aufruf der unAPI-URL (https://unapi.k10plus.de/) zurückgeliefert. Die PICA-basierten Serialisierungen sind:

format= Serialisierung
pp PICA Plain
picajson PICA/JSON
picaxml PICA/XML
normpp Normalisiertes PICA
extpp Binäres PICA

Alle weiteren Formate (marcxml, mods36...) werden durch Konvertierung aus PICA erzeugt.

Beispiel auf der Kommandozeile

Der Datensatz mit der PPN 161165839X aus dem K10plus-Verbundkatalog (opac-de-627) lässt sich im PICA Plain Format (pp) unter der URL http://unapi.k10plus.de/?id=opac-de-627:ppn:161165839X&format=pp abrufen. Auf der Unix-Kommandozeile ist dies beispielsweise mit curl möglich so dass und anschließend mit picadata weiterverarbeitet werden:

curl 'http://unapi.k10plus.de/?id=opac-de-627:ppn:161165839X&format=pp' | picadata '028A|028C'
028A $9079339735$VTpv1$7gnd/118540475$3161149200$wpiz$AGoldman$DEmma$E1869$M1940
028C $9549565094$VTpv3$7gnd/133610519$3299969355$wpiz$APetersen$DTina$E1973$BBearb.
028C $9634784293$VTpv4$7gnd/142220213$3329568302$wpiz$ABreitinger$DMarlen$BÜbers.

Für wiederkehrende Abrufe mit unterschiedlicher PPN lohnt es sich ein Shell-Skript anzulegen, das dann beispielsweise als ./kxp 161165839X aufgerufen werden kann:

cat <<EOF > kxp
#!/bin/bash
kxp() { curl -s "http://unapi.k10plus.de/?format=pp&id=opac-de-627:ppn:$1"; echo; echo; }
if [ -z "$1" ]; then while read -r ppn; do kxp "$ppn"; done
else for ppn in "$@"; do kxp "$ppn"; done; fi
EOF
chmod +x kxp

Beispiel im Browser

In die folgende CodeMirror-Instanz können PICA-Datenätze per unAPI aus dem K10plus-Katalog geladen werden:

<textarea id="pica-editor"></textarea> PPN: Datensatz aus K10Plus laden
<script> var editor = document.getElementById('pica-editor') editor = CodeMirror.fromTextArea(editor, { lineNumbers: true }); document.getElementById('loadViaPPN').addEventListener("click", function () { var ppn = document.getElementById("ppn").value var url = "//unapi.k10plus.de/?format=pp&id=opac-de-627:ppn:" + ppn fetch(url).then(function(res) { res.text().then(function(pica) { editor.setValue(pica) }) }) }) </script>

Die Web-Komponente PicaEditor unterstützt ebenfalls den Zugriff auf Katalogdaten per unAPI.

SRU

Die SRU-Schnittstelle dient der Abfrage von Datensätzen aus PICA-Katalogen mittels Suchanfragen. Die Suche erfolgt wie bei der klassischen OPAC-Oberfläche über einen Suchindex mit Suchschlüsseln. Jeder Suchschlüssel hat eine interne Nummer ("IKT") und ein Kürzel aus drei Buchstaben. So ist beispielsweise die ISBN in IKT 7 mit dem Suchschlüssel ISB indexiert. Für OPAC-Suchanfragen in diesem Index gibt es jeweils entsprechende Suchanfragen an den SRU-Endpunkt des Katalogs:

Eine Liste aller Suchschlüssel einer Datenbank ist über die Basis-URL des SRU-Endpunktes (z.B. http://sru.k10plus.de/opac-de-627) abrufbar und kann folgendermaßen in eine übersichtliche Form gebracht werden:

curl http://sru.k10plus.de/opac-de-627 | catmandu convert XML --path //index to XML | egrep -o '\[[^<]+'

In den Katalogisierungsrichtlinien finden sich auch Angaben dazu, welche PICA-(Unter)felder in welchem Suchindex indexiert werden. Die Beziehung zwischen PICA-Feldern und Suchindex ist allerdings komplexer, da die Daten bei der Indexierung aggregiert, gefiltert und verändert werden können.

?> Weitere Informationen zu SRU im K10plus-Wiki

?> SRU im GBV-Verbundwiki

?> SRU bei der DNB

?> SRU bei der Zeitschriftendatenbank

?> Wikipedia-Artikel zu SRU

Beispiel: K10plus-Abfragen

Zum Testen einer SRU-Anfrage an die K10plus-Datenbank kann mit Catmandu (und der im Catmandu-Kapitel angegebenen Konfiguration) ein einzelner Datensatz per PPN abgerufen werden:

catmandu convert kxp --query "pica.ppn=161165839X" to pp

Der Titel ist in Feld 045H mit der Klasse 335.83092 ("Anarchisten") der Dewey Dezimalklassifikation (DDC) erschlossen:

$ catmandu convert kxp --query "pica.ppn=161165839X" to pp | picadata 045H\$a
335.83092

Die DDC ist im Suchindex mit dem Schlüssel ddc erfasst. Wie viele so erfassten Publikationen über Anarchisten gibt es im im K10plus? Hier mehrere Möglichkeiten der Auswertung. Die letzte Variante ruft nur die Anzahl der Datensätze ab:

catmandu convert kxp --query "pica.ddc=335.83092" to Count
catmandu convert kxp --query "pica.ddc=335.83092" to pp | picadata --count
catmandu convert kxp --query "pica.ddc=335.83092" --parser meta --limit 0 --fix 'retain(numberOfRecords)'

Mehrere Suchschlüssel können mit and oder or verknüpft werden. Hier eine Liste der Titel von Publikationen zu Anarchisten die im Jahr 2014 oder 2015 erschienen sind:

catmandu convert kxp --query "pica.ddc=335.83092 and (pica.jah=2014 or pica.jah=2015)" to pp | picadata 021A

Für komplexere Aufgaben empfiehlt es sich das Ergebnis der SRU-Anfrage nur einmal abzufragen und in eine Datei zu schreiben und anschließend mit verschiedenen Werkzeuge zu analysieren:

catmandu convert kxp --query pica.ddc=335.83092 to pp > ana.pica
picadata 021A ana.pica      # Titelfelder
picadata '011@$a' ana.pica  # Jahreszahlen
catmandu convert pp --fix 'pica_map(011@$a,jahr); remove_field(record)' to CSV

Die Abfrage von Titeln die mit einem Normdatensatz verknüpft sind ist etwas komlizierter. Zunächst muss die PPN des Normdatensatzes ermittelt werden, beispielsweise auf Grundlage der GND-ID 2085624-6.

$ catmandu convert kxpnorm --query "pica.nid=2085624-6" to JSON | jq -r .[]._id
100221165

Mit der PPN lässt sich anschließend eine CQL-Query wie pica.1049=100221165 and pica.1045=rel-tt and pica.1001=b bilden und zur Abfrage von Titeldatensätzen verwenden:

catmandu convert kxpnorm --query "pica.1049=100221165 and pica.1045=rel-tt and pica.1001=b" to pp | picadata -p '003@,021A'

Beispiel: GND-Abfrage

Die PICA-Datenbank der Gemeinsamen Normdatei (GND) ist als Online-GND (OGND) per SRU abfragbar. Mit Kenntnis des GND-Format und der Suchschlüssel lassen sich gezielt GND-Datensätze im Internformat abrufen.

Der Suchschlüssel KSK enthält beispielsweise die vollständige Vorzungsbenennung eines Geografikums oder einer Organisation. Die Suche nach "Frankfurt am Main" liefert einen Treffer, die Suche nach "Frankfurt" keine Treffer:

catmandu convert ognd --query 'pica.ksk="Frankfurt am Main"' to Count
catmandu convert ognd --query 'pica.ksk=Frankfurt' to Count

Im Suchschlüssel KOR werden Suchbegriffe auch als einzelne Worte erfasst. Zu Frankfurt gibt es mehr als 15.000 Treffer (mit dem Parameter --total lässt sich die Ergebnismenge bei Bedarf beschränken, um nur testweise die erste Datensätze abzurufen). Durch Eingrenzung des Normdatentyps auf Gebietskörperschaften und Verwaltungseinheiten (gik) lässt sich die Treffermenge auf etwa 350 verringern, die Abfrage dauert dennoch einige Sekunden:

catmandu convert ognd --query 'pica.kor=Frankfurt and pica.9001=gik' to pp > frankfurts.pica
picadata --count frankfurts.pica

Die so heruntergeladene Treffermenge lässt sich nun mit der Catmandu-Konvertierungssprache "Fix" weiter bearbeiten. Hier ein Beispielskript:

Das Fix-Skript abgespeichert in der Datei gnd.fix, lässt sich folgendermaßen anwenden, um die Namen zu extrahieren:

catmandu convert pp --fix gnd.fix to YAML < frankfurts.pica

OPAC

In der Standard-Katalogansicht eines PICA-Katalogs (OPAC) lässt sich der PICA-Datensatz eines ausgewählten Titels über einen versteckten Link direkt unter dem Icon der Publikationsform aufrufen (siehe Screenshot). Alternativ kann die lässt Feldansicht auch durch den URL-Bestandteil /PSR=PP (nur Titelebene) bzw. /PRS=PP%7F (alle Ebenen) aktiviert werden. Der Datensatz in PICA Plain Serialisierung kann anschließend per Copy & Paste beispielsweise in eine Datei kopiert werden.

Versteckter Link im OPAC

Versteckter Link zum PICA-Datensatz (roter Pfeil)

Unter dem PICA-Datensatz wird in der Feldansicht auch die Indexierung des Datensatz angezeigt (siehe Erklärungen zu SRU).

WinIBW

WinIBW ist zwar nicht frei verfügbar aber das in Bibliotheken am weitesten verbreitete Programm zur Verarbeitung von PICA-Daten. Nicht zuletzt werden PICA-Daten bei der Katalogisierung in der Regel mittels WinIBW in PICA-Datenbanken eingetragen.

?> Download von Datensätzen in WinIBW

Avram-API

Neben den oben genannten Möglichkeiten zum Zugriff auf PICA-Daten gibt es mit der Avram-API eine Schnittstelle zum Zugriff auf Schema-Informationen (Avram Schemas). Abrufbar sind Informationen zu PICA-Feldern und Unterfeldern ausgehend von Feldnummern in PICA+ und Pica3 (Abfrage-Parameter field bzw. pica3) oder alle Felder eines Anwendungsprofils (Abfrage-Parameter profile).

Die Avram-API für den K10Plus-Katalog steht unter https://format.k10plus.de/avram.pl zur Verfügung und ist dort dokumentiert. So lässt sich beispielsweise mit der URL https://format.k10plus.de/avram.pl?pica3=4000&profile=k10plus abrufen, wie das Pica3-Feld 4000 im K10Plus-Format definiert ist:

Ein Beispiel für die Verwendung der Schnittstelle liefert die Web-Komponente PicaEditor.