Tutorial: Introductie Kadaster Knowledge Graph

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."
flowchart LR gebouw(gebouw 0200100000085932) -- bouwjaar --> 2006 gebouw -- type --> Gebouw click gebouw "https://data.kkg.kadaster.nl/id/gebouw/0200100000085932" "Ga naar gebouw 0200100000085932." click Gebouw "https://data.kkg.kadaster.nl/sor/model/def/Gebouw" "Ga naar de definitie van 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.

Later zullen we in de SPARQL tutorial meer uitleg geven over hoe je zelf bevragingen in SPARQL kunt schrijven en aanpassen. Maar eerst gaan we in de volgende tutorial in meer detail naar het data model van de Kadaster Knowledge Graph kijken.

Volgende tutorial: Verken het data model