5 Uitwerking
Dit hoofdstuk beschrijft hoe datalineage kan worden ingericht, met een focus op uitwisseling van gegevens tussen overheidsorganisaties op basis van linkeddata. Daarbij staat het gebruik van open standaarden zoals PROV, RDFS, Dublin Core, DCAT en MIM centraal. Aan de hand van een voorbeeld wordt een voorgestelde architectuur geschetst, die invulling geeft aan patronen 4, 6, 7 en 8 in hoofdstuk 4. Deze wordt verdiept tot op het niveau van voorbeelddefinities gebaseerd op PROV-O en andere linkeddata vocabulaires. Dit hoofdstuk veronderstelt dan ook kennis op het gebied van linkeddata.
5.1 Architectuurschets
De architectuur wordt geschetst aan de hand van een fictief voorbeeld, dat is gebaseerd op de Basisadministratie Adressen en Gebouwen (BAG). In het voorbeeld wordt er een informatieproduct geleverd dat op basis van het oorspronkelijk bouwjaar van een pand en de status van het pand, de leeftijd van het pand beschrijft. Figuur 6 geeft een overzicht van het voorbeeld.
Figuur 6: Informatieproduct gebaseerd op de BAG
Om de datalineage van dit informatieproduct te beschrijven zijn er allerlei metagegevens nodig. Figuur 7 geeft hiervan een overzicht op hoofdlijnen. Dat start met een beschrijving van de BAG en het informatieproduct als dataset in een catalogus (zoals bijvoorbeeld data.overheid.nl). Los daarvan is ten behoeve van de verticale datalineage een catalogus van informatie- en gegevensmodellen nodig. Conceptuele informatiemodellen beschrijven de betekenis van gegevens, in termen van objecttypes en attribuutsoorten. Ze kunnen verwijzen naar begrippen (niet weergegeven in figuur). Logische gegevensmodellen vertalen conceptuele informatiemodellen naar structuren die worden gebruikt bij de verwerking van gegevens (ook niet weergegeven in figuur).
Figuur 7: Schets van metagegevens en catalogi voor datalineage
Voor de fysieke datalineage is een beschrijving nodig van de gegevens die daadwerkelijk worden uitgewisseld en de activiteiten die zijn uitgevoerd. Deze metagegevens kunnen centraal of bij de leverancier van het informatieproduct worden beheerd. Ze kunnen zowel op typeniveau als op instantieniveau zijn gedefinieerd (in mogelijk verschillende repositories). De gegevens zijn beschreven in de vorm van gegevensclusters en gegevenselementen en hun onderlinge relaties. Zo is in het voorbeeld het gegevenselement leeftijd gerelateerd aan de gegevenselementen voor het oorspronkelijke bouwjaar en de status van het pand. Daarnaast is deze verbonden aan de attribuutsoorten in het gegevensmodel voor de verticale datalineage. In het voorbeeld is er een activiteit voor het berekenen van de leeftijd van een pand. Voor een afgeleide dataset, zoals het informatieproduct leeftijd, wordt verwezen naar deze activiteit. Bij de beschrijving van de activiteit zelf wordt aangegeven welke gegevensclusters worden of zijn gebruikt als invoergegevens en welke gegevensclusters onderdeel zijn van de uitvoergegevens.
In de volgende paragrafen worden delen van de metagegevens zoals geschetst in Figuur 7 uitgewerkt in formele definities in RDF, een standaard voor het beschrijven van linkeddata. De definities zijn niet compleet, en beschrijven alleen belangrijke aspecten. Elke paragraaf begint met een toelichting, gevolgd door een diagram en vervolgens door de formele definitie. In de formele definities zijn de zelfgedefinieerde namen (identifiers) dikgedrukt weergegeven. Deze namen worden ook in hetzelfde lettertype gerefereerd in de toelichting ervoor. Uitgangspunt voor de formele definities zijn de prefixes zoals beschreven in Tabel 9.
|
|
Tabel 9: Gehanteerde prefixes in voorbeelduitwerking
5.2 Datasets
De metagegevens over de datasets conformeren aan de DCAT standaard. De basis is de definitie van de dataset van de BAG, die wordt gebruikt voor de dataset van het informatieproduct. Dit informatieproduct gebruikt de eigenschap prov:wasGeneratedBy om te verwijzen naar de activiteit genererenLeeftijd20250415. Het is daarom ook een instantie van de klasse prov:Entity. De datalineage metagegevens worden ontsloten via een SPARQL endpoint, dat expliciet wordt gekoppeld aan het informatieproduct. In de PROV standaard zijn er ook andere manieren gedefinieerd om datalineage metagegevens te delen, zoals het gebruik van Provenance Query Services. Een directe link naar een SPARQL endpoint is echter een meer eenvoudige oplossing en heeft daarom de voorkeur.
Figuur 8: Diagram van datasets
|
|
Tabel 10: Metagegevens over datasets conform DCAT en PROV.
5.3 Informatie- en gegevensmodellen
Conceptuele informatiemodellen beschrijven de dingen die bestaan in de werkelijkheid en hun eigenschappen. De MIM standaard hanteert hiervoor objecttypen en attribuutsoorten. Een objecttype wordt in linkeddata gerepresenteerd als een Class in de OWL standaard. Bij het objecttype is ook een verwijzing opgenomen van het begrip middels de dcterms:subject eigenschap, conform de MIM standaard. Attribuutsoorten worden in OWL vertaald naar een DataTypeProperty. Voor elk objecttype op conceptueel niveau is er op logisch niveau een NodeShape conform de SHACL standaard, die de eigenschappen (property shapes) en beperkingsregels definieert voor de gegevens van de bijbehorende class. De property shapes van een NodeShape verwijzen naar hun bijbehorende attribuutsoorten ten behoeve van verticale datalineage. Merk op dat er op dit moment gewerkt wordt aan een nieuwe versie van de MIM standaard (versie 2.0) die ook impact kan hebben op deze voorbeelduitwerking.
Figuur 9: Diagram van informatie- en gegevensmodel BAG
|
|
Tabel 11: Metagegevens over het BAG gegevensmodel
Voor het informatieproduct is er ook een gegevensmodel nodig. Deze is heel simpel. Er is eigenlijk alleen een attribuutsoort voor de leeftijd. Hiervoor is wel een overkoepelend objecttype nodig, dat pandInformatieObjecttype is genoemd.
Figuur 10: Diagram van informatie- en gegevensmodel informatieproduct
|
|
Tabel 12: Metagegevens over het gegevensmodel van het informatieproduct
5.4 Activiteiten
De basis voor de definitie van de datalineage zelf is de definitie van de activiteit voor het berekenen van de leeftijd. Er wordt naar deze activiteit verwezen vanuit de dataset definitie van het informatieproduct. In het geval van datalineage op typeniveau wordt verwezen naar een generieke activiteit (type) waarin de soorten invoergegevens, uitvoergegevens en een verwijzing naar de transformatie zijn beschreven. In het geval van datalineage op instantieniveau wordt verwezen naar een activiteit met een specifiek start en/of eindmoment, die verwijst naar de generieke activiteit. In dit geval is er een specifieke activiteit die is uitgevoerd op 15 april 2025, die verwijst naar de generieke activiteit voor het genereren van leeftijd. Die generieke activiteit verwijst naar het cluster van gegevens over het pand dat het als invoer gebruikt en het cluster van gegevens van het informatieproduct dat het als uitvoer heeft. Hiermee is er een vorm van datalineage op tabelniveau (een tabel is een specifiek soort gegevenscluster). De beschrijving van de transformatie is vastgelegd als prov:Plan. Het beschrijft de afleidingsregels die de activiteit gebruikt in natuurlijke taal in een rdfs:comment eigenschap. De bijbehorende programmacode is vastgelegd in een dcterms:description eigenschap. Voor dit voorbeeld is dit voldoende. Het kan echter zijn dat de afleidingsregels veel complexer zijn en op een meer gedetailleerd niveau moeten worden vastgelegd. Dan zullen er meerdere activiteiten met hun regels aan elkaar gekoppeld worden. Er is voor gekozen om zowel de generieke activiteit (type) als uitgevoerde activiteit (instantie) als een prov:Activity te modelleren, zodat de eerste ook de standaard PROV eigenschappen kan gebruiken. Het nadeel hiervan is wel dat de relatie tussen deze twee activiteiten geen rdf:type kan zijn, en dus als een dcterms:type is gemodelleerd.
Figuur 11: Diagram van activiteiten
|
|
Tabel 13: Metagegevens over de activiteit voor het berekenen van de leeftijd
5.5 Gegevenselementen
De entiteiten die als invoergegevens en als uitvoergegevens worden gebruikt zijn onderverdeeld in gegevensclusters en gegevenselementen. Een gegevenselement is een kleinste eenheid van gegevens, zoals bijvoorbeeld leeftijd. Een gegevenscluster is een groepering van gegevenselementen, vergelijkbaar met een objecttype, maar dan op fysiek niveau. In het voorbeeld is er als tegenhanger van een objecttype voor een pand ook een gegevenscluster voor een pand. Gegevensclusters worden met een dcterms:isPartOf relatie gerelateerd aan de dataset waar ze bij horen. De relatie met de onderliggende gegevenselementen wordt gemodelleerd middels een prov:hadMember relatie. De relatie van het fysieke gegevenselement met het bovenliggende gegevensmodel wordt gelegd met een dcterms:type relatie. In het voorbeeld is aangegeven dat leeftijdGegevenselement de fysieke manifestatie is van bagPandLeeftijdPropertyShape.
Gegevensclusters en bijbehorende gegevenselementen kunnen veelal worden gegenereerd uit een logisch gegevensmodel en zijn onderdeel van een fysiek schema (zoals een databaseschema of een uitwisselschema). De relaties tussen gegevenselementen zoals beschreven middels prov:wasDerivedFrom kan worden geëxtraheerd uit programmacode (zoals SQL). Als datalineage op typeniveau wordt vastgelegd dan zullen de waarden ontbreken bij de gegevenselementen.
Figuur 12: Diagram van gegevensclusters en gegevenselementen
|
|
Tabel 14: Metagegevens over de invoer- en uitvoergegevens
5.6 Tonen van datalineage
Het is afhankelijk van de doelgroep op welke wijze datalineage metagegevens het best kunnen worden ontsloten. Als de gegevens als linkeddata in een triplestore zijn opgeslagen dan kan gebruik worden gemaakt van de SPARQL taal voor het bevragen en ontsluiten van de metagegevens. Tabel 15 geeft een voorbeeld van een dergelijke zoekvraag, die als resultaat heeft dat alle brongegevens die zijn gebruik voor het berekenen van de leeftijd worden getoond, inclusief de definitie zoals deze via de propertyshape uit de attribuutsoorten te halen zijn (zie Tabel 16). Het is bijvoorbeeld ook mogelijk om een SPARQL query te definiëren die een diagram genereert van de datalineage.
|
|
Tabel 15: Voorbeeld SPARQL query voor het bevragen van de datalineage metagegevens
| leeftijd | bronwaarde | bronnaam | definitie |
|---|---|---|---|
| 40 | 1985 | oorspronkelijkBouwjaar | De aanduiding van het jaar waarin een PAND oorspronkelijk als bouwkundig gereed is of wordt opgeleverd. |
| 40 | Pand in gebruik | pandStatus | De fase van de levenscyclus van een pand waarin het betreffende pand zich bevindt. |
Tabel 16: Zoekresultaat van voorbeeld SPARQL query
Volgende hoofdstuk: Hoofdstuk 5 - Profiel voor datalineage
13 november 2025 12:23:56
13 november 2025 10:50:36
13 november 2025 12:23:56
22
Informatief





