Linked Open Data

Gent stelt sommige open datasets beschikbaar als linked open data. Dit is een manier om gegevens zodanig te structureren dat zij eenvoudig met elkaar in verband kunnen worden gebracht (gelinkt). Voor linked open data is het doel van de Stad Gent om deze data waar mogelijk te linken aan externe bronnen, maar een groot voordeel is dat het ook zeer eenvoudig is om te linken naar onze data. Bij de start lag de focus op datasets gerelateerd aan de stad.gent-website en taxonomieën die door de stad worden gebruikt, de datasets die beschikbaar zijn gaan echter verder dan dat. De Stad Gent biedt een aantal controlled vocabularies aan. Dit zijn thesauri die een gecontrolleerde lijst van mogelijke waarden definiëren voor gebruik door de Stad Gent. Voor linked open data houdt de Stad Gent zich aan de volgende principes:

  1. We gebruiken URIs om objecten uniek te identificeren en deze URIs zijn opvraagbaar via het web.
  2. De dataset zelf is beschikbaar als RDF dump en bevraagbaar via het SPARQL endpoint van de Stad Gent.
  3. Wanneer u een URI uit een dataset opvraagt, wordt de informatie van dat object aangeboden.
  4. Waar mogelijk linken we naar andere relevante data die volgens dezelfde principes beschikbaar is.
  5. We maken zoveel mogelijk gebruik van bestaande vocabularia.

Wat is RDF?

Linked open data wordt uitgedrukt in het Resource Description Framework (afgekort RDF). Om snel aan de slag te kunnen moet u een basiskennis van RDF hebben, gelukkig is RDF helemaal niet moeilijk. In RDF wordt alle data uitgedrukt in triples, dit is een wiskundige term voor de volgende combinatie: (onderwerp, eigenschap, waarde) in het Nederlands of (subject-predicate-object) in het Engels.

Het onderwerp en de eigenschap zijn altijd URIs. De waarde kan een URI zijn (het is dan ook een onderwerp op zich) of een literal. Een literal is een data veld: een string, datum, integer enz.

korte illustratie hoe feiten worden uitgedrukt als triples

Dat lijkt misschien wat omslachtig, maar triples zijn heel krachtig in hun eenvoud. Zo is het heel makkelijk om extra data aan 1 onderwerp toe te voegen zonder daarvoor wijzigen aan te brengen in de andere onderwerpen. Waar triples echt in uitblinken is het uitdrukken van relaties. Een relatie tussen twee onderwerpen vergt immers maar 1 triple. Het blijkt dan ook het formaat bij uitstek voor gelinkte data.

Vocabularia

In RDF wordt gebruik gemaakt van vocabularia om data te beschrijven. Deze vocabularia bevatten de nodige woordenschat om eigenschappen, relaties en types (klassen) te beschrijven. Deze vormen een verzameling URIs die kan hergebruikt worden. In onze linked open data proberen we zoveel mogelijk gebruik te maken van bestaande vocabularia. Dit heeft als bijkomend voordeel dat we bestaande open source software kunnen gebruiken om met de data aan de slag te gaan en dat we ze makkelijker kunnen integreren met andere datasets. In het voorbeeldje hierboven maken we bijvoorbeeld gebruik van het "Friend Of A Friend" (Nederlands) vocabularium. Andere veel gebruikte vocabularia zijn SKOS, schema.org en dublin core. In de documentatie vindt u voor elke dataset welke relaties, attributen en klassen worden gebruikt.

Serializaties

RDF data kan in verschillende formaten worden weggeschreven, het handige is dat we elk van deze formaten kunnen omzetten naar de andere. Vaak gebruikte formaten zijn XML, JSON en Turtle.

De data gebruiken

We kunnen linked data op verschillende manieren gebruiken. Heeft u alle data uit een dataset nodig, dan is het aangeraden om een data dump te downloaden en verwerken. Wil u linken naar enkele objecten binnen de datasets, dan is het voldoende om dat te doen. Daarnaast kan u de datasets ook bevragen via SPARQL, een query taal die toelaat om de verbanden in de data te exploreren en zeer complexe vragen te stellen.

Werken met een data dump

Elke linked open dataset wordt aangeboden als data dump. Dit is een RDF serializatie die u kan downloaden via dit portaal, afhankelijk van de dataset is deze beschikbaar in XML of JSON. Indien u de hele dataset nodig heeft, veel queries moet doen of zware verwerking plant, raden we aan om gebruik te maken van de data dump.

Om de dump om te zetten naar een voorkeurformaat kan u gebruik maken van rapper (standalone) of RDF libraries zoals rdf.js (javascript), easyRDF (PHP), rdf4j (java) en ruby-rdf (ruby).

Werken met het SPARQL endpoint

Gent biedt een SPARQL endpoint aan waar u alle linked open data kan bevragen. SPARQL is een protocol- en querytaal voor RDF databases, de SQL van linked data.

De database bestaat dus uit een set "onderwerp, eigenschap, waarde" of in het Engels "subject-predicate-object"-triples en in SPARQL kan u een selectie uit de database opvragen. Een goed startpunt om SPARQL te leren is SPARQL in 11 minutes. Voor elke dataset voorzien we ook enkele voorbeeld queries.

Het SPARQL endpoint van Gent is bedoeld voor onderzoek en heeft bepaalde beperkingen om misbruik tegen te gaan. Zo kan u niet meer dan 1000 resultaten krijgen en mag een query maximum 30 seconden duren. Indien u een applicatie wilt bouwen op onze linked data, vragen we om even contact met ons op te nemen om de beste oplossing uit te werken. Voor intensief gebruik raden we aan om een dump te downloaden en een eigen database op te zetten.

Linken naar specifieke objecten/dingen.

Indien u reeds weet welke objecten u wil gebruiken in uw applicatie, kan u deze ook rechtstreeks opvragen. Indien u 1 van onze URIs opvraagt, kan u op basis van de HTTP Accept header uw geprefereerde outputformaat opgeven.

De URI voor parking Reep is bijvoorbeeld http://stad.gent/id/parking/P2. U kan deze opvragen met uw browser en dan komt u op de webpagina over deze parking terecht. Geeft u als Accept header application/ld+json, text/turtle of application/rdf+xml op, dan krijgt u de onderliggende data terug. Om dit uit te proberen kan u gebruik maken van een REST Client zoals postman.

voorbeeld postman request