Tijd
Elke bewering in het register heeft een plaats in de tijd. Over tijd in relatie tot registers zijn boekenkasten vol geschreven, met eindeloos veel verschillende 'tijdsoorten' of 'tijdsassen'. Deze handreiking maakt primair onderscheid op basis van wie of wat de waarde van een tijdstip of periode bepaalt. Dat levert twee soorten tijd op. Dit hoofdstuk beschrijft ze, en volgt ze daarna door het register: van gevolg via projectie-element naar verstrekking.
Domeintijd en systeemtijd
De domeintijd is het punt of de periode die onlosmakelijk hoort bij wat een bewering beschrijft en deze in de tijd van het domein plaatst. De waarde wordt bepaald door de werkelijkheid, de regelgeving of de bestuurlijke context waarbinnen een register werkt. Domeintijd is intrinsiek: onlosmakelijk onderdeel van het gebeuren of de toestand die een bewering beschrijft.
De systeemtijd is het punt dat het register bij het vastleggen aan een bewering toevoegt en deze op de tijdlijn van het systeem plaatst. De waarde wordt bepaald door het systeem dat gegevens verwerkt en opslaat. Dat kan een IT-systeem zijn, maar ook het sociotechnische systeem waarin mensen en IT-systemen samenwerken om taken uit te voeren. Systeemtijd is extrinsiek: het zegt iets over de verwerking van een bewering, maar niets inhoudelijks over wat de bewering beschrijft. Dezelfde gegevens hebben daarom in ieder register dat ze vastlegt een eigen systeemtijd.
De geboortedatum van een op 3 maart geboren kind is een moment in de domeintijd. Het moment (bijvoorbeeld 5 maart) waarop het inschrijvingsgevolg met die geboortedatum door het register wordt opgenomen, is een moment op de systeemtijdlijn.
Aan de domeintijdkant kunnen meerdere tijdsdimensies bestaan, bijvoorbeeld een geldigheidsperiode naast een moment van inwerkingtreding. Er is één systeemtijddimensie.
Domeintijd
Geldigheid
Geldigheid beschrijft wanneer iets 'gold' of beschouwd werd als 'juist' of 'waar'. Geldigheidstijd is daarmee een vorm van domeintijd.
Geldigheid wordt bepaald door het administratieve domein dat gegevens registreert. Anders dan systeemtijd is geldigheid een onveranderlijk of 'intrinsiek' onderdeel van wat geregistreerde gegevens beschrijven. Gegevens die in meerdere registers zijn gedupliceerd, hebben daardoor in ieder van die registers dezelfde geldigheid.
Geldigheid als administratief construct
Hoewel het woord 'intrinsiek' anders kan doen lijken, is geldigheidstijd een administratief construct. Niemand zal kersverse ouders een kaartje sturen om hen te feliciteren met de nieuw verworven geldigheid van hun pasgeboren baby. In de 'echte' wereld, waar de dingen die we met behulp van gegevens beschrijven daadwerkelijk bestaan, komen we hooguit gebeurens tegen die aanleiding geven om gegevens in administratieve context als geldig te gaan beschouwen. In het geval van een persoon kan dat een geboorte zijn, maar bijvoorbeeld ook een immigratie als iemand pas op latere leeftijd in beeld komt van 'onze' administratieve werkelijkheid. Overlijden zou aan de andere kant een reden kunnen zijn om de geldigheid van een persoon te beëindigen.
Het begrip geldigheidstijd (of valid time) werd in 1986 gemunt door Richard Snodgrass en Ilsoo Ahn. In hun artikel 'Temporal Databases' illustreren de auteurs deze temporele dimensie aan de hand van een universiteitsmedewerker ('Merrie') die door de tijd verschillende functies heeft.
Informatie over de veranderende functie van Merrie vinden we door aan een projectie de vraag te stellen "wat was op moment tx de functie van Merrie?" Voor september 1973 zou het antwoord 'instructor' luiden, terwijl het voor december van dat jaar 'assistant professor' zou zijn. Hoewel het artikel dit niet expliciet maakt, veronderstelt dit voorbeeld een projectie over Merrie's functies vanuit continuantperspectief: een toestandsprojectie.
Voltrekking
Een gebeurenprojectie kunnen we niet op dezelfde manier bevragen. Neem opnieuw de veranderende functie van Merrie, maar nu niet beschouwd vanuit een medewerker met verschillende rollen, maar als loopbaan: een gefaseerde voltrekking van opeenvolgende aanstellingen.
Stel dat je daarover vraagt: "hoe zag op moment tx Merrie's loopbaan eruit?" Dan zou voor 1 oktober 1973 het antwoord als volgt kunnen luiden: "Merrie was als instructor aangetreden, de aanstelling als assistant professor was nog niet ingegaan." Wat hier beschreven wordt, is geen toestand, maar een opsomming van op het bevragingsmoment gepasseerde en lopende fases.
De 'geldigheid' van een loopbaan op 1 oktober 1973 bestaat dus eenvoudigweg niet. Wat wel bestaat, is het feit dat een deel van de loopbaan achter de rug is – we noemen dit 'voltrokken' – en een ander deel nog moet komen. Gebeurens bevragen en projecteren we daarom niet op basis van geldigheidstijd, maar op basis van voltrekkingstijd (of occurrence time): het tijdstip of de periode waarin een gebeuren zich voltrekt.
Geldigheid + voltrekking = domeintijd
Toestanden en gebeurens kennen dus ieder hun eigen tijdsdimensie: geldigheidstijd voor de eerste, voltrekkingstijd voor de tweede. In de literatuur wordt de term geldigheidstijd echter vaak gebruikt als generieke aanduiding voor alles wat geen systeemtijd is. Dat is een historisch gegroeide onnauwkeurigheid: geldigheidstijd is passend voor toestanden, maar niet voor gebeurens.
Wat geldigheidstijd en voltrekkingstijd gemeen hebben, is dat ze beide iets uitdrukken over de (fysieke, juridische of administratieve) werkelijkheid die het register beschrijft, en niet over het register zelf. Deze categorie tijdsbegrippen duiden we aan met één begrip: domeintijd. Die omvat alle vormen van tijd die niet door het register zelf worden bepaald, maar door wat in het domein gebeurt of geldt – ook juridische inwerkingtredingsdata of beslistermijnen.
Bij toestandsprojecties hoort dus een vraag naar geldigheid (geldigOp, geldigVanaf, geldigTot), bij gebeurenprojecties een vraag naar voltrekking (gebeurdVanaf, gebeurdTot). De projectiesoorten zetten deze vormen van domeintijd af tegen systeemtijd.
Systeemtijd
Eén systeemtijddimensie, twee verschijningsvormen
Omdat gevolgen en projectie-elementen elk een eigen systeemtijd hebben, komt de systeemtijddimensie op twee plekken terug:
- aan de journaalkant als gevolgtijdstip: het moment waarop een gevolg in het gevolgenjournaal wordt vastgelegd;
- aan de projectiekant als projectietijdstip: het moment waarop een projectie-element wordt geproduceerd en beschikbaar komt voor afnemers. Bij notificaties heet dat moment ook wel het notificatietijdstip.
Tussen deze twee momenten zit verwerkingstijd. Beide liggen op dezelfde as; het projectietijdstip is geen derde temporele dimensie.
Tijd door het register heen
Gevolg: gebeurd op en gevolgtijdstip
Een gevolg is temporeel atomair: het vindt op één moment plaats en heeft geen (geldigheids)duur. In termen van temporele databases is het een event: een ogenblikkelijk feit.
Een gevolg draagt daarom twee tijdstippen:
- het gebeurd-op-tijdstip, in de domeintijd: het door het domein bepaalde moment waarop het gevolg in de echte wereld een verandering tot stand bracht;
- het gevolgtijdstip, in de systeemtijd: het moment waarop het gevolg in het gevolgenjournaal is vastgelegd.
Gebeurd op en geldigheid
In veel gevallen kan van het gebeurd-op-tijdstip van een gevolg een geldig-vanaf-moment in een toestandsprojectie worden afgeleid. Gaan we ervan uit dat het moment van geboorte het startpunt is voor een geldige inschrijving, dan kan van het gevolg persoon p1 geboren | gebeurd op 18-07-1985 de volgende projectie worden afgeleid:
| persoon | geldig vanaf |
|---|---|
| p1 | 18-07-1985 |
Welk tijdstip als geldigheidstijdstip dient, is een keuze per projectie en ligt vast in de projectiespecificatie. Een gevolg kan meerdere domeintijdstippen bevatten, zoals een geboortedatum en een datum van inschrijving. Wie personen wil afbeelden vanaf de geboorte, kiest de geboortedatum; wie vooral in de administratie is geïnteresseerd, de inschrijvingsdatum. Bij een late geboorteaangifte maakt dat verschil uit. Het adoptievoorbeeld laat zien hoe verschillende projecties verschillende domeintijdstippen gebruiken.
De keuze tussen feitelijk en administratief formuleren werkt hierop door:
- Bij feitelijke formulering is het gebeurd-op-moment een logisch startpunt voor geldigheidsperiodes in projecties.
- Bij administratieve formulering blijft sprake van een domeindatum, maar neigt het gebeurd-op-moment meer naar het karakter van een 'geregistreerd-op'-moment.
Projectie-element: geldigheid van de projectie en van de gegevens
Bij projecties die zijn opgebouwd uit meerdere gevolgen, is het belangrijk onderscheid te maken tussen de geldigheidsdatum van de projectie zelf en de domeindatums van de gegevens daarbinnen. De geldigheidsdatum van een projectie geeft aan vanaf welk moment deze projectie in deze vorm als 'juist' of 'waar' wordt beschouwd. Die datum zegt dus niets over de ouderdom van de entiteiten of andere gegevens die erin zijn opgenomen.
Neem als voorbeeld de volgende gevolgen:
woz-object w1 ontstaan | gebeurd op 15-08-1994belanghebbende bij woz-object w1 is p1 | gebeurd op 23-08-1994belanghebbende bij woz-object w1 is p2 | gebeurd op 19-10-2009belanghebbende bij woz-object w1 is p3 | gebeurd op 07-03-2023
Het WOZ-object bestaat al sinds 15-08-1994, maar de projectie is voor het laatst bijgewerkt naar aanleiding van het gevolg van 07-03-2023. Die datum markeert dus niet het ontstaan van het object, maar het meest recente domeinmoment dat de huidige vorm van de projectie heeft bepaald.
Zonder toelichting riskeert een afnemer de datum verkeerd te interpreteren. Uit de projectie moet de betekenis daarom voldoende duidelijk blijken – bijvoorbeeld door de geldig vanaf-datum expliciet aan de projectie te koppelen, of door aan te geven dat die datum de laatste relevante wijziging in het domein betreft.
projectie l1
geldig vanaf 07-03-2023
woz-object w1
eerste registratie 15-08-1994
belanghebbenden
p1
start belang 23-08-1994
einde belang 18-10-2009
p2
start belang 19-10-2009
einde belang 06-03-2023
p3
start belang 07-03-2023
Een projectie-element draagt alleen de tijd van zijn eigen productie en wat zijn grond over de domeintijd zegt. Wanneer een toestand ophoudt, blijkt uit een volgend element in de reeks (zie Projecties opbouwen).
Verstrekking: het projectietijdstip meeleveren
Bij iedere concrete verstrekking kan het projectietijdstip worden meegeleverd. Of dat wenselijk is, hangt af van de situatie. Bij een vraag naar de actuele stand is dit tijdstip vaak niet relevant. In andere gevallen kan het meesturen ervan juist ongewenst zijn, omdat het informatie kan onthullen die niet met iedereen gedeeld mag worden, zoals het feit dat een correctie heeft plaatsgevonden.
Verwerkingstijd
Tussen het gevolgtijdstip en het projectietijdstip zit verwerkingstijd, en tussen het projectietijdstip en het moment waarop een afnemer de gegevens ziet nog meer. Een afnemer kijkt daardoor altijd in potentie naar informatie die net niet meer actueel is. Dat is geen fout, maar een eigenschap van de architectuur; zie eventual consistency als ontwerpoverweging en de inherente beperkingen aan de herhaalbare vraag.
Bitemporaliteit
Wie domeintijd en systeemtijd samen bijhoudt, werkt bitemporeel. Dat is nodig om twee vragen uit elkaar te houden: wat gold er volgens het register op een bepaald moment, en wat onderschreef het register op een bepaald moment? De capability Historisch inzicht vraagt beide. Ook de herhaalbare vraag is zonder bitemporaliteit niet te beantwoorden zodra correcties met terugwerkende kracht mogelijk zijn.
Bitemporaliteit brengt complexiteit met zich mee die niet in alle gevallen nodig is. Welke temporaliteit een projectie nodig heeft, is een ontwerpafweging.
Verdieping
- Tijdstippen en geldigheid werkt de tijdstippen van gevolgen en projecties uit.
- Temporaliteit in projecties gaat van actuele stand via unitemporaliteit naar bitemporaliteit.
- Bitemporele relationele databases beschrijft een tabelvorm voor bitemporele projecties.