e

Onderwijs materiaal

edu
Created on Jun 26th, 2022
Members

Tutorial: SPARQL bevragingstaal

Created 3 months ago

Introductie

In dit onderdeel van de tutorial maken we je wegwijs in de SPARQL bevragingstaal. Hiermee kun je snel je eerste queries uitvoeren.

Overzicht

Deze tutorial is de derde in een reeks, bestaande uit de volgende delen:

  1. Introductie Kadaster Knowledge Graph
  2. Verken het data model
  3. SPARQL bevragingstaal ← je bent nu hier

Doel van deze module

Na deze module kun je aan je collega's uitleggen:

  • Hoe je een SPARQL bevraging kunt uitvoeren.
  • Hoe je een SPARQL bevraging kunt aanpassen.
  • Hoe je een SPARQL bevraging kunt opbouwen.

Voordat je begint

Gedurende deze module zullen we verschillende queries uitoefenen met SPARQL op de Kadaster Knowledge Graph. Om deze query te versturen gebruiken we het SPARQL API endpoint van de KKG: link. De queries die als voorbeeld op deze pagina zijn opgenomen zijn in te zien en aan te passen door op de "Try this query yourself" link te klikken.

I. Wat is SPARQL?

Sorry, your browser does not support embedded videos.
Je kunt dit deel van de tutorial ook als video bekijken.

SPARQL is de standaard taal voor het bevragen van Resource Description Framework (RDF) data. De standaard wordt beheerd door het W3C en is een onmisbaar onderdeel van Linked Data. Voor een volledige overzicht in de volledige SPARQL query language raden we de gebruiker aan die standaard dan ook eens rustig door te lezen. In deze tutorial leren we je echter de basis waarmee je je eerste selectie en combinatie vraag kan stellen aan de Kadaster datasets.

Laten we met een simpele query beginnen. We willen graag iedere triple opvragen die de waarde "Apeldoorn" als literal bevat. Omdat dit een Nederlandse string is, dienen we aan het einde van deze string een language tag mee te geven (@nl).

select ?subject ?predikaat {
  ?subject ?predikaat 'Apeldoorn'@nl.
}
limit 10

Verken het data model

Created 3 months ago

Introductie

In deze tutorial helpen we je om te kunnen exploreren door het data model van een gegeven dataset. Op deze manier kun je inzicht verkrijgen in de beschikbare data en de potentiële vragen die je met deze dataset zou kunnen exploreren.

Overzicht

Deze tutorial is de tweede in een reeks, bestaande uit de volgende delen:

  1. Introductie Kadaster Knowledge Graph
  2. Verken het data model ← je bent nu hier
  3. SPARQL bevragingstaal

Doel van deze module

Na deze module kun je aan je collega's uitleggen:

  • Hoe je het data model van een dataset kunt exploreren.
  • Hoe je de functionaliteit van een triple store gebruikt om inzichten in een dataset te krijgen.

Alle facetten van een dataset op één plek

Op de Kadaster developer pagina vindt je een overzicht van alle datasets die het Kadaster met linked data beschikbaar stelt. Daar vindt je per dataset verwijzingen conform Figuur 1.

Figuur 1. Overzicht van de Kadaster linked dataset met nuttige link voor ontwikkelaars.

Merk op dat voor iedere dataset de volgende verwijzingen zijn opgenomen:

  1. Een verwijzing naar de landing page van de dataset in de triple store. Hier vindt je metadata en changelogs voor de betreffende dataset.
  2. Een verwijzing naar het SPARQL endpoint waar een ontwikkelaar vragen over de data kan stellen.
  3. Een verwijzing naar de use cases die gebruik maken van deze dataset. Deze use cases geven een goede indruk van wat mogelijk is met de data.
  4. Een visueel overzicht van het data model van de dataset.

Voor de Kadaster Knowledge Graph lopen we door deze 4 opties heen.

Tutorial: Introductie Kadaster Knowledge Graph

Created 3 months ago

Introductie

Deze tutorial begeleidt je door het eerste gebruik van Linked Data en de Kadaster Knowledge Graph (KKG). In deze tutorial nemen we je mee in de basisvaardigheden rondom Linked Data en de SPARQL bevragingstaal. Daarna laten we zien hoe je zelf de Kadaster Knowledge Graph kunt gebruiken, en welke gereedschappen je daarbij tot jouw beschikking hebt.

In deze introductie behandelen we de volgende onderdelen:

  • Wat is Linked Data?
  • Hoe krijg je inzicht in het data model van een Linked Dataset?
  • Hoe gebruik je de bevragingstaal SPARQL?
  • Wat is de Kadaster Knowledge Graph en hoe kun je die gebruiken?
  • Hoe kun je jouw eigen gegevens combineren met gegevens uit de Kadaster Knowledge Graph?

Voorkennis

Deze tutorial gaat uit van de volgende voorkennis:

  • Je hebt vaker gewerkt met data en data modellen.
  • Je bent bekend met het bevragen van data in web-gebaseerde APIs (bijvoorbeeld REST-APIs).

Overzicht

Deze tutorial is de eerste in een reeks, bestaande uit de volgende delen:

  1. Introductie Kadaster Knowledge Graph ← je bent nu hier

  2. Verken het data model

  3. De SPARQL bevragingstaal

  4. Gebruik eigen programmeertaal

Doel van deze module

Na deze module kun je aan je collega's uitleggen:

  • Wat is Linked Data?
  • Wat is het verschil is tussen nodes, verbinden en uitspraken?
  • Wat is SPARQL?

Wat is Linked Data?

In 2006 werd de term Linked Data als eerst geopperd door Tim Berners-Lee, door velen bekend als de bedenker van het internet. De termen Linked Data en Semantisch Web zijn onlosmakelijk met elkaar verbonden. In deze tutorial zullen we voornamelijk de term Linked Data toepassen.

Linked Data heeft de volgende kernprincipes:

  • Gegevens wordt opgeslagen in een graaf structuur. Hierdoor zijn nieuwe gegevens arbitrair koppelbaar.
  • De nodes en verbinding in de graaf worden beiden aangeduid met web adressen. Dit zijn dezelfde adressen die ook gebruikt worden om pagina's op het web mee aan te duiden. Denk maar aan de adresbalk in jouw web browser waarmee je deze tutorial bezoekt.
  • Voor het persisteren van de graaf structuur wordt de RDF standaard gebruikt. Deze standaard schrijft voor dat de graaf structuur op een eenduidige manier wordt vastgelegd zodat uitwisseling met anderen mogelijk wordt.
  • Ten slotte zijn zoveel mogelijk aspecten van de Linked Data graaf vastgelegd in internationale en nationale open standaarden. Door deze standaardisatie is het mogelijk om een data graaf in Linked Data uit te wisselen met anderen.

Uitspraken

We zagen dat in Linked Data gegevens worden opgeslagen in een graaf, en dat deze graaf wordt vastgelegd volgens open standaarden.

De volgende figuur toont een simpele Linked Data graaf. Deze bevat 3 nodes ("gebouw 0200100000085932", "2006" en "Gebouw") en 2 verbindingen ("bouwjaar" en "type"). We behandelen deze 3 nodes een voor een:

  1. Node "gebouw 0200100000085932" duidt een specifiek gebouw in Nederland aan. Deze node heeft een uniek web adres en is daarom aanklikbaar in de afbeelding.
  2. Node "2006" duidt het jaartal 2006 aan. Deze node heeft geen uniek adres en is daarom niet aanklikbaar in de afbeelding.
  3. Node "Gebouw" duidt de definitie van een gebouw aan. Deze node heeft een uniek web adres en is daarom aanklikbaar in de afbeelding.

Een verbinding maakt altijd gebruik van 2 nodes. Een verbinding met 2 nodes legt een betekenisvolle uitspraak vast. De afbeelding bevat de volgende 2 uitspraken:

  1. "Dit specifieke gebouw met codering 0200100000085932 heeft als bouwjaar het jaartal 2006."
  2. "Dit specifieke gebouw met codering 0200100000085932 is een gebouw."

Omdat een uitspraak in linked data uit 3 componenten bestaat (1 verbinding tussen 2 nodes) spreken we over een 'triple'. Bovenstaande afbeelding laat 2 triples zien, maar de Kadaster Knowledge Graph bevat miljarden van dergelijke triples. Merk op dat het principe, de 'triple', op zichzelf heel eenvoudig is. Daarnaast biedt het principe van de 'triple' een grote mate van openheid: het is altijd mogelijk om een nieuwe verbinding toe te voegen wanneer meer informatie bekend wordt.

International Resource Identifiers (IRIs)

We zagen dat 2 van de 3 nodes in de bovenstaande afbeelding aanklikbaar zijn. De 2 nodes die aanklikbaar zijn maken gebruik van web adressen. Wanneer het web adres wordt opgevraagd worden de gegevens van het door dat web adres aangeduide gegeven opgehaald. Je kunt dit eenvoudig testen door op de node "gebouw 0200100000085932" te klikken. Je zult zien dat jouw web browser vervolgens de gegevens over dat specifieke gebouw gaat ophalen en toont.

Afbeelding 2. Screenshot van het opzoeken van de IRI voor een specifiek gebouw.

Het is een fundamentele eigenschap van linked data dat de naam van een data element ook de locatie op het Internet is waar de directe gegevens over dat data element kunnen worden opgehaald. In linked data kun je vaak opzoeken wat iets betekent door er op te klikken.

Merk ten slotte op dat er 1 node was die niet aanklikbaar was: het jaartal 2006. Voor tekstuele inhoud en numeric waardes wordt meestal geen gebruik gemaakt van web adressen. De technische term voor dit soort linked data termen is 'literals'.

Objecten, Attributen & Definities

In linked data wordt een onderscheid gemaakt tussen instantiegegevens en definities (soms ook 'schema' genoemd).

Instantiegegevens duiden specifieke objecten of entiteiten aan. We geven 2 voorbeeld van instanties die in de Kadaster Knowledge Graph voorkomen:

  1. De specifieke woonplaats Appingedam.
  2. De specifieke openbare ruimte met code 0003300000117021.

De definities beschrijven het data model waar de instantiegegevens aan voldoen. Er zijn twee soorten definities: eigenschappen en klassen.

Eigenschappen duiden de betekenis van verbindingen tussen nodes aan. We geven 2 voorbeelden van eigenschappen die in de Kadaster Knowledge Graph gebruikt worden:

  1. De eigenschap "bouwjaar" wordt aangeduid met de IRI sor:oorspronkelijkBouwjaar. Deze eigenschap wordt als onderdeel van de Kadaster Knowledge Graph gedefinieerd. Als je wil weten wat deze eigenschap precies inhoud kun je dit web adres bezoeken in een web browser.
  2. De eigenschap "is een" wordt aangeduid met de IRI rdf:type. Deze eigenschap maakt onderdeel van de RDF standaard uit. Dit is een voorbeeld van een bestaande eigenschap die binnen de Kadaster Knowledge Graph wordt hergebruikt. Een belangrijke functionaliteit van linked data is dat het eenvoudig is om bestaande definities van andere te hergebruiken.

Ten slotte zijn er klassen. Deze worden gebruikt om generieke kennis vast te leggen. Ieder instantiegegeven behoort to een of meerdere klassen. De klasse of klassen duiden aan wat voor soort gegeven een instantiegegeven is. In bovenstaande afbeelding duidde de node "Gebouw" een klasse aan. Deze klasse heeft IRI sor:Gebouw en legt vast wat het betekent om een gebouw te zijn conform de definitie die de Nederlandse overheid daarvoor hanteert.

Wat is SPARQL?

SPARQL is de standaard bevragingstaal waarmee een linked dataset bevraagd kan worden. Voor gebruikers met een technische achtergrond kan het helpen om te weten dat SPARQL als bevragingstaal voor linked data vergelijkbaar is met de bekende SQL bevragingstaal voor relationele database systemen. Net als met SQL is een ontwikkelaar in staat om met SPARQL ingewikkelde vragen te stellen en antwoorden te ontvangen. Het web adres waar SPARQL over de Kadaster Knowledge Graph kan worden uitgevoerd is: https://data.kkg.kadaster.nl/sparql

Afbeelding 3. Screenshot van de web pagina waar SPARQL vragen aan de Kadaster Knowledge Graph gesteld kunnen worden.

Als je naar het web adres voor SPARQL gaat kun je al meteen een aantal voorbeeld bevragingen uitvoeren door op de bijbehorende tabs te klikken. Bevragingen worden live uitgevoerd door op de 'play' knop (bovenaan rechts) te klikken.