B3Kat Sparql-Guide


SPARQL ist eine mächtige Anfragesprache für RDF-Daten. Sie können mit dieser Sprache Abfragen in useren Daten durchführen; dazu stellen wir Ihnen den B3Kat SPARQL-Endpoint zur Verfügung. Es gibt auch ein Html-Formular zur Eingabe einer Query.

Wir möchten Ihnen hier einige Beispiel-Queries vorstellen, wie Sie nach bestimmten Informationen suchen können. Unsere Beispiele richten sich vor allem an User, die schon etwas technisches und bibliothekarisches Wissen mitbringen. Um SPARQL zu lernen empfehlen wir Ihnen Tutorials wie das des Jena-Projektes: http://jena.apache.org/tutorials/sparql.html/.

SPARQL Service Description: Auffinden verwendbarer Prädikate und deren Häufigkeit

Bevor ein SPARQL-Endpoint sinnvoll eingebunden werden kann, benötigen Sie zunächst eine Liste der verwendeten Prädikate und deren Häufigkeiten. Da Abfragen zur Ermittlung der Zahlen sehr lange dauern, sammelt der Triplestore diese Information schon beim Laden des Datensets automatisch und gibt sie zurück, wenn der SPARQL-Endpoint ohne Query aufgerufen wird:

http://lod.b3kat.de/sparql

Die Response wird im Format RDF/XML ausgegeben, damit sie auch von Maschinen verwendbar ist. Es kann deshalb sein, dass Ihr Browser keine XML-Ansicht darstellt, sondern die Datei als Download auf Ihrer Festplatte speichert. Sie können die Datei dann in Ihrem Download-Ordner finden, und ggf. als Datei in Ihrem Browser öffnen.

Suche nach Titeln zu einer SWD/GND-Nummer

Selbstverständlich finden Sie auch bei uns Literatur zum Thema SPARQL:

PREFIX  dct:<http://purl.org/dc/terms/>

SELECT * WHERE {
    ?titleUri dct:subject <http://d-nb.info/gnd/7693644-2>
    } LIMIT 50
(Query-Ergebnis als Html anzeigen)

Hier wird nach allen Titeln im B3Kat gesucht haben, die das Thema (Schlagwort) "SPARQL" (http://d-nb.info/gnd/7693644-2) haben. So können Sie auch nach jedem anderen Schlagwort aus der Gemeinsamen Normdatei suchen.

Und hier etwas Literatur zum Thema "Schlagwortnormdatei", die diesen Recherchen zugrunde liegt:

PREFIX  dct:<http://purl.org/dc/terms/>

SELECT * WHERE {
    ?titleUri dct:subject <http://d-nb.info/gnd/4236472-3>
    } LIMIT 50
(Query-Ergebnis als Html anzeigen)

Suche nach Bibliotheken im B3Kat, die ein bestimmtes Medium besitzen

Wenn Sie eine bestimmte Katalognummer haben (die BV-Nummer mit der die Titel-URIs gebildet werden), und herausfinden möchten welche Bibliotheken diesen Titel besitzen:

PREFIX  frbr:<http://purl.org/vocab/frbr/core#>

SELECT ?bibUri WHERE {
    <http://lod.b3kat.de/title/BV000023771> frbr:exemplar ?ExUri.
    ?ExUri frbr:owner ?bibUri.
} LIMIT 50
(Query-Ergebnis als Html anzeigen)

Sie können natürlich das erste und zweite Beispiel kombinieren; also alle Bibliotheken suchen, die Titel zum Thema 'SPARQL' anbieten:

SELECT ?bibUri WHERE {
    ?titleUri dc:subject <http://d-nb.info/gnd/7693644-2> .
    ?titleUri frbr:exemplar ?exemplarUri .
    ?exemplarUri frbr:owner ?bibUri
} LIMIT 50
(Query-Ergebnis als Html anzeigen)

Schließlich können Sie sich auch alle 'Zwischenergebnisse' anzeigen lassen; also alle gefundenen Werte für die in der Query verwendeten Variablen. Dazu fragen Sie im 'SELECT'-Teil der Query nicht nach einer bestimmten Variable, sondern nach dem Stern (*):

PREFIX  dct:<http://purl.org/dc/terms/>
PREFIX  frbr:<http://purl.org/vocab/frbr/core#>
PREFIX  foaf:<http://xmlns.com/foaf/0.1/>

SELECT DISTINCT ?bibUri ?bibName WHERE {
    ?titleUri dct:subject <http://d-nb.info/gnd/7693644-2> .
    ?titleUri frbr:exemplar ?exemplarUri .
    ?exemplarUri frbr:owner ?bibUri
    OPTIONAL {
        ?bibUri foaf:name ?bibName
    }
} LIMIT 50
(Query-Ergebnis als Html anzeigen)

Beachten Sie bei dieser Query bitte auch, dass hier die maximale Zahl der zurückgegebenen Zeilen hochgesetzt werden muß, damit die Trefferliste nicht bei 50 Treffern abgeschnitten wird: LIMIT 200.

Das Kleingedruckte: Maximal 30 Sekunden pro Query

Der SPARQL-Endpoint versucht maximal 30 Sekunden lang, Ihre Query zu beantworten. Danach wird die Query mit einer Fehlermeldung abgebrochen. Das stellt sicher, dass nicht eine Query die Rechner lahmlegt, und sonst niemand mehr zugreifen kann. Wenn Sie eine große Treffermenge abfragen möchten, blättern Sie bitte durch die Treffermenge mit LIMIT und OFFSET. Hier ist ein kleines Beispiel zur Demonstration:

PREFIX  dct:<http://purl.org/dc/terms/>
PREFIX  frbr:<http://purl.org/vocab/frbr/core#>
PREFIX  foaf:<http://xmlns.com/foaf/0.1/>

SELECT DISTINCT ?bibUri ?bibName WHERE {
    ?titleUri dct:subject <http://d-nb.info/gnd/7693644-2> .
    ?titleUri frbr:exemplar ?exemplarUri .
    ?exemplarUri frbr:owner ?bibUri
    OPTIONAL {
        ?bibUri foaf:name ?bibName
    }
} LIMIT 5 OFFSET 5

Sollte das nicht weiterhelfen, empfehlen wir Ihnen einen Download der gesamten Daten als RDF/Turtle (ca. 8GB). Das Turtle-Format erlaubt auch die zeilenweise Verarbeitung z.B. mit zcat und grep. So können Sie die Daten auch ohne eigenen Triplestore rudimentär verarbeiten.