Thesauri toepassen in SPARQL

Thesauri toepassen in SPARQL

In menig SPARQL endpoint wordt data verrijkt en geharmoniseerd via thesauri. Met deze eenvoudige voorbeelden leer je snel linked data die je nodig hebt uit zowel thesauri als andere bronnen op te halen.

 

Mogelijke toepassingen

Data die gegenereerd kan worden met thesauri leveren veelal extra classificaties of tags over specifieke objecten op. Zo kan je via thesauri berekenen hoeveel romans er in Nederland zijn, maar ook hoeveel van deze romans ‘oorspronkelijk Nederlands’ zijn.

 

Hoe te gebruiken

Bij de meeste ‘werken’ uit het SbPARQL endpoint van de Koninklijke Bibliotheek worden de thesauri al toegepast, zonder dat je het eigenlijk doorhebt. Zo is er per boek niet een naam van de auteur, maar is er een link naar de auteur. Deze link zal naar een ‘pagina’  uit De Nederlandse Thesaurus van Auteursnamen (NTA) of de KB Corporatiethesaurus wijzen. Om dan ook of de naam van de auteur op te halen, dan wel de naam van de corporatieve auteurs, is het een kwestie van die relaties ook te leggen via een OPTIONAL statements (html query) .

prefix schema: <http://schema.org/>
 prefix rdf: <http://www.w3.obrg/1999/02/22-rdf-syntax-ns#>
 SELECT * WHERE {
 $id rdf:type schema:Book . $id schema:author $author .
 OPTIONAL {
 $author rdf:type schema:Organization .
 $author schema:name $org . }
 OPTIONAL {
 $author rdf:type schema:Person .
 $author schema:name $authorname }
 OPTIONAL {
 $id schema:name $title . }
 } LIMIT 10 OFFSET 0

Merk op dat de LIMIT inmiddels naar 10 is gezet, want de query wordt iets ingewikkelder en daarmee ontzien we het SPARQL endpoint enigszins. Het koppelen van ‘relaties’  vanuit de NTA thesaurus kan natuurlijk ook voor onderwerp classificaties, zie het volgende statement (html query):

prefix schema: <http://schema.org/>
 prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 SELECT * WHERE {
 $id rdf:type schema:Book . $id schema:author $author .
 OPTIONAL { $id schema:about $about . }
 OPTIONAL { $id schema:name $title . }
 } LIMIT 10 OFFSET 0

Nu ontstaat er echter een probleem (dat wellicht ook optreedt indien een boek meerdere auteurs heeft), namelijk dat een werk meerdere classificaties kan hebben. Zo is het werk p036095907 gekoppeld aan privaatrecht en reclame op basis van de Brinkman thesaurus. Hierdoor wordt dit boek in het overzicht meerdere keren vermeld. Zorg bij je import van data dat je dus multi-values kan verwerken door meerdere rijen voor een record toe te laten. Thesauri zijn in SPARQL niet enkel uniforme waarden, maar kunnen ook georganiseerde concepten zijn. Naast de classificatie ‘privaatrecht’  kan er nog een ‘generiekere classificatie’ ‘recht’  afgeleidt worden (html query).

prefix schema: <http://schema.org/>
 prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 prefix skos: <http://www.w3.org/2004/02/skos/core#>
 SELECT * WHERE {
 $id rdf:type schema:Book .
 OPTIONAL { $id schema:about $about . $about rdfs:label $aboutlabel}
 OPTIONAL { $about skos:broader $broad . $broad rdfs:label $broadlabel}
 OPTIONAL { $id schema:name $title . }
 } LIMIT 10 OFFSET 0

Van een classificatie kan je zien uit welk systeem (KB, Brinkman, GTT ) het komt door te kijken naar de relatie 

select DISTINCT $o WHERE {
$s skos:inScheme $o
}

 

Back to site top