Die TIB bietet eine neue Anfragemöglichkeit ihrer Daten über das standardisierte Webservice-Protokoll SRU (Search/Retrieve via URL) an.
Search/Retrieve via URL (SRU) ist ein technischer Standard für Bibliotheken (eine Weiterentwicklung des Z39.50-Protokolls), der von der Library of Congress veröffentlicht wurde.
Das SRU-Protokoll ist XML basiert und verwendet die HTTP GET Methode zum Empfang und Rückgabe von SRU kompatiblen Suchanfragen und -Ergebnissen.
Über die SRU-Schnittstelle sind die TIB-Datenbanken verfügbar. Die spezifischen Anfragen sind mittels Retrievalsprache CQL und solr-Syntax formuliert.
Die Ergebnisse der Suche sind in verschiedenen XML-Formaten (MARCXML, Dublin core, RDF_XML) verfügbar.
Protokoll SRU: Version 2.0 (Version 1.1 und Version 1.2 sind unterstützt)
Retrievalsprache CQL: Version 1.2
SRU umfasst zwei Basisfunktionen: Explain und Search/Retrieve.
Jede Anfrage muss einen Parameter query oder queryType enthalten.
Je nach Operation (searchRetrieve, explain) kommen weitere GET-Parameter hinzu. Werden keine GET-Parameter angegeben, so verhält sich der Server so, als hätte er eine Anfrage für explain erhalten.
Parameters in einer SRU-Anfrage:
Parameter | Typ | Default | Beschreibung |
---|---|---|---|
operation | enum | Gewünschte SRU-Operation: explain oder searchRetrieve (erforderlich für Version 1.1 und 1.2) | |
version | string | 1.2 | SRU-Version (erforderlich für Version 1.1 und 1.2) |
query | string | Suchanfrage als CQL | |
queryType | string | cql | |
startRecord | integer | 1 | Erster darzustellender Eintrag der Ergebnisliste (beginnend mit 1) |
maximumRecords | integer | 10 | Maximale Anzahl gewünschter Ergebnisse (max = 50) |
sortKeys | string | ||
recordSchema | string | dc | Das gewünschte Ausgabeformat für die Ergebnisse. Unterstützt wird derzeit dc (Dublin Core) und marcxml (XML-Format für Marc 21) |
facetLimit | string |
explain ist die Selbstbeschreibung der SRU-Server im XML-Standardformat, enthält Informationen über:
Beispiel:
Dies ist die eigentliche Suchoperation.
GET-Parameter query muss eine Anfrage enthalten.
SRU-Schnittstelle von TIB bietet drei Anfragetypen: cql, solr und searchTerms. GET-Parameter queryType ist dafür verantwortet. Wenn keine queryType Parameter angegeben, wird queryType als cql eingesetzt.
Die Suchanfragen werden in CQL formuliert. Es ist Default-Anfragetype. Die CQL-Syntax ist nachfolgend beschrieben. Es gelt für alle SRU-Version (1.1, 1.2 und 2.0).
Beispiel:
https://www.tib.eu/sru/tibkat?query=classField=mat and date any 2001
Die gleiche Anfragesyntax wie in Tib Portal und die gleiche Treffenzahlen bei Suchen. Die Daten sind im Solr-Index in verschiedenen Felder abgelegt. Zur Suche in einem speziellen wird der Feldname und der Suchterm durch ein Doppelpunkt getrennt:
https://www.tib.eu/sru/tibkat?queryType=solr&query=isbn:2* AND issued:2010
Nur für SRU-Version 2.0 funktioniert.
Die Anfrage besteht aus einer Liste der Suchterms. Zum Beispiel: 'solid laser water' , dass als 'solid OR laser OR water' interpretiert wird. Parameter query ist für diesen Anfragetyp nicht erforderlich.
Nur für SRU-Version 2.0 funktioniert.
Zum Beispiel:
https://www.tib.eu/sru/tibkat?queryType=searchTerms=mama papa baba
CQL ist eine formale Sprache zur Wiedergabe von Anfragen. Für die feldweise Suche werden alle Dublin-Core Felder und TIB spezifischen Felder benutzt.
Folgende Relationen und boolsche Operatoren werden unterstützt:
Beispiele für Abfrageformulierungen:
query=creator=James or Stirling
query=creator=Stirlin and title=Mikro-KWK-Anlage
query=creator any Stirling and date any 2001
S. auch https://www.loc.gov/standards/sru/cql/spec.html
Ohne Eingabe des CQL-Dublin-Core-Feldes (entspricht cql.serverChoice oder serverChoice) wird in den folgenden Feldern gesucht: Titel, alternative Titel, Subtitel, Journal Titel, Konferenztitel, Autor, Publikationscodes (ISSN, ISBN uzw.), Identifikatoren (PPN, FTX-ID), Schlüsselworte, Abstract, Volltext, Publisher und Erscheinungsjahr.
Die Tabelle stellt Für die feldweise Suche dar:
CQL-Felder | Beschreibung (TIB spezifisch FTX-Felder) |
---|---|
(ohne Eingabe) oder | mainTitle, alternativeTitle, subTitle, journalTitle |
title oder | mainTitle, alternativeTitle, subTitle, journalTitle |
creator oder | author |
date oder | issued (Jahresangabe) |
description oder | abstract, fulltext, dissertationInfo |
identifier oder | Id (FTX-ID / TIB spezifische ID) |
subject oder | keywords |
volume | volumeNumber |
issue | issueNumber |
firstPage | firstPage |
license | licenseModel |
numbers | Identifikatoren und Codes (außer FTX-ID): PPN, EPN, isbn, issn, publishingNumber uzw |
ppn | PPN (mit der Prüfziffer) |
coverDate | coverDate |
classField | classification |
genreCode | documentGenreCode |
format | documentTypeCode |
journal | journalTitle |
Die Werte für genreCode:
Wert | Suchterm |
---|---|
A | Audiovisuelles Material |
B | Buch (einschl. Konferenzbände, Dissertationen etc.) |
BC | Kapitel (Buch) |
C | Konferenzband (Teilmenge von Buch) |
CA | Beitrag (Konferenz) |
D | Dissertation (Teilmenge von Buch) |
FD | Forschungsdaten |
I | Bild |
J | Zeitschriftentitel |
K | Karte |
JL | Aufsatz (Zeitschrift) |
PP | Preprint |
LA | Artikel (Lexikon) |
M | 3D-Modell |
P | Patent |
PA | Paper |
R | Report |
S | Technische Regel |
T | Audio-Material |
X | Unbekannt |
Die Werte für format:
Wert | Suchterm |
---|---|
AV | Audiovisuelles Material |
CD | CD-ROM / DVD |
DC | Digitalisat Digital Copy |
EL | Elektronische Ressource |
MF | Mikroform |
PR | |
XX | Unbekannt |
Beispiele:
genreCode=JL
format=PR
Die Werte für license:
Wert | Suchterm |
---|---|
al | Allianzlizenz |
kl | Konsortiallizenz |
oa | Open-Access-Dokumente (Freier Zugriff) |
com | kommerzielle Dokumente |
nl | Dokumente mit Nationallizenz |
Die Werte für classField :
Wert | Suchterm |
---|---|
arc | Architektur |
che | Chemie |
inf | Informatik |
mat | Mathematik |
phy | Physik |
tec | Technik |
bio | Biologie |
pae | Erziehungswissenschaften |
hor | Gartenbau |
geo | Geowissenschaften |
his | Geschichte |
lin | Linguistik |
lit | Literaturwissenschaften |
phi | Philosophie |
jur | Recht |
rel | Theologie |
sow | Sozialwissenschaften |
spo | Sport |
oek | Wirtschaftswissenschaften |
Über die SRU-Schnittstelle sind folgende Kataloge verfügbar:
Katalog | Name in SRU-Anfrage | Beschreibung | Beispiel |
---|---|---|---|
TIBKAT | tibkat | Katalog Daten von TIB | https://www.tib.eu/sru/tibkat?query=solid&recordSchema=marcxml |
KMO-AV | kmo | TIB AV-Portal - Dokumente, die für externe Export frei sind | https://www.tib.eu/sru/kmo?query=solid&recordSchema=marcxml |
OLC | olc | Online Contents Dokumente, die für externe Export frei sind | https://www.tib.eu/sru/olc?query=solid&recordSchema=marcxml |
OPEN | open | all open access Datensätze in TIB-Portal | https://www.tib.eu/sru/open?query=solid&recordSchema=marcxml |
FREE | free | alle Datensätze in TIB-Portal, die für externe Export frei sind: TIBKAT, Online Contents (exportRestricted_flag:false), TIB AV-Portal (exportRestricted_flag:false) und alle open access Dokumente | https://www.tib.eu/sru/free?query=solid&recordSchema=marcxml |
Beispiele:
query=identifier="TIBKAT:12939193X"
queryType=solr&query=id:"TIBKAT:12939193X"
query=identifier="awi:doi~10.2312%252FBzPM_0684_2015"
queryType=solr&query=id:"awi:doi~10.2312%252FBzPM_0684_2015"
Es wird im Standardsuchfeld (ohne Angabe des CQL- /Solr-Felders) gesucht. Wenn eine genauere Suche nötig ist, kann man das Feld numbers benutzen.
Bei der Suche mit Wildcards (*, ?) ist queryType=solr und das Feld numbers empfohlen.
query=129110248
queryType=solr&query=129110248
queryType=solr&query=numbers:1291*
query=0952701111
queryType=solr&query=0952701111
queryType=solr&query=numbers:09527?1111
query=0165-6074
query=01656074
queryType=solr&query=01656074
queryType=solr&query=numbers:0165*
Suche nach doi = 10.5170/CERN-2016-001
query="10.5170/CERN-2016-001"
query=numbers="10.5170/CERN-2016-001"
queryType=solr&query="10.5170/CERN-2016-001"
queryType=solr&query=numbers:10.5170\/CERN*
query=PIXXD2
queryType=solr&query=PIXXD2
queryType=solr&query=numbers:PIX*
query=WO99-11806
queryType=solr&query=WO99-11806
queryType=solr&query=numbers:WO99*
Im SRU 1.1 war die Sortierung ein Teil des Protokolls - ein Parameter sortKeys. Im SRU 1.2 wurde es vom Protokoll entfernt und eine Funktion von CQL gemacht - CQl-Parameter sortBy .
Im SRU 2.0 ist die beiden Wege der Sortierung möglich. Der Grund besteht darin, dass im SRU 2.0 man eine andere Anfragensprache außer CQL verwenden kann, und dass diese Anfragensprache die Sortierung nicht unterstützen könnte.
Die SRU - Schnittstelle von TIB ünterstürtzt die Sortierung bei zwei Felder: date und mainTitle.
Beispiele mit dem CQl Parameter sortBy :
:
https://www.tib.eu/sru/tibkat?query=laser sortBy date/sort.descending
Beispiele mit dem Parameter sortKeys:
https://www.tib.eu/sru/tibkat?query=laser&sortKeys=date,dc,0
Suche nach 'isbn:1*' mit der Sortierung aufsteigend nach Erscheinungsjahr
https://www.tib.eu/sru/tibkat?queryType=solr&query=isbn:1*&sortKeys=date,dc,0
Suche nach 'isbn:1*' mit der Sortierung aufsteigend nach Titel
https://www.tib.eu/sru/tibkat?queryType=solr&query=isbn:1*&sortKeys=title,dc,0
Suche nach 'mama oder papa' mit dem queryType=searchTerms und der Sortierung aufsteigend nach Titel
https://www.tib.eu/sru/tibkat?queryType=searchTerms=mama%20papa&sortKeys=title,dc,0
Faceted Search ist Neues in SRU 2.0.
SRU 2.0 kann die faceted Ergebnisse für eine Abfrage anbieten: wie die Suchergebnisse über verschiedene Kategorien verteilt werden.
SRU-Schnittstelle von TIB bietet ein faceted Analyse für folgenden Kategorien: creator, license, issued, format und genreCode.
Parameter facetLimit bestimmt eine minimale Anzahl der Suchtreffer. Man kann eine Grenze pro Feldbasis und/oder eine globale Grenze angeben, die für alle Felder gilt.
Besondere Werte für facetLimit:
Zum Beispiel:
1. facetLimit=100
legt die Grenze zu 100 für jedes Feld fest.
2. facetLimit=100:creator
die Grenze 100 nur für creator ist; keine faceted Analyse für anderes Feld
3. The combination: facetLimit=10,100:creator
die Grenze 100 nur für creator ist und die Grenze 10 für alle Felder
4. The combination: facetLimit=10,100:creator,200:license
die Grenze 100 für creator; 200 - für license und 10 für alle andere Felder
5. The combination: facetLimit=100:license,200:issued
die Grenze 100 für license ; 200 - für issued; keine faceted Analyse für anderes Feld
6. The combination:facetLimit= -1,100: format
die Grenze 100 für format und unlimited für alle andere Felder
7. facetLimit=0
keine faceted Analyse
https://www.tib.eu/sru/tibkat?queryType=searchTerms=mama%20papa&facetLimit=100
https://www.tib.eu/sru/tibkat?queryType=searchTerms=mama&facetLimit=-1,5:creator
https://www.tib.eu/sru/tibkat?queryType=solr&query=isbn:2*&facetLimit=10:license
Beispielanfrage:
Version 2.0
https://www.tib.eu/sru/tibkat?query=title=solid&startRecord=1&maximumRecords=5&recordSchema=marcxml
URL | Erklärung |
---|---|
Anfrage an den SRU-Server der TIB (nur für interne Butzer) | |
?version=1.2 ? | Angabe der SRU-Version: Version 1.2 /1.1 Version 2.0 |
&operation=searchRetrieve - ----- - | Befehl an den Server Version 2.0 |
&queryType | cql (Default), solr, searchTerms nur bei Version 2.0 |
&query= | Anfrage formulieren |
&startRecord=1 | Erster darzustellender Eintrag der Ergebnisliste |
&maximumRecords=5 | Maximale Anzahl den Datensätzen pro Anfrage |
&recordSchema=marcxml | Gewünschtes Format der SRU-Antwort |
Folgende Formate werden extern angeboten:
Format | Name in SRU-Anfrage |
---|---|
marcxml | |
Datacite | datacite |
Dublin core | dc |
Dublin Core Extension | dcx |
Oai Dublin Core | oai_dc |
BibTeX | bibtex |
Research Information System Format | ris |
Text DE | text_de |
Text EN | text_en |
rdf_xml | |
RDF/Turtle | rdf_turtle |
RDF/N3 | rdf_n3 |
RDF/Json | rdf_json |
JSON-based Serialization for Linked Data | json_ld |
Der Link zur Vollanzeige des Datensatzes in Tib Portal wird mit dieser Regel gebaut:
https://www.tib.eu/de/suchen/id/<FTX-ID>
Zum Beispiel: Für Datensatz mit der FTX-ID = TIBKAT:506054543
https://www.tib.eu/de/suchen/id/TIBKAT:506054543/
oder
https://www.tib.eu/de/suchen/id/TIBKAT%3A506054543/
Der Datensatz im Marcxml-Format enthält diesen Link im Feld 500 (subfield code="a"):
<datafield ind1=" " ind2=" " tag="500"> <subfield code="a">https://www.tib.eu/de/suchen/id/TIBKAT%3A506054543/</subfield> </datafield> |