Gebruik van metagegeven inOnderzoek in relatie tot historie.

Dit is een statische kopie van het eerdere discussie.kinggemeenten.nl.
Nieuwe discussies kunnen in de GitHub repository 'StUF standaarden' als issue worden opgevoerd.

14 reacties / 0 nieuw
John Rooijakkers
Gebruik van metagegeven inOnderzoek in relatie tot historie.

Binnen het RSGB is het metagegeven inOnderzoek opgenomen. Dit metagegeven heeft betrekking op een (groep) ander(e) gegeven(s). Voor het gegeven inOnderzoek kan zowel materiële als formele historie worden gedefinieerd.

Bij het verStUFfen van het RSGB is dit metagegeven niet vertaald naar een attribuut bij een element maar naar een zelfstandig element. Bij het element inOnderzoek wordt door middel van attributen vermeld op welk ander element of welke groep van elementen het onderzoek betrekking heeft.

Door deze vertaling wordt de semantische relatie tussen de geldigheid van de waarde van een element en het hierbij geregistreerde onderzoek niet afgedwongen en dit leidt nu in de praktijk tot verschillende interpretaties en werkwijzen:

A. Werkwijze waarbij het metagegeven inOnderzoek materiële historie kent die overeenkomt met de periode waarin het onderzoek naar de waarde van het element is uitgevoerd.
B. Werkwijze waarbij het metagegeven inOnderzoek materiële historie kent die overeenkomt met de periode waarin het element de waarde had die in onderzoek was.

Aan de hand van het volgende scenario worden de verschillende interpretaties toegelicht:

Op 12-07-2008 wordt een WOZ object geregistreerd met ingangsdatum 01-06-2008 en codeGebouwdOngebouwd de waarde “O” (ongebouwd).
Op 24-06-2009 wordt de waarde codeGebouwdOngebouwd in onderzoek geplaatst.
Op 21-07-2009 wordt het onderzoek afgesloten en wordt de codeGebouwdOngebouwd met terugwerkende kracht per 01-06-2008 gecorrigeerd naar de waarde “G” (gebouwd).

Op basis van de eerder genoemde werkwijzen leidt dit tot de onderstaande registraties.
(Het element inOnderzoek heeft hierbij betrekking op het element codeGebouwdOngebouwd.)

Werkwijze A:

Toevoegen WOZ object met de volgende gegevens:
- codeGebouwdOngebouwd  O
- inOnderzoek                     geenWaarde
- begindatumGeldigheid       01-06-2008
- einddatumGeldigheid         geenWaarde
- tijdstipRegistratie              12-07-2008
Wijzigen WOZ object met de volgende oude en nieuwe gegevens:
- codeGebouwdOngebouwd  O                   O
- inOnderzoek                     geenWaarde   J
- begindatumGeldigheid       01-06-2008    24-06-2009
- einddatumGeldigheid         24-06-2009    geenWaarde
- tijdstipRegistratie              24-06-2009
Wijzigen WOZ object met de volgende oude en nieuwe gegevens:
- codeGebouwdOngebouwd  O                   O
- inOnderzoek                     J                    geenWaarde
- begindatumGeldigheid       24-06-2009     21-07-2009
- einddatumGeldigheid         21-07-2009     geenWaarde
- tijdstipRegistratie              21-07-2009 (12:00)
Corrigeren WOZ object met de volgende oude en nieuwe gegevens:
- codeGebouwdOngebouwd  O                    G
- inOnderzoek                     geenWaarde    geenWaarde
- begindatumGeldigheid       01-06-2008      01-06-2008
- einddatumGeldigheid         geenWaarde    geenWaarde
- tijdstipRegistratie              21-07-2009 (12:01)

Werkwijze B:

Toevoegen WOZ object met de volgende gegevens:
- codeGebouwdOngebouwd    O
- inOnderzoek                       geenWaarde
- begindatumGeldigheid         01-06-2008
- einddatumGeldigheid           geenWaarde
- tijdstipRegistratie                12-07-2008
Corrigeren WOZ object met de volgende oude en nieuwe gegevens:
- codeGebouwdOngebouwd    O                  O
- inOnderzoek                       geenWaarde   J
- begindatumGeldigheid         01-06-2008    01-06-2008
- einddatumGeldigheid           geenWaarde   geenWaarde
- tijdstipRegistratie                24-06-2009
Corrigeren WOZ object met de volgende oude en nieuwe gegevens:
- codeGebouwdOngebouwd    O                 G
- inOnderzoek                       J                  geenWaarde
- begindatumGeldigheid         01-06-2008   01-06-2008
- einddatumGeldigheid           geenWaarde  geenWaarde
- tijdstipRegistratie                21-07-2009

Volgens PinkRoccade is werkwijze B de (enige) juiste omdat:

Op 24-06-2009 wordt weliswaar geconstateerd dat de waarde van het element codeGebouwdOngebouwd onjuist is, maar de juistheid van de waarde wordt niet bestreden vanaf 24-06-2009, maar reeds vanaf het ontstaan van het WOZ object per 01-06-2008.
In werkwijze A wordt in stap 4 een correctie uitgevoerd met een ingangsdatum die minder recent is dan de meest recente ingangsdatum die in een eerdere kennisgeving is opgenomen en dit is volgens StUF niet toegestaan. Hier moet dan een synchronisatie worden gebruikt.
Indien later (bijvoorbeeld in 2010) de materiële historie van het object wordt opgevraagd op peiltijdstip 01-07-2009, dan wordt bij werkwijze A ten onrechte gemeld dat het inmiddels reeds gecorrigeerde element codeGebouwdOngebouwd (waarde = “G”) nog in onderzoek is.

Wij zijn van mening dat het in onderzoek plaatsen van gegevens moet gebeuren met ingang van de datum waarop de waarde van het element (die wordt betwijfeld) geldig wordt met daarbij het opbouwen van formele historie die aangeeft op welke moment de ingang (en het einde) van het onderzoek heeft plaatsgevonden. De periode waarin een gegeven in onderzoek heeft gestaan is daarbij later altijd te bepalen op basis van een vraag waarbij de formele historie op een peiltijdstip wordt opgevraagd.

Lennart van Bergen

Een object heeft in feite maar een paar echte attributen. De andere attributen zijn metagegevens, die wat zeggen over de echte attributen. Die metagegevens zijn bv. materiele historie, audittrail of een status aanduiding. Onder deze laatste vallen bv. inActief of inOnderzoek.

Zolang een dergelijk metagegeven de hele set echte attributen beschouwd, hoort zo'n metagegeven bij het object zelf gemodelleerd en beheerd te worden. Dat komt omdat dat metageven exact 1 op 1 loopt met de hele groep van de echte attributen zelf en omdat het metagegeven geen zelfstandig bestaansrecht heeft. Het bestaat alleen omdat de echte gegevens er ook zijn. 

Dit is vrij gangbaar. Er zijn echter wel meerwaarde als het vereist is om metagegevens per attribuut bij te houden. 

Denk hierbij aan: 

1. historie bijhouden per attribuut. De materiele historie geldt dan alleen voor 1 echt attribuut en niet voor de hele set. Dit is een granulariteitskeuze. Het is in feite wel zuiverder, want alleen de gewijzigde attributen hoeven gemuteerd te worden. Voor het bijhouden van historie en mutaties op enkelvoudige attributen wordt vaak niet gekozen in een registratie database of in een koppelvlak die tot doel heeft een kopie bij te houden, omdat dit complexer is, vrijwel geen meerwaarde biedt omdat het ook afleidbaar is, en omdat er dan context en volledigheid kwijtraakt.

Tkn. voor processen aan de voorkant, dus voordat gegevens geregistreerd worden is het vaak wel handig om alleen te praten in gebeurtenissen en attributen die voor die gebeurtenis wijzigen. 

2. in onderzoek bijhouden bij een attribuut of set attributen (er kunnen er meerdere tegelijk in onderzoek zijn). 

Wat wel relevant is dat in onderzoek in feite een procesgegeven is, en eigenlijk niks zegt over de werkelijke attributen van het object. Als een gegeven, of een set gegevens, in onderzoek is, daar veranderd het echte object veranderd er door. Als uit het onderzoek blijkt dat het object wel goed is, en het object weer uit onderzoek is gehaald, dan is er aan het object helemaal niets veranderd. Waarom dan die mutaties doorvoeren? 

Conclusie is denk ik dat in onderzoek eigenlijk slaat op het onderzoeksproces zelf. Dat is mijn inziens een aparte entiteit. En in dat onderzoek zelf staat dan het object en welke attributen ervan in onderzoek zijn. Mijn inziens hoort het object in de registratie 'niet lastig gevallen te worden' door het feit dat zo'n onderzoek loopt. Vanuit deze optiek hoort in onderzoek dus niet bij het object zelf en moet dus losstaand gemodelleerd worden, met een eigen tijdvak waarin het onderzoek loopt. 

Uiteraard is het zo dat het wenselijk is om te weten dat een object in onderzoek is en dat het handig is om dit te melden, wanneer iemand de gegevens van het object opvraagt. Vanuit die optiek hoort het gegeven in onderzoek dus:
- wel als extra informatie meegeleverd te worden bij het object. Maar dus niet als attribuut van het object, maar als extra gegeven bij een bevraging. 
- de gebeurtenis dat een onderzoek naar het object is gestart of afgerond hoort ook geleverd te worden. Deze gebeurtenis gaat over een onderzoek, een proces, en is geen gegeven van het object zelf. Deze hoort dus ook niet als mutatie op dat object gedefinieerd worden.

Lennart van Bergen

Als een gegeven, of een set gegevens, in onderzoek is, daar veranderd het echte object veranderd er door.

moet zijn

Als een gegeven, of een set gegevens, in onderzoek is, daar veranderd het echte object niet door.

Lennart van Bergen

Het onderwerp betreft echte de bestaande modellering begrijp ik. 

Antwoord op de vraag hangt af waarover in onderzoek iets probeert te zeggen.

Over het onderzoek (dan A), of over het geregistreerde voorkomen van het object (dan B). 

Wat me wel opvalt is dat vanuit een registratie perspectief je eigenlijk vooral wilt weten dat specifieke, al eerder geregistreerde gegevens, onjuist zijn geweest. Dit lijkt nu helemaal niet in de discussie te spelen, terwijl de registratie dus tijdelijk al een tijdje niet strookt met de werkelijkheid. 

Volgens mij komt ik tot de conclusie dat in onderzoek echt over een proces gaat en niet over de gegevens zelf. Ok, een proces dat onderzoekt of gegevens wel of niet kloppen, maar dat weten we pas NADAT het onderzoek is afgerond. En dan pas weten we dat vanaf een bepaalde datum in het verleden de gegevens onjuist of juist waren. 

Dus: in onderzoek is eigenlijk een antwoord op de vraag: is dit object in onderzoek? en dat kan je vinden in een Onderzoek object, net zoals een vergunning een eigen historie kent, en niet 1 op 1 loopt met wat er feitelijk in de werkelijkheid waar te nemen is. 

hierna: korte uitwerking van hoe de registratie bijgewerkt moet worden om te zien vanaf wanneer gegevens onjuist zijn geweest. 

Als juist: object hoeft niet gemuteerd te worden en dus ook geen periode waarin het in onderzoek is geweest te hebben. 

Als onjuist: object moet verbeterd worden, en in de levensloop van het object moet te zien zijn wat de goede materiele historie is wat wat de formele historie voor en na het onderzoek was. 

NB. De datum waarop het onderzoek dan liep is niet relevant. Het gaat dan om de gegevens zelf.

ALS de gegevens per ongeluk verkeerd geregistreerd zijn vanaf de datum begin geldigheid: voor een correctie door. 

ALS de gegevens na registratie zijn veranderd in de werkelijkheid, dan zijn de gegevens aan het begin van het geregistreerde tijdvak nog wel goed, maar vanaf een bepaald moment niet meer, bv. de datum waarop het onderzoek uitwijst dat de gegevens anders zijn geworden, d.m.v. constatering of d.m.v. andere onderzoeksresultaten. Het goed geregistreerde deel van het tijdvak eindigt dan per die datum en er komt dan een nieuw voorkomen die vanaf die datum ingaat.

Maarten van den...

Ik ben voor alternatief A, omdat je wilt weten gedurende welke periode het object inOnderzoek was. Ik heb een tijdje terug al een post op het forum geplaatst dat mijns inziens volgens de StUF-standaard een actueel gegeven gecorrigeerd mag worden ook al ligt de begindatumGeldigheid van dit gegeven voor de beginGeldigheid van een ander gegeven van dat object. Ik ben dus niet met John eens dat dit volgens StUF niet mag.

Als je alleen vraagt met tijdstipMaterieel dan krijg je inderdaad het antwoord dat John beschrijft en fout vindt. Mij lijkt dat het correcte antwoord, want je wilt weten wat toen het geval was volgens de kennis van nu.

Als je met zowel tijdstipMaterieel als tijdstipFormeel 1-7-2009 vraagt, dan krijg je de waarde voor correctie en het inOnderzoek zijn, precies zoals je verwacht.

John Rooijakkers

Maarten stelt dat hij voor alternatief A is “omdat je wilt weten gedurende welke periode het object inOnderzoek was”. Ik deel op zich deze mening en hierin voorziet alternatief B perfect. Het probleem dat ik in dit kader heb met alternatief A is dat (bij het bevragen van alleen de materiele historie) alleen zichtbaar wordt “dat er in de betreffende periode van 24 juni tot 21 juli een onderzoek heeft plaatsgevonden naar een waarde gedurende een periode van het element codeGebouwdOngebouwd”, maar er blijkt niet uit naar welke waarde het onderzoek plaatsvond en ook niet naar welke periode het onderzoek zich richtte. De informatie die uit de materiële historievraag in alternatief A wordt verkregen heeft naar mijn mening dus weinig tot geen waarde. Hiervoor moet alsnog (overeenkomstig alternatief B) de formele historievraag worden gesteld.

Verder stelt Maarten dat “volgens de StUF-standaard een actueel gegeven gecorrigeerd mag worden ook al ligt de begindatumGeldigheid van dit gegeven voor de beginGeldigheid van een ander gegeven van dat object”. Ik heb de argumentatie hiervoor van Maarten (nog) niet gevonden en gelezen, maar ben het op voorhand niet met hem eens omdat in paragraaf 3.3.1 van de StUF standaard staat dat “Een <StUF:tijdvakGeldigheid> of <StUF:tijdstipRegistratie> is van toepassing op alle in de entiteit of in de groep voorkomende attributen van een entiteittype”. Iets daarvoor wordt vermeld dat het tijdvakGeldigheid alleen wordt geïmplementeerd per groep of per object en expliciet niet per (waarde van een) element.

Er is overigens nog een vierde voordeel van alternatief B ten opzichte van alternatief A. Bij het afronden van het onderzoek zal veelal direct de correctie van het in onderzoek geplaatste gegeven plaatsvinden. In alternatief B kan dit via één kennisgevingsbericht plaatsvinden terwijl dit in alternatief A via twee afzonderlijke berichten moet plaatsvinden (nog los van de discussie of dit al dan niet via een synchronisatie moet plaatsvinden). Dit lijkt me geen gewenste situatie.

Lennart van Bergen

Volgens mij is zowel A alswel als B niet juist uitgewerkt, omdat in beide uitwerkingen procesgegevens verweven raken met entiteit gegevens en de tijdvakken van gegevens hierdoor niet juist worden achtergelaten.  

Eindresultaat zou moeten zijn dat de gegevens, en de tijdvakken waarin deze gegevens wel of niet juist waren, correct worden achtergelaten. 
- Dus als uit een onderzoek blijkt dat alles juist was, dan is het gegeven onveranderd en dan is er ook geen tijdvak waarin alleen het attribuut inOnderzoek even op Ja stond. 
- Dus als gedurende een tijdvak in de 1e helft van het tijdvak de gegevens nog wel juist waren, en het onderzoek start op 3/4 van het tijdvak, dan moet de eindsituatie zijn dat de gegevens tot halverwege het tijdvak juist waren en in de 2e helft wel de juiste gegevens in de registratie komen te staan. Het tijdvak van 3/4 tot na het onderzoek horen helemaal niet thuis in de registratie van het object, want dit zegt niks.

Of het A of B betreft dan is het antwoord: beide kunnen valide zijn. Gaat inonderzoek over het onderzoek zelf dan ligt het meer in de lijn van A (maar dan juist), en als het over het geregistreerde voorkomen van het object gaat dan ligt het meer in de lijn van B (maar dan juist). 

Gezien de duidelijke procesinsteek van inOnderzoek lijkt het toch echt meer overeen te komen met A, maar dan zodanig gemodelleerd dat de attributen van het object er qua tijdsvakken geen last van ondervinden. Oftewel, in een aparte entiteit gemodelleerd moeten worden.

John Rooijakkers

Beste Lennart,

In het door mij aangehaalde voorbeeld "blijkt" uit het onderzoek dat de waarde gedurende de gehele periode onjuist was en gecorrigeerd moet worden. Ik heb me daarnaast niet gericht op het (eventueel) wijzigen van de StUF standaard maar op het bepalen van de correcte (optimale) werkwijze(n) binnen de huidige versie (03.01).

Groeten, John.

Arjan Kloosterboer


Ik kan me vinden in één van de eerdere conclusies van Lennart dat 'In onderzoek' over het onderzoeksproces gaat (optie A) en niet in die van John (optie B). Vrij naar Lennart: "in onderzoek is eigenlijk een antwoord op de vraag: is dit gegeven in onderzoek?".
Dat blijkt m.i. ook uit de definitie van dit metagegeven en de toelichting daarop (bron: RSGB): "Een aanduiding waarmee wordt aangegeven dat een onderzoek wordt uitgevoerd naar de juistheid van een of meerdere gegevens van het betreffende object" resp. "De indicatie of te bevragen is dat er twijfel is of is geweest aan de juistheid van de attribuutwaarde en dat een onderzoek wordt of is uitgevoerd naar de juistheid van de attribuutwaarde ".
Met het in-onderzoek nemen wordt betwist dat de huidige waarde van het gegeven onjuist is. Er wordt niet betwist dat de waarde al onjuist zou zijn sinds de laatst doorgevoerde mutatie. Het kan bijvoorbeeld best zo zijn dat er daarna een mutatie niet verwerkt is. Dit blijkt pas uit het onderzoek.
De materiele historie van dit metagegeven geeft aan wanneer besloten is om de attribuutwaarde in-onderzoek te zetten en het uit-onderzoek te halen. Hiermee wordt de periode gemarkeerd waarbinnen verplicht gebruik niet absoluut geldt en afnemers van de waarde van het attribuut alert moeten zijn op het gebruik daarvan (en daarvan mogen afwijken). De formele historie van dit metagegeven geeft aan wanneer een afnemer dit had kunnen weten en daarnaar had kunnen handelen. Het is dus echt de markering van het begin en einde van het onderzoeksproces en niet van de periode waarin de waarde van het attribuut onjuist zou zijn.
Als deze conclusie tot aanscherping van het StUF-berichtenverkeer zou moeten leiden, dan lijkt me het zeer zinvol om daarover nadere afspraken te maken.

Sid Brouwer

Ook ik ben voorstander van optie A. Zoals ik het tijdvak in de kennisgevingsberichten tot nu toe heb beschouwd, slaat het op alle gewijzigde gegevens in het bericht. Het kan daarmee dus ook een tijdvak voor het onderzoeksgegeven zijn. In optie B ben je dus kwijt in welke periode het gegeven in onderzoek heeft gestaan. Bovendien is het uit onderzoek halen geen correctie, maar een wijziging: het onderzoeksgegeven is juist geregistreerd en moet dus niet worden gecorrigeerd. In optie B gaat die mee in een correctie.

In essentie ontstaat het probleem doordat je het metagegeven tijdvakGeldigheid gaat toepassen op het proces-/metagegeven inOnderzoek. Daarmee wordt het een metametagegeven. Dat gaat fout als je in hetzelfde bericht ook niet-metagegevens gaat wijzigen. Is het tijdvak dan een meta- of een metametagegeven?

Om dit op te lossen zonder ingrijpen in de berichtdefinities, zou je moeten kiezen voor optie A. Ook omdat je anders de historie op het (meta-) element inOnderzoek ook niet goed geregeld krijgt. Van een collega die meer thuis is in Key2Burgerzaken begreep ik ook dat in de mGBA het niet is toegestaan in één bericht de gegevens te wijzigen en de onderzoeksgegevens. Zou een onderzoek tot wijzigingen leiden, dat zou eerst het onderzoek moeten worden beëindigd en worden daarna pas de gegevens gewijzigd. Dit sluit ook beter aan bij optie A.

Sid Brouwer

Naar aanleiding van een (terechte) vraag van John hierbij nog een aanvulling:

In mijn vorige reactie ben ik voorbij gegaan aan de vraag of in situatie A de laatste correctie niet een synchronisatie moet zijn in plaats van een correctie, omdat er op hetzelfde object een mutatie is gedaan met een latere ingangsdatum. Maarten stelt daarvan dat het moet kunnen omdat per attribuut(groep) historie is en dat een mutatie op een attribuut kan worden gedaan met een ingangsdatum die ligt voor een mutatie die al is gedaan op een ander attribuut van hetzelfde object.

Dit is een interessante discussie die in een eerdere expertgroep aan het licht is gekomen, maar nooit is voortgezet. In de BAG is sprake van historie op het gehele object/record (in RSGB is dit opgepakt dro alle BAG-attributen in één groep te plaatsen). Daardoor is het in de BAG niet mogelijk wat Maarten stelt. Mede daardoor, én door het feit dat er maar één tijdvakGeldigheid is binnen elke entiteit, denk ik dat bij velen het idee is ontstaan dat dit voor alle entiteittypen het geval is.

Strikt genomen kun je volgens mij uit het RSGB en StUF afleiden dat de stelling van Maarten zou moeten kloppen. Het staat er echter niet duidelijk in en, zoals gezegd; de schijn wordt gewekt dat het anders is. Ik denk ook dat de mogelijkheid die Maarten schetst er een is die systemen nog veel complexer maakt (of bijna verplicht tot een geheel andere wijze van datamodellering door name value pairs ipv objectrecords). Ook denk ik dat het er voor de gemiddelde gebruiker absoluut niet duidelijker op wordt (en het ook niet duidelijk te krijgen is in schermen van applicaties). We zullen ons dus misschien dringen moeten afvragen in hoeverre de mogelijkheden die Maarten schetst niet te veel aansluiten bij een perfecte theorie en te weinig bij reële en acceptabele werkelijkheid.

Ik zou deze discussie dus graag nog eens voortgezet zien. Omdat ik de post waarnaar Maarten verwijst niet heb kunnen vinden, ben ik zo vrij geweest een discussie over dit onderwerp op te starten.

John Rooijakkers

Beste deelnemers aan deze discussie,

Hartelijk dank voor al jullie waardevolle input. Hierdoor wordt duidelijk dat (in ieder geval bij mij) meerdere issues (door elkaar) spelen. Het is goed dat Sid een expliciet onderdeel daar nu uit getrokken heeft. Ik stel voor om beide discussies verder te voeren op het forum en na de vakantie af te ronden tijdens de expertgroep.

Groeten, John.

Henri Korver

Er staan een paar fouten in bovenstaande kennisgevingen van werkwijze A:

  • In de laatste kennisgeving (4) moet het gegeven inOnderzoek worden weggelaten. Anders wordt dit gegeven vanaf 01-06-2008 tot in het oneindige overschreven door een lege waarde. Dit is onjuist want voor de periode 24-06-2009 tot 21-07-2009 willen we dat inOnderzoek de waarde "J" heeft.
  • Om vergelijkbare redenen moet in kennisgevingen (2) en (3) het gegeven codeGebouwdOngebouwd worden weggelaten. Echter bij wijzigingen heeft de fout minder ernstige gevolgen dan in de bovengenoemde correctiekennisgeving.
John Rooijakkers

Hallo Henri,

In mijn initiële post heb ik bij de oude en nieuwe situatie de stand van de database bedoeld.
Uiteraard worden in kennisgevingen alleen gewijzigde gegevens (en kernelementen) opgenomen.
In (wijzigingen binnen) het synchronisatiebericht geldt een soortgelijke regel.

Groeten, John.