Skip to content

mightymax/rdf-course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linked Data met TypeScript - Cursus Skeleton

Dit project is een startpunt voor een hands-on training voor software developers die met Linked Data, RDF, SPARQL en SHACL willen werken in TypeScript.

1. Wat is Linked Data?

Linked Data is een manier om data op het web te publiceren en te koppelen zodat datasets van verschillende bronnen elkaar kunnen versterken.

De vier klassieke principes van Tim Berners-Lee:

  1. Gebruik URI's als identifiers voor dingen.
  2. Gebruik HTTP URI's zodat mensen/machines ze kunnen opvragen.
  3. Lever bruikbare standaardinformatie terug (RDF, SPARQL).
  4. Link naar andere URI's om extra context te bieden.

Praktisch betekent dit: je modelleert data als een graaf, met expliciete relaties tussen resources, in plaats van alleen losse tabellen of JSON-documenten.

2. Wat is RDF?

RDF (Resource Description Framework) is het datamodel achter Linked Data.

De kern bestaat uit triples:

  • Subject: het ding waarover je iets zegt
  • Predicate: de eigenschap/relatie
  • Object: de waarde of verwijzing naar een ander ding

Voorbeelden:

  • <https://example.org/alice> <http://xmlns.com/foaf/0.1/name> "Alice"
  • <https://example.org/alice> <https://example.org/knows> <https://example.org/bob>

Als je triples samenneemt, krijg je een graaf.

3. RDF serialisaties

RDF kun je op meerdere manieren serialiseren:

  • Turtle (.ttl): compact en leesbaar voor mensen
  • JSON-LD (.jsonld): JSON-vorm, geschikt voor web/API's
  • N-Triples (.nt): line-based, simpel en strikt
  • N-Quads (.nq): zoals N-Triples, maar met graph/context
  • RDF/XML (.rdf / .xml): oudere XML-representatie

In deze cursus gebruiken we vooral Turtle en JSON-LD.

4. RDF, RDFS en OWL (kort)

  • RDF: basismodel voor statements (triples).
  • RDFS: voegt schema-concepten toe zoals rdfs:Class, rdfs:subClassOf, rdfs:label.
  • OWL: rijkere ontologie-taal voor formele constraints en inferentie (bijv. equivalentie, cardinaliteit, complexe klassen).

Vuistregel:

  • RDF = data beschrijven
  • RDFS = basale semantiek/schema
  • OWL = geavanceerde semantiek/logica

5. Wat is SHACL?

SHACL (Shapes Constraint Language) gebruik je om RDF-data te valideren tegen regels (shapes).

Voorbeelden van regels:

  • ex:Person moet minimaal 1 rdfs:label hebben
  • een property moet een datatype xsd:date hebben
  • een property mag maximaal 1 keer voorkomen

SHACL is vooral nuttig voor kwaliteitsbewaking in pipelines en data contracts tussen teams.

6. Wat is SPARQL?

SPARQL is de querytaal voor RDF, vergelijkbaar met SQL voor relationele data.

Je gebruikt het voor:

  • SELECT: data ophalen
  • CONSTRUCT: nieuwe RDF-grafen opbouwen
  • ASK: true/false vragen
  • DESCRIBE: beschrijvingen opvragen

SPARQL werkt op grafpatronen (triple patterns) met variabelen zoals ?s ?p ?o.

7. Linked Data in JS/TS

RDF/JS Data Model

Veel JS libraries volgen de RDF/JS specificatie.

Belangrijke concepten:

  • Term: basisinterface voor RDF-termen.
  • NamedNode: IRI node, bv. https://example.org/alice.
  • BlankNode: anonieme node zonder globale IRI.
  • Literal: waarde-node, eventueel met datatype/language.
  • DefaultGraph: de default graph.
  • Quad: (subject, predicate, object, graph), uitbreiding van triple.

In code werk je meestal met Quad objecten en stores/datasets.

RDF/JS Dataset

Een RDF/JS dataset is een set van quads met operaties zoals:

  • toevoegen/verwijderen van quads
  • filteren/matchen op patroon
  • itereren over resultaten

In dit skeleton gebruiken we de n3.Store als praktische RDF/JS-compatible dataset/store.

8. Projectstructuur

  • src/lib/loadRdf.ts: RDF uit textfiles inladen naar dataset/store
  • src/lib/datasetQueries.ts: basale dataset queries (matchen op predicate)
  • src/lib/sparql.ts: SPARQL via fetch en via Comunica
  • src/lib/shacl.ts: SHACL-validatie met shacl-engine
  • src/scripts/*.ts: losse trainingsscripts voor cursisten
  • data/: voorbeelddata en shapes

9. Installatie

npm install

10. Oefeningen / basisscripts

10.1 RDF van textfiles inladen

npm run run:load

Leerdoel:

  • meerdere serialisaties inlezen (.ttl, .jsonld)
  • quads verzamelen in één dataset/store

10.2 Dataset / Datastore bevragen (RDF/JS)

npm run run:dataset

Leerdoel:

  • quads inspecteren
  • pattern matching op predicate (rdfs:label)

10.3 SPARQL uitvoeren

npm run run:sparql

Leerdoel:

  • query via plain HTTP/fetch
  • query via Comunica query engine

10.4 SHACL validatie

npm run run:shacl

Leerdoel:

  • shapes laden
  • data valideren
  • rapport interpreteren

10.5 SHACL debugging met foutieve data

npm run run:shacl-debug

Leerdoel:

  • validatiefouten herkennen en duiden
  • foutieve data verbeteren op basis van SHACL feedback

10.6 Lokale SPARQL op RDF/JS store

npm run run:sparql-local

Leerdoel:

  • SPARQL draaien op een in-memory dataset
  • queryresultaten interpreteren zonder remote endpoint

11. Voorstel cursusopzet (dagdeel)

  1. Theorie (45 min)
    • Linked Data, RDF, serialisaties, RDFS/OWL, SHACL, SPARQL
  2. RDF/JS fundamentals (30 min)
    • Terms, Quads, Dataset API
  3. Hands-on deel 1 (45 min)
    • bestanden laden en dataset-querying
  4. Hands-on deel 2 (45 min)
    • SPARQL naar endpoint + eenvoudige lokale scenario's
  5. Hands-on deel 3 (30 min)
    • SHACL validatie en debugging van datakwaliteit
  6. Afsluiting (15 min)
    • vervolgstappen en production patterns

12. Vervolgideeën voor cursisten

  • Voeg een eigen vocab/namespace toe
  • Schrijf een CONSTRUCT query
  • Maak expres foutieve data en laat SHACL failures zien
  • Voeg named graphs toe en query per graph
  • Exporteer dataset naar Turtle of N-Quads

13. Opgaven + uitwerkingen

Zie docs/EXERCISES.md voor opdrachten met challenges en verwachte uitkomsten. Zie docs/SOLUTIONS.md voor voorbeeld-uitwerkingen.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors