OPAC Plugin for the data transfer of JSON data records
Name | Wert |
---|---|
This documentation describes the installation, configuration and use of the plugin. You can use this plugin to retrieve data from an external system and transfer it to Goobi. The catalog must have an API that allows records to be delivered as JSON.
The plugin consists of three files:
The file plugin_intranda_opac_json-base.jar
contains the program logic and must be installed readable for the user tomcat8
at the following path:
The file plugin_intranda_opac_json-gui.jar
contains the user interface and must be installed readable for the user tomcat8
at the following path:
The file plugin_intranda_opac_json.xml
must also be readable by the user tomcat8
and must be located under the following path:
When you search for an identifier in Goobi, a request is sent to the configured URL in the background.
According to the configuration described above, this corresponds approximately to the following URL:
If further fields are defined for the catalogue query, these are also displayed in the user interface:
If a valid record is found under this URL, it will be searched for the fields defined within recordType
in which the document type should be located. If no fields are defined or they are not found, the type from the configured element defaultPublicationType
is used instead. The required structure element is then created with the determined type.
The configured expressions of the metadata
and person
are then evaluated in sequence. If data is found with an expression, the corresponding specified metadata is generated.
The configuration of the plugin is done in the following files located in the directory /opt/digiverso/goobi/config/
.
In the file goobi_opac.xml
the interface to the desired catalog system must be made known. This is done with an entry that looks like the following:
The attribute title
contains a unique name and opacType
the plugin to be used. In this case the entry must be intranda_opac_json
. The other fields are not required.
The mapping of the contents of the JSON dataset to Goobi metadata is done within the file plugin_intranda_opac_json.xml
. The definition of the fields within the JSON record is done using JSONPath
, the XPath equivalent for JSON.
The available catalogues are defined in individual <config name="XYZ">
blocks. The attribute name
contains the name under which the catalogue can be selected.
Different field types can be used within the catalogue:
The element <field>
is identified by the attribute id
. Within the entries, the element <type>
can be used to define which fields are available in the input mask. There are the different types text
, select
and select+text
. The type text
creates a simple input field, select
a selection list and select+text
both. The element <label>
contains the name under which the field is displayed in the interface and the entries in <select>
define which contents are contained in the selection list. Optionally, a default value can be specified. This is done with the element <defaultText>
.
The element is repeatable, so that the input mask can also contain several input fields.
One of the fields must contain the URL to the catalogue. This is defined within the element <url>
. To access the user input, the variables {id.select}
and {id.text}
are available, whereby id
must be replaced by the desired field identifier.
By means of <authentication>
it can be defined how the authentication towards the catalogue is to take place. The element can be missing or remain free if the catalogue allows anonymous access.
Otherwise two types are available. If only <username>
and <password>
are specified, a basic authentication takes place.
The second possibility is a login. Here the API defined in the field <loginUrl>
is called to get a valid session ID. Here the session ID is searched for in the field that is configured in <sessionid>
. The session ID is then used as a header parameter for the actual request. The parameter is set in <headerParameter>
.
The element <recordType>
contains the attributes field
, docType
and anchorType
. In field
a JSONPath expression is specified that is applied to the record. If the type is a multi-volume work or newspaper/magazine, the anchor
type to be used must be specified in the anchorType
field. If a field with such an expression exists, the document type defined in docType
is created. If not, the next configured recordType
will be checked.
There are a number of characters that are masked in this file. This includes characters such as < > & "
, which have a special meaning in XML and must therefore be specified as < > & "
. Also affected is the comma
, which must also be masked as \,
using a backslash.
If none of the definitions apply, a document can be created with the type from <defaultPublicationType>
. If this field is missing or empty, no record is created instead.
The two fields <metadata>
and <person>
are used to import individual content from the JSON record into the respective metadata. A number of attributes are available for this purpose:
The following URLs could be of further help for the installation or especially for the configuration of the plugin:
JSONPath Online Evaluator: https://jsonpath.com/
JSONPath Description: https://support.smartbear.com/alertsite/docs/monitors/api/endpoint/jsonpath.html
Field type | Description |
---|---|
Attribute | Meaning |
---|---|
Identifier
intranda_opac_json
Repository
Licence
GPL 2.0 or newer
Last change
25.07.2024 12:02:24
field
This configuration can be used to define additional query fields to be listed within the user interface.
authentication
Enter the access data for accessing the catalogue interface here.
recordType
This type is used to detect the document type of the JSON record.
defaultPublicationType
This type is used when no document type has been detected before.
metadata
This type is used to map JSON fields to metadata.
person
This type is used to map JSON fields to persons.
showResultList
This parameter can be used to specify that a selection list should be displayed after a catalogue query, allowing selection of the subrecord to be imported from a list.
urlForSecondCall
The URL specified here is used to have the ID of the selected sub-record for the query appended to the URL specified here.
metadata
Contains the name of the metadata or person
field
Path to the content within the JSON object
docType
May have the value anchor
or volume
. The default value is volume
. Fields marked with anchor
are only checked and imported for multi-volume works.
validationExpression
Regular expression, which checks if the found value matches the defined expression. If this is not the case, the value is ignored.
regularExpression
A regular expression to manipulate the value. This is applied after the validationExpression
check.
firstname
A regular expression that determines the first name of a person from the field contents.
lastname
A regular expression that determines the last name of a person from the field contents.
followLink
Defines whether the contained value is imported directly or contains a link to another data record.
templateName
Contains the name of the <config>
block to be used to analyse the new record.
basisUrl
Contains the base URL to be used if the link to the record is a relative path.