6 Profiel voor datalineage

Dit hoofdstuk beschrijft een standaard profiel voor datalineage, waarbij vooral wordt uitgegaan van de PROV standaard. Het beschrijft een verzameling afspraken over hoe deze standaard op een meer uniforme manier gebruikt kan worden.

6.1 Inleiding

In de uitwerking van het voorbeeld zoals beschreven in het vorige hoofdstuk zijn een aantal inrichtingskeuzes gemaakt. Deze keuzes worden liefst op andere plaatsen ook zo gemaakt, zodat datalineage op een generieke manier kan worden behandeld. Er kan dan ook generieke software worden ontwikkeld. In dit hoofdstuk worden de inrichtingskeuzes daarom vertaald naar richtlijnen. Bij elkaar vormen ze een standaard profiel. Daarbij staat de PROV standaard centraal, maar wordt ook gebruik gemaakt van een aantal andere vocabulaires zoals Dublin Core en DCAT. Het richt zich op het vastleggen van datalineage van gestructureerde gegevens op het niveau van tabellen of gegevenselementen en ondersteunt datalineage op typeniveau en instantieniveau. Het dekt de patronen 4, 6, 7 en 8 in hoofdstuk 4. 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 het hier voorgestelde profiel. Los daarvan is toetsing van het profiel in de praktijk gewenst.

6.2 Richtlijnen

  1. Een brondataset en daarvan afgeleide datasets worden gemodelleerd conform de DCAT standaard.
  2. Een brondataset voor een afgeleide dataset wordt beschreven middels dcterms:source conform de DCAT standaard.
  3. De datalineage metagegevens van de afgeleide dataset zijn beschikbaar via een SPARQL endpoint dat conform de DCAT standaard is gedefinieerd als dcat:DataService en als prov:Bundle en verwijst naar de SPARQL en PROV-O standaarden middels dcterms:conformsTo <http://www.w3.org/TR/sparql11-protocol/> en dcterms:conformsTo <http://www.w3.org/TR/prov-o/>.
  4. De modellering van conceptuele informatiemodellen en logische gegevensmodellen en de vertaling ervan naar linkeddata is conform de MIM standaard.
    1. Elementen in een gegevensmodel verwijzen naar hun bijbehorende begrip middels dcterms:subject conform de MIM standaard.
    2. Objecttypes op conceptueel niveau worden beschreven middels owl:Class conform de MIM standaard.
    3. Attribuutsoorten op conceptueel niveau worden beschreven middels owl:DatatypeProperty conform de MIM standaard.
    4. Objecttypes op conceptueel niveau, worden op logisch niveau vertaald naar een representatie in gegevens en vervolgens beschreven middels sh:NodeShape conform de MIM standaard.
    5. Attribuutsoorten op conceptueel niveau, worden op logisch niveau vertaald naar een representatie in gegevens en vervolgens beschreven middels sh:PropertyShape conform de MIM standaard.
  5. Een afgeleide dataset wordt gemarkeerd als een entiteit door deze te beschrijven als een prov:Entity conform de PROV standaard.
  6. De activiteit voor het genereren van een afgeleide dataset wordt beschreven middels prov:wasGeneratedBy conform de PROV standaard.
  7. Er kan vanuit een afgeleide dataset worden verwezen naar een activiteit op typeniveau of naar een activiteit op instantieniveau.
  8. Activiteiten op typeniveau:
    1. Verwijzen naar de transformatie die wordt uitgevoerd in de activiteit middels prov:hadPlan conform de PROV standaard.
    2. Verwijzen naar de clusters van invoergegevens middels prov:used conform de PROV standaard.
    3. Verwijzen naar de clusters van uitvoergegevens middels prov:generated conform de PROV standaard.
  9. Activiteiten op instantieniveau:
    1. Verwijzen naar de activiteit op typeniveau die ze instantiëren middels dcterms:type conform de Dublin Core standaard.
    2. Beschrijven de start- en/of eindmomenten middels prov:startedAtTime en prov:endedAtTime conform de PROV standaard.
  10. Transformaties:
    1. Worden beschreven middels prov:Plan conform de PROV standaard.
    2. Beschrijven de afleidingsregels voor het creëren van uitvoergegevens in natuurlijke taal middels rdfs:comment conform de RDFS standaard.
    3. Beschrijven de programmacode voor het creëren van de uitvoergegevens middels dcterms:description of verwijzen naar de programmacode locatie middels dcterms:relation conform de Dublin Core standaard.
  11. Als er meerdere activiteiten en/of clusters van afleidingsregels worden gebruikt voor het genereren van uitvoergegevens dan worden deze middels prov:wasInformedBy in een keten aan elkaar gerelateerd conform de PROV standaard.
  12. Een cluster van invoer- of uitvoergegevens wordt beschreven als een prov:Collection conform de PROV standaard.
  13. De technische naam (identifier) van gegevensclusters wordt beschreven middels rdfs:label conform de RDFS standaard.
  14. De dataset waar een gegevenscluster toe behoort wordt beschreven middels dcterms:isPartOf conform de Dublin Core standaard.

Als datalineage wordt vastgelegd op het niveau van gegevenselementen dan gelden de volgende richtlijnen:

  1. De gegevenselementen die onderdeel zijn van een gegevenscluster worden beschreven middels prov:hadMember conform de PROV standaard.
  2. Een gegevenselement wordt beschreven middels prov:Entity conform de PROV standaard.
  3. De technische naam (identifier) van een gegevenselement wordt beschreven middels rdfs:label conform de RDFS standaard.
  4. Als datalineage op instantieniveau wordt vastgelegd dan wordt de waarde van een gegevenselement beschreven middels prov:value conform de PROV standaard.
  5. De property shape die behoort bij een gegevenselement wordt beschreven middels dcterms:type conform de Dublin Core standaard.
  6. De invoergegevenselementen die worden gebruikt voor de totstandkoming van een uitvoergegevenselement worden beschreven middels prov:wasDerivedFrom conform de PROV standaard.

Volgende hoofdstuk: Hoofdstuk 7 - Adviezen