Bisher ist es oft nur recht umständlich herauszufinden, ob und welche Schnittstellen zu einem Bibliothekssystem existieren. Dies kann nun auf sehr bequeme Weise über die lobid-API erfolgen. Im Sigelverzeichnis lassen sich die API-Endpoints verschiedener offener Programmierschnittstellen erfassen und sind dann über lobid-organisations abfragbar.
Wir nehmen als Beispiel die Universitätsbibliothek Hildesheim (DE-Hil2), die ihre Schnittstellen (SRU, DAIA, PAIA) vorbildlich erfasst hat. Das JSON-LD enthält folgende Informationen:
{
"id":"http://lobid.org/organisations/DE-Hil2#!",
"availableChannel":[
{
"serviceType":"SRU",
"type":["ServiceChannel","WebAPI"],
"serviceUrl":"http://sru.gbv.de/opac-de-hil2"
},
{
"serviceType":"PAIA",
"type":["ServiceChannel","WebAPI"],
"serviceUrl":"https://paia.gbv.de/DE-Hil2/"
},
{
"serviceType":"DAIA",
"type":["ServiceChannel","WebAPI"],
"serviceUrl":"https://paia.gbv.de/DE-Hil2/daia"
}
]
}
Im availableChannel
Array sind also nun alle im Sigelverzeichnis eingetragenen Service URLs als ServiceChannel
angegeben, wobei nur Programmierschnittstellen den zusätzlichen Typ WebAPI
haben.* Mit serviceType
wird der jeweilige Schnittstellentyp angegeben.
Alle Felder lassen sich über die API abfragen. Hier ein paar Beispiele:
- Einrichtungen, die mindestens eine offene API im Sigelverzeichnis dokumentiert haben:
availableChannel.type:WebAPI
- Einrichtungen mit Angabe einer SRU-Schnittstelle:
availableChannel.serviceType:SRU
- Einrichtungen mit Angabe einer OpenURL-Schnittstelle:
availableChannel.serviceType:OpenURL
- Einrichtungen mit Angabe einer DAIA- oder PAIA-API:
availableChannel.serviceType:DAIA OR availableChannel.serviceType:PAIA
- Einrichtungen mit verzeichneter DAIA-API aber ohne SRU-API:
availableChannel.serviceType:DAIA AND NOT availableChannel.serviceType:SRU
Die Abfragen lassen sich natürlich beliebig mit der Abfrage anderer Felder (siehe die API-Dokumentation kombinieren, zum Beispiel:
- Alle Zentralen Universitätsbibliotheken, die mindestens eine offene API im SIgelverzeichnis dokumentiert haben:
availableChannel.type:WebAPI AND classification.id:"http://purl.org/lobid/libtype#n60"
Voraussetzung für eine umfassende Suche nach offenen Schnittstellen ist natürlich, dass die Schnittstellen überhaupt im Sigelverzeichnis erfasst sind, wozu wir ausdrücklich ermutigen möchten. Für die Erfassung hat Jakob Voß eine Anleitung erstellt, die wir hier wiedergeben.
Eintragung offener APIs im Sigelverzeichnis
Ob und unter welcher URL welche Schnittstellen zu Bibliothekssystemen existieren ist oft nur aufwändig herauszufinden. Es wird deshalb empfohlen die API-URLs im Sigelverzeichnis einzutragen. Grundlage hierfür ist das Pica3-Feld 856. Zur Eintragung und Aktualisierung kann das Webformular der Sigelstelle verwendet werden:
- Eintrag der eigenen Bibliothek im Sigelverzeichnis suchen (z.B. https://sigel.staatsbibliothek-berlin.de/suche/?isil=DE-Hil2)
- Ganz unten auf “Änderungen zu Angaben mitteilen” klicken (z.B. https://sigel.staatsbibliothek-berlin.de/aenderungen-mitteilen/?isil=DE-Hil2)
- Vorhandene Schnittstellen unter “Service-URLs” ergänzen
- Art der URL: “weitere Service-URL” auswählen
- Text (Textfeld direkt unter der Auswahlliste): Art der Schnittstelle, also “SRU”, “Z39.50”, “DAIA”, “PAIA” oder “OpenURL”
- URL: Basis-URL der jeweiligen Schnittstelle
- Formular abschicken (vorher noch eigene Kontaktdaten für Rückfragen angeben) & Bestätigungslink in der automatisch verschickten E-Mail klicken
Wer will kann natürlich auch den Link zum Änderungsformular im jeweiligen lobid-organisations-Eintrag klicken:
Dank
Danke an alle Beteiligten (siehe diesen Twitter Thread), vor allem Jakob Voß und Carsten Klee für die schnelle Unterstützung. Das war ein zügige verbundübergreifende Zusammenarbeit, die Spaß gemacht hat. Und merci im Vorabbereich an alle, die ihre offenen Schnittstellen im Sigelverzeichnis erfassen!
* Es gibt noch einige weitere Nutzungsarten des entsprechenden Feldes im Sigelverzeichnis, z.B. werden Links zur Benutzungsordnung, zum Standort oder zu den Öffnungszeiten in dem Feld angegeben. Eine Liste der serviceType
-Werte gibt es hier.
Comments? Feedback? Just add an annotation with hypothes.is.