Initiële registratie van WOZ-objecten
Inleiding
Casusbeschrijving
In deze beschrijvingen worden alleen de claim-rollen en de daarbij behorende waarden beschreven. De claimtype expressies zijn te vinden in de beschrijvingen van Objecttype WozObject
Het uitvoeren van deze casus is onderdeel van de test_woz (alle casussen die in combinatie worden uitgevoerd) en kan individueel worden uitgevoerd middels de registreer_wozobjecten. Zie Uitleg uitvoeren WOZ-cases
In deze casus worden er een aantal WOZ-objecten geregistreerd. In deze beschrijving wordt geschetst hoe deze casus uitgevoerd is zodat dit herhaalbaar is voor iedereen die de poc-python repository beschikbaar heeft en een werkende python omgeving heeft.
Het uitvoeren van deze casus is ook onderdeel van de test_woz (alle casussen die in combinatie worden uitgevoerd). Zie Uitleg uitvoeren WOZ-cases
Om deze casus uit te voeren wordt als eerste de test vul_wozobjecten uitgevoerd. (Zie de Readme van de poc-python repository hoe deze moet worden uitgevoerd).
Pre-conditie: Werkende development environment, een actieve docker-deamon en een opgestarte server (make dev).
Notificatie
De verwerking van een notificatie tot commando’s, effecten (verwerkingsstappen? , gevolgen?) en claims is uitgewerkt in onderstaand overzicht. Dit bericht betreft een informatierijke notificatie.
Van notificatiebericht naar commando
Van het binnenkomende notificatiebericht moet worden vastgesteld dat het een valide notificatiebericht zou kunnen zijn en geen onderdeel is van een DDOS-aanval of input bevat die onmogelijk verwerkbaar zou kunnen zijn.
Als het bericht ontvangen is vinden de volgende bewerkingstappen plaats.
Notificatieverwerker ontvangt notificatiebericht voert de volgende stappen uit:
- Controleert op verwerkbaarheid
- Registreert ontvangstmoment, type en inhoud
- Valideert of bericht voldoet aan schema
- Valideert of het bericht semantisch interpreteerbaar is.
- Produceren en registreren van het commando.
- Zet het bericht om in een commando in een intern verwerkbaar formaat.
- Legt middels een context-annotatie de relatie tussen het geproduceerde commando en de notificatie.
- Verzendt commando naar commandohandler.
Noot: De Notificatieverwerker is niet geïmplementeerd in het prototype. Het omzetten van XML naar Json is niet nieuw en er is voor gekozen om deze stap over te slaan. De werkende casus begint dus vanaf het commando.
Commando
Het commando waarmee in deze casus de wijziging wordt aangeboden is als volgt opgesteld:
command_str = """
{
"command": {
"commandId": "2175c9b8-2bc7-4006-8e90-f54b1555c176",
"commandType": "registreer_wozObject"
},
"data": [
{
"wozObject": {
"geldigVanaf": "2024-11-29T11:05:00.000+00:00",
"wozObjectnummer": "d6b33e05-a6ea-43d7-b9d0-7380c74e3c39",
"statusWozObject": "actief",
"gebruikscode": "boerderij",
"functieWozObject": "Bedrijfsfunctie",
"typeWozObject": "woning",
"typeWozObjectOptioneel": "woonboot",
"aanduidingInAanbouw": false,
"codeGebouwdOngebouwd" : "gebouwd",
"grondoppervlakte" : 500 ,
"monumentaanduiding" : "geen monument/onbekend",
"aanwezigheidLift": false ,
"waardegebied": "14",
"indicatieLigging": "A1" ,
"codeOmzetBelasting": "onbelaste levering"
}
},
{
"wozObject": {
"geldigVanaf": "2025-01-24T13:15:04.000+00:00",
"wozObjectnummer": "e8d5375b-0a30-46b4-ab62-ac6b8ca10bf6",
"statusWozObject": "actief",
"gebruikscode": "woning dienend tot hoofdverblijf",
"functieWozObject": "Permanente bewoning",
"typeWozObject": "woning",
"typeWozObjectOptioneel": "",
"aanduidingInAanbouw": false,
"codeGebouwdOngebouwd" : "gebouwd",
"grondoppervlakte" : 389 ,
"monumentaanduiding" : "geen monument/onbekend",
"aanwezigheidLift": false ,
"waardegebied": "14",
"indicatieLigging": "A1" ,
"codeOmzetBelasting": "onbelaste levering"
}
}
]
}
"""
Noot: Over welke eisen er aan dergelijke commando’s worden gesteld dienen domein-experts in samenwerking met software-engineers keuzes te maken.
Het commando wordt aangeboden aan het systeem en de eerste stap in de verwerking is het vastleggen van de inhoud van het commando en de registratietijd n, waar mogelijk de context van het commando.
Vervolgens wordt het commando door de commandohandler “registreer_wozobject” verwerkt tot effecten (gevolgen). In dit geval onstaan er 2 effecten en per effect wordt de registratie van één WozObject gerealiseerd. De effecten worden na ontstaan zelf geregistreerd en vervolgens worden de effecten verwerkt door de effect-handler “registreer_wozobject”. Bij deze verwerking worden de claims en annotaties vastgelegd in de Atomic Claim Engine (ACE).
Nadat de command voor het vullen van wozobjecten is uitgevoerd zijn alle claims en annotaties voor deze wozobjecten geregistreerd. Zie de Contentbeschrijving voor meer informatie over de content van deze casus. Voor details over specifieke wozobjecten de secties WozObject 1 en WozObject 2, enzovoort.
In deze beschrijvingen worden alleen de claim-rollen en de daarbij behorende waarden beschreven. De claimtype expressies zijn te vinden in de beschrijvingen van Objecttype Partij en Objecttype PartijIdentificator
Lineage
Het weergeven van de lineage kan gedaan worden door het commandId op te geven van het commando waarvan de lineage gewenst is en vervolgens “make lineage” uit te voeren.
Hiermee worden alle commands, gevolgen en claims in beeld gebracht die als gevolg van het uitvoeren van een command zijn geregistreerd. (Zie de Readme van de poc-python repository hoe deze moet worden uitgevoerd).
Bij de lineage zijn er drie typen weergave beschikbaar:
- Alleen de rollen en hun waarden. Dit is een compacte weergave die vergelijkbaar is met de weergave van een object met bijbehorende attrubiten en hun waarden.
- Volledige claimexpressies in state-vorm –> Deze weergave is alleen mogelijk als vul_partijen is verwerkt met schema_variant=“structure_state.gql” (regel 27). Deze weergave geeft de complete claims weer waarbij de tekst geformuleerd is in tegenwoordige tijd. Hiermee wordt de “state"van het object en de bijbehorende attributen geformuleerd.
- Volledige claimexpressies in event-vorm –> Deze weergave is alleen mogelijk als vul_partijen is verwerkt met schema_variant=“structure_event.gql” (regel 27). Deze weergave geeft de complete claims weer waarbij de tekst geformuleerd is als iets dat gebeurd is. Hiermee hebben we gezocht naar een event-achtige benadering van atomic claims.
Op basis van deze weergaven hebben we het besluit Claimtype expressies worden in “state” uitgedrukt genomen.
De lineage geeft de context weer tussen command, gevolgen en claims per objecttype. Om de lineage te kunnen weergeven is iedere claim (ook annotaties) voorzien van een context-annotatie die verwijst naar het commando of het gevolg dat geleid heeft tot het vastleggen van deze claim. De context wordt in dit overzicht gerepresenteerd door de lijnen tussen de blokjes. Alle individuele context_annotaties van een gegroepeerd object zijn dus geconsolideerd in 1 verbindings-lijn.
Lineage-roles
In deze weergave worden alleen de claimroles met hun waarden getoond. (Klik op de afbeelding voor grotere weergave op mermaid.live. Daar wordt ook de mogelijkheid geboden om full-screen weer te geven en in te zoomen. )
Lineage-state
In deze weergave worden de volledige claim-expressies in de “state”- variant getoond. (Klik op de afbeelding voor grotere weergave op mermaid.live. Daar wordt ook de mogelijkheid geboden om full-screen weer te geven en in te zoomen. )
Lineage-event
In deze weergave worden de volledige claim-expressies in de “event”- variant getoond. (Klik op de afbeelding voor grotere weergave op mermaid.live. Daar wordt ook de mogelijkheid geboden om full-screen weer te geven en in te zoomen. )
Objectweergave
Het laatste inzicht dat geboden wordt naar aanleiding van deze casus is de inhoud van de objecten. In de paragraaf contentbeschrijving wordt de inhoud vande objecten vanuit een functioneel standpunt beschreven. In de paragraaf [objectweergave van WozObject-objecten](#objectweergave van WozObject-objecten) wordt gegroepeerd getoond welke claims en annotaties per WozObject zijn geregistreerd.
Contentbeschrijving
In deze beschrijvingen worden alleen de claim-rollen en de daarbij behorende waarden beschreven. De claimtype expressies zijn te vinden in de beschrijvingen van Objecttype WozObject
WozObject-1
Objecttype - Attribuut | Waarde | |
---|---|---|
WozObject | ||
- wozObjectnummer | d6b33e05-a6ea-43d7-b9d0-7380c74e3c39 | |
- statusWozObject | actief | |
- gebruikscode | boerderij | |
- functieWozObject | Bedrijfsfunctie | |
- typeWozObject | woning | |
- typeWozObjectOptioneel | woonboot | |
- aanduidingInAanbouw | niet | |
- codeGebouwdOngebouwd | gebouwd | |
- grondoppervlakte | 500 | |
- monumentaanduiding | geen monument/onbekend | |
- aanwezigheidLift | niet | |
- waardegebied | 14 | |
- indicatieLigging | 1 | |
- codeOmzetBelasting | onbelaste levering |
WozObject-2
Objecttype - Attribuut | Waarde |
---|---|
WozObject | |
- wozObjectnummer | e8d5375b-0a30-46b4-ab62-ac6b8ca10bf6 |
- statusWozObject | actief |
- gebruikscode | woning dienend tot hoofdverblijf |
- functieWozObject | Permanente bewoning |
- typeWozObject | woning |
- typeWozObjectOptioneel | |
- aanduidingInAanbouw | niet |
- codeGebouwdOngebouwd | gebouwd |
- grondoppervlakte | 389 |
- monumentaanduiding | geen monument/onbekend |
- aanwezigheidLift | niet |
- waardegebied | 14 |
- indicatieLigging | A1 |
- codeOmzetBelasting | onbelaste levering |
Objectweergave van WozObject-objecten
Dit is een weergave waarbij de claims zijn gegroepeerd op object-niveau content_claims. Daarbij worden ook alle annotaties die zijn geregistreerd getoond. Ook voor deze weergave geldt dat het image ter illustratie is en dat via de link een weergave op mermaid.live getoond kan worden waarbij ingezoomd kan worden. Zie de Readme van de poc-python repository hoe deze moet worden uitgevoerd. De output (content_claims) is vastgelegd in de poc-python/register_woz/content folder.
Onderstaand zijn de claims die n.a.v. de test vul_wozobjecten zijn vastgelegd gegroepeerd weergegeven. (Klik op de afbeelding voor grotere weergave op mermaid.live. Daar wordt ook de mogelijkheid geboden om full-screen weer te geven en in te zoomen. )