Generischer JSON Import
OPAC Plugin für die Datenübernahme von JSON Datensätzen
Last updated
OPAC Plugin für die Datenübernahme von JSON Datensätzen
Last updated
Name | Wert |
---|---|
Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins können Daten aus einem externen System abgefragt und in Goobi übernommen werden. Der Katalog muss eine API haben, über die Datensätze als JSON ausgeliefert werden können.
Das Plugin besteht aus drei Dateien:
Die Datei plugin_intranda_opac_json-base.jar
enthält die Programmlogik und muss für den Nutzer tomcat8
lesbar an folgendem Pfad installiert werden:
Die Datei plugin_intranda_opac_json-gui.jar
enthält die Nutzeroberfläche und muss für den Nutzer tomcat8
lesbar an folgendem Pfad installiert werden:
Die Datei plugin_intranda_opac_json.xml
muss ebenfalls für den Nutzer tomcat8
lesbar sein und unter folgendem Pfad liegen:
Wenn in Goobi nach einem Identifier gesucht wird, wird im Hintergrund eine Anfrage an die konfigurierte URL gestellt.
Passend zur oben beschriebenen Konfiguration entspricht dies etwa der folgenden URL:
Sind weitere Felder für die Katalogabfrage definiert, so werden diese ebenfalls in der Nutzeroberfläche angezeigt:
Sofern unter dieser URL ein gültiger Datensatz gefunden wird, wird dieser nach den innerhalb von recordType
definierten Feldern durchsucht, in dem der Dokumententyp stehen soll. Wenn keine Felder definiert wurden oder sie nicht gefunden wurden, wird stattdessen der Typ aus dem konfigurierten Element defaultPublicationType
genutzt. Mit dem ermittelten Typ wird dann das gewünschte Strukturelement erzeugt.
Im Anschluß daran werden die konfigurierten Ausdrücke der metadata
und person
der Reihe nach ausgewertet. Sofern mit einem Ausdruck Daten gefunden werden, wird das entsprechend angegebene Metadatum erzeugt.
Wurde innerhalb der Konfiguration mit dem Parameter showResultList
festgelegt, dass eine Trefferliste zur Verfügung stehen soll, aus der der Nutzer einen Datensatz auswählen kann, so öffnet sich nach der Katalogabfrage ein Dialog wie der folgende:
Die Konfiguration des Plugins erfolgt in den folgenden Dateien, die sich im Verzeichnis /opt/digiverso/goobi/config/
befinden.
In der Datei goobi_opac.xml
muss die Schnittstelle zum gewünschten Katalogsystem bekannt gemacht werden. Dies geschieht durch einen Eintrag, der wie folgt aussieht:
Das Attribut title
enthält einen eindeutigen Namen. Das zu verwendende Plugin wird durch opacType
bestimmt, das in diesem Fall intranda_opac_json
sein muss. Die anderen Felder sind nicht erforderlich.
Die Zuordnung des JSON-Datensatzes zu den Goobi-Metadaten wird durch die Datei plugin_intranda_opac_json.xml
bestimmt. Auf die Felder innerhalb des JSON-Datensatzes wird mit JSONPath
, dem XPath-Äquivalent für JSON, verwiesen.
Die zur Verfügung stehenden Kataloge werden in einzelnen <config name="XYZ">
Blöcken definiert. Das Attribut name
enthält den Namen, unter den der Katalog ausgewählt werden kann.
Innerhalb des Katalogs können verschiedene Feldtypen genutzt werden:
Das Element <field>
wird über das Attribut id
identifiziert. Innerhalb der Einträge kann im Element <type>
definiert werden, welche Felder in der Eingabemaske zur Verfügung stehen. Dabei gibt es die verschiedenen Typen text
, select
und select+text
. Der Type text
erzeugt ein einfaches Eingabefeld, select
eine Auswahlliste und select+text
beides. Das Element <label>
enthält den Namen, unter dem das Feld in der Oberfläche angezeigt wird und die Einträge in <select>
defininieren, welche Inhalte in der Auswahlliste enthalten sind. Optional lässt sich eine Vorbelegung angeben. Dies geschieht mit dem Element <defaultText>
.
Das Element ist wiederholbar, so dass die Eingabemaske auch mehrere Eingabefelder enthalten kann.
Eines der Felder muss dabei die URL zum Katalog enthalten. Dieser wird innerhalb des Elements <url>
definiert. Um auf die Nutzereingaben zugreifen zu können, stehen die Variablen {id.select}
und {id.text}
zur Verfügung, wobei id
durch den gewünschten field-Identifier ersetzt werden muss.
Mittels <authentication>
kann definiert werden, wie die Authentifizierung gegenüber dem Katalog erfolgen soll. Das Element kann fehlen oder frei bleiben, wenn der Katalog anonyme Zugriffe erlaubt.
Ansonsten stehen zwei Arten zur Verfügung. Sind nur <username>
und <password>
angegeben, findet eine Basic-Authentifizierung statt.
Als zweite Möglichkeit steht ein Login zur Verfügung. Hierbei wird die im Feld <loginUrl>
definierte API aufgerufen, um eine gültige Session-ID zu bekommen. Dabei wird die Session-ID in dem Feld gesucht, das in <sessionid>
konfiguriert wird. Die Session-ID wird dann beim eigentlichen Request als Header-Parameter genutzt. Der Parameter wird in <headerParameter>
festgelegt.
Das Element <recordType>
enthält die Attribute field
, docType
und anchorType
. In field
wird ein JSONPath-Ausdruck angegeben, der auf den Datensatz angewendet wird. Falls es sich bei dem Typ um ein mehrbändiges Werk oder eine Zeitung/Zeitschrift handelt, muss der zu nutzende anchor
Typ im Feld anchorType
angegeben werden. Existiert ein Feld mit so einem Ausdruck, wird der in docType
definierte Dokumententyp erstellt. Wenn nicht, wird der nächste konfigurierte recordType
überprüft.
Dabei gibt es eine Reihe von Zeichen, die in dieser Datei maskiert sind. Das betrifft zum einen Zeichen wie < > & "
, die in XML eine besondere Bedeutung haben und daher als < > & "
angegeben werden müssen. Daneben ist noch das Komma
betroffen, das mittels Backslash ebenfalls als \,
maskiert werden muss.
Wenn keine der Definitionen zutreffen, kann ein Dokument mit dem Typ aus <defaultPublicationType>
erzeugt werden. Wenn dieses Feld fehlt oder leer ist, wird stattdessen kein Datensatz angelegt.
Die beiden Element <metadata>
und <person>
dienen zum Import einzelner Inhalte aus dem JSON-Datensatz in in die jeweiligen Metadaten. Dazu stehen eine Reihe von Attributen zur Verfügung:
Für die Installation bzw. insbesondere für die Konfiguration des Plugins könnten die folgenden URLs eine weiterführende Hilfe sein:
JSONPath Online Evaluator: https://jsonpath.com/
JSONPath Description: https://support.smartbear.com/alertsite/docs/monitors/api/endpoint/jsonpath.html
Feldtyp | Beschreibung |
---|---|
Attribut | Bedeutung |
---|---|
Identifier
intranda_opac_json
Repository
Lizenz
GPL 2.0 oder neuer
Letzte Änderung
25.07.2024 12:02:24
field
Mit dieser Konfiguration können weitere Abfragefelder definiert werden, die innerhalb der Nutzeroberfläche aufgeführt werden sollen.
authentication
Geben Sie hier die Zugangsdaten für den Zugriff auf die Katalogschnittstelle an.
recordType
Dieser Typ dient zum Erkennen des Dokumententyps des JSON-Datensatzes.
defaultPublicationType
Dieser Typ wird genutzt, wenn zuvor kein Dokumententyp erkannt wurde.
metadata
Dieser Typ dient zum Mapping von JSON-Feldern zu Metadaten.
person
Dieser Typ dient zum Mapping von JSON-Feldern zu Personen.
showResultList
Mit diesem Parameter kann festgelegt werden, dass nach einer Katalogabfrage eine Auswahlliste angezeigt werden soll, die eine Auswahl des zu importierenden Unterdatensatzes aus einer Liste erlaubt.
urlForSecondCall
Die hier angebene URL wird dazu verwendet, dass die ID des ausgewählten Unterdatensatzes für die Abfrage an die hier festgelegte URL angehängt wird.
metadata
Enthält den Namen des Metadatums oder der Person
field
Pfad zum Inhalt innerhalb des JSON-Objekts
docType
Darf den Wert anchor
oder volume
haben. Der default-Wert ist volume
. Mit anchor
gekennzeichnete Felder werden nur bei Mehrbändigen Werken überprüft und importiert.
validationExpression
Regulärer Ausdruck, der prüft ob der gefundene Wert dem definierten Ausdruck entspricht. Ist dies nicht der Fall, wird der Wert ignoriert.
regularExpression
Ein regulärer Ausdruck zur Manipulation des Wertes. Dieser wird nach der Prüfung der validationExpression
angewendet.
firstname
Ein regulärer Ausdruck, mit dem bei Personen der Vorname aus dem Feldinhalt ermittelt wird.
lastname
Ein regulärer Ausdruck, mit dem bei Personen der Nachname aus dem Feldinhalt ermittelt wird.
followLink
Definiert, ob der enthaltene Wert direkt importiert wird, oder einen Link zu einem anderen Datensatz enthält.
templateName
Enthält den Namen des zu nutzenden <config>
Blocks, mit dem der neue Datensatz analysiert werden soll.
basisUrl
Enthält die zu nutzende Basis-URL, falls der Link zum Datensatz ein relativer Pfad ist.