Deze datastory beschrijft de specifieke toepassingen van de kennisgraaf integratie en dynamische aanpassingen in de kennisgraaf, die in de scope van deze proof of concept (PoC) mogelijk gemaakt worden.

OBA heeft twee vragen die met de huidige PoC worden beantwoord:

  1. Is het mogelijk om informatie van verschillende systemen (VSmart en WebPower) in een kennisgraaf te combineren?
  2. Kunnen wijzigingen in deze kennisgraaf weer terug gebracht worden naar het oorspronkelijk bronsysteem?

Er zijn twee bronsystemen die voor deze PoC gebruikt worden: VSmart en WebPower.

Het VSmart systeem bezit informatie over uitleen- of verlengingsacties. Hier zullen uitleen- en verlengingsacties in het term 'transactie' samengevat worden. Een transactie bestaat uit een lener, die een object leent of een uitlening verlengt. Een lener is een lid van OBA, een object kan bijvoorbeeld een boek uit de bestand van OBA zijn.

Het WebPower systeem beschikt over de ledeninformatie van OBA. In deze datastory zal een toepassing gespecificeerd worden voor een wijziging van de data van een lid met het volgende voorbeeld:

  • Een persoon met de naam 'Elize Aalders' is een lid van OBA.
  • WebPower beschikt over data met persoonlijke informatie van het lid 'Elize Aalders':

De persoonlijke informatie over een OBA lid.

VSmart bevat informatie over boeken die het lid 'Elize Aalders' geleend heeft. Het is mogelijk om de instantie 'Elize Aalders' tussen de twee bron systemen te koppelen, omdat er een ID voor die instantie bestaat, die in beide systemen voorkomt. In ons voorbeeld is de unique identifier 'https://data.oba.nl/id/lid/14366514'.

Wellicht wil Elize Aalders graag mails met nieuws en informatie over haar lidmaatschap van OBA ontvangen. Daarvoor moet er natuurlijk een e-mailadres in de data toegevoegd worden. Om deze informatie vast te leggen maken we gebruik van de Provenance ontologie. Met dit datamodel kunnen we aan wijzigingen onderhevige gegevens op zo'n manier vastleggen dat RDF data kan worden aangepast zonder de oorspronkelijke data te verliezen.

Binnen TriplyDB kunnen deze gegevens worden toegevoegd aan de kennisgraaf met de `dynamicTriple.create() functie:

dynamicTriple.create( lid:14366514, sdo:email,  'elize.aalders@rgp.com' )

Het e-mailadres wordt nu niet rechtstreeks aan het lid gekoppeld, maar via een Provenance entity die een aanmaak datum/tijd heeft. Die entiteit is gekoppeld aan het lid (het subject) en heeft de informatie van het e-mailadres (het predicaat) 'elize.aalders@rgp.com' (het object).

observaite-v2

Verder is het mogelijk om informatie in de kennisgraaf te veranderen. Dat is bijvoorbeeld nodig als Elize Aalders haar email adres wilt wijzigen op haar persoonlijk 'Mijn OBA' account, het is dan mogelijk haar informatie van 'elize.aalders@rgp.com' naar 'e.aalders@rabomobiel.nl' te wijzigen. We gebruiken nu weer het Provenance datamodel om de bestaande gegevens te invalideren (ongeldig te verklaren) en nieuwe gegevens vast te leggen.

Binnen TriplyDB gebruiken we nu de functie dynamicTriple.update() in combinatie met oude en nieuwe gegevens::

dynamicTriple.update(
    lid:14366514,
    sdo:email, 
     'elize.aalders@rgp.com', 
     'e.aalders@rabomobiel.nl'
)

In de onderstaande afbeelding worden drie aanpassingen geïllustreerd: (1) Er wordt een activiteit aangemaakt, (2) vervolgens wordt er een nieuwe observatie aangemaakt, en (3) de oude observatie wordt als ongeldig gemarkeerd.

edit-v2

Om op deze manier wijzigingen te modelleren heeft het voordeel dat er nu inzicht van wijzigingen is, waar de geschiedenis van aanpassingen wordt behouden. Gekoppelde systemen kunnen via een eenduidige API (SPARQL) de meest recente gegevens van een lid ophalen, maar kunnen ook zien wat de wijziging precies was. Via SPARQL is het ook mogelijk om alle wijzigingen visualiseren, die op een bepaalde datum gemaakt zijn.

Alle wijzigingen, die op een bepaalde datum gemaakt zijn.