Skip to content
Matthijs Laan edited this page Jun 8, 2016 · 3 revisions

Authentieke objecten NHR en splitsing

De NHR Dataservice kan bevraagd worden op de volgende sleutels:

  • bsn
  • rsin
  • kvkNummer
  • vestigingsnummer

bsn

Verwachte productrespons: natuurlijkPersoon met volledige elementen, waaronder isEigenaarVan maatschapplijkeActiviteit. De elementen van maatschappelijkeActiviteit zijn mogelijk minder volledig dan bij het direct opvragen op basis van kvk (nog te bepalen).

rsin

Mogelijke productrespons:

  • buitenlandseVennootschap (deze heeft een rsin, naast nog buitenlands inschrijfnummer)
  • eenmanszaakMetMeerdereEigenaren
  • rechtspersoon
  • rechtspersoonInOprichting
  • samenwerkingsverband

kvkNummer

Mogelijke productrespons:

  • maatschappelijkeActiviteit
  • onderneming (?) In voorbeelden van maatschappelijkeActiviteit heeft deze een manifesteertZichAls onderneming met hetzelfde kvkNummer.

vestigingsnummer

Mogelijke productrespons:

  • commercieleVestiging
  • nietCommercieleVestiging

Meerdere authentieke objecten in enkele productrespons

Het ontvangen product bevat naast het element met de gevraagde sleutel ook gerelateerde objecten die zelf als producten kunnen worden opgevraagd. Dit is niet altijd comfort-data.

Het probleem is dat deze objecten niet compleet zijn. Dit kan ook niet, want dan zou je een enorme boom van objecten krijgen (van onderneming naar eigenaar die weer eigenaar is van andere onderneming, en die relaties weer volledig volgen...) en circulaire referenties.

Hiervoor is in de NHR Dataservice voor een bepaalde oplossing gekozen die niet erg handig is. Deze is voorzover ik weet ook niet gedocumenteerd.

De blijkbaar gekozen oplossing is dat bij een object die een relatie heeft met een ander object (zoals maatschappelijkeActiviteit en vestiging) het vestigingsobject wordt meegeleverd, inclusief een aantal eigenschappen, maar niet volledig. Zo kan een maatschappelijkeActiviteit zich manifesteren als onderneming die wordt uitgeoefend in een 0..n commercieleVestiging. Dit commercieleVestiging element is niet compleet. Echter blijkt dat een maatschappelijkeActiviteit ook geleid wordt vanuit een (niet)commercieleVestiging. In veel voorbeelden is dit exact dezelfde vestiging, maar dan completer (maar niet volledig compleet, anders krijg je circulaire relaties doordat vestiging wordtUitgeoefendDoor weer terug zal leiden naar de onderneming die zich manifesteert als de originele maatschappelijkeActiviteit).

Het kan dus voorkomen dat in een productrespons van een maatschappelijkeActiviteit een complete en incomplete vestigingen voorkomen, afhankelijk van waaruit de maatschappelijkeActiviteit wordt geleid.

Betere oplossingen zouden xlink's, alleen ID's of duidelijkheid met xsd:restrictions zijn geweest.

Keuze voor splitsen productrespons in meerdere berichten

In de BRMO wordt uitgegaan van één bericht per update van een authentiek basisregistratie-object. Dit wordt gebruikt om wijzigingen bij updates toe te passen door bij een nieuw bericht de vorige versie erbij te zoeken en zo database-inserts, updates en deletes (en archivering) door te voeren.

Om deze werkwijze te behouden zal bij het inlezen van NHR productrespons het bericht worden gesplistst. Dit houdt wel in dat er complete en incomplete versies van authentieke berichten kunnen voorkomen. Zonder meer kan dit ertoe leiden dat indien eerst een complete versie wordt verwerkt en daarna een incomplete, de ontbrekende eigenschappen worden verwijderd.

Incomplete relaties

Bij enkele eigenschappen is dit mogelijk nog overkomelijk, maar ook relaties kunnen incompleet zijn.

Splitsingsprincipe

Splitsen wordt gedaan door deze XSL stylesheet.

maatschappelijkeActiviteit

De commercieleVestiging en nietCommercieleVestiging objecten worden afgesplitst in aparte berichten. Bij de afgesplitste elementen wordt een wordtUitgeoefendDoor element toegevoegd met de onderneming met kvkNummer (commercieleVestiging) of maatschappelijkeActiviteit met kvkNummer (nietCommercieleVestiging) om de RSGB-relatie naar maatschappelijkeActiviteit te leggen.

Bij het transformeren van een maatschappelijkeActiviteit worden geen vestigingen omgezet in RSGB, omdat deze afgesplitst zijn. Onderneming, alhoewel ook als los product opvraagbaar, is altijd (?) gekoppeld aan een maatschappelijkeActiviteit met hetzelfde kvkNummer. Deze wordt voorlopig niet opgesplitst. De subelementen van heeftAlsEigenaar worden afgesplitst.

Zelf verzonnen namespace voor NHR objecten

Zie deze XSL stylesheet.

De NHR gebruikt geen unieke identifiers met namespace zoals in de BRK. Dit kan tot een clash leiden in gemeenschappelijke superclass tabellen zoals subject. Daarom wordt bijvoorbeeld een vestigingsnummer geprefixed met de zelf verzonnen namespace 'nhr.comVestg.' of 'nhr.nietComVestg', omdat in subject ook andere classes met andere keys kunnen komen. Zonder prefix zouden deze clashen. Hier wordt niet de code 31 voor gebruikt zoals in RSGB 2.2 pagina 441, een namespace is duidelijker dan een numerieke code en de BRK gebruikt al namespaces.

Een authentiek NHR-object zal dus een ander ID hebben dan hetzelfde object als comfort-data uit de BRK, ook al hebben ze hetzelfde kvk nummer. Het object kan dus ook niet geupgrade worden van comfort naar authentiek.

Het is wel mogelijk om de lijst met kvk nummers van comfort-data te gebruiken om authentieke objecten bij de NHR Dataservice op te halen en in te laden. Via een view kan bij een zakelijk recht van een kadastraal object de authentieke NHR-objecten gejoined worden.

Mapping naar RSGB

De mapping naar RSGB wordt gedaan door deze XSL stylesheet.

Maatschappelijke activiteit (maatschapp_activiteit)

RSGB 2.2 pagina 55
RSGB 3.0 pagina 128

Eigenschappen:

NHR element BRMO kolom Opmerking
registratie/datumAanvang datum_aanvang Speciale kolom
registratie/datumEinde datum_einde_geldig Speciale kolom tbv archivering
kvkNummer kvk_nummer PK
nonMailing
hoofdSbiActiviteit
nevenSbiActiviteit
incidenteelUitlenenArbeidskrachten
bezoekLocatie
postLocatie
communicatiegegevens
naam
wordtUitgeoefendIn
wordtGeleidVanuit
indicatie economisch actief RSGB 3.0, true indien manifesteertZichAls

Relaties:

NHR element BRMO kolom Opmerking
manifesteertZichAls fk_3ond_kvk_nummer ondrnmng.kvk_nummer
heeftAlsEigenaar fk_mac_as_4 subject.sc_identif (TODO)

manifesteertZichAls wordt in NHR via het OndernemingRelatieRegistratieType geregistreerd met datum aanvang en datum einde, in RSGB 2.2 niet.

Onderneming (ondrnmng)

RSGB 2.2 pagina 62
RSGB 3.0 niet aanwezig

Een onderneming kan een hoofelement zijn, maar ook worden meegeleverd als onderdeel van een maatschappelijke activiteit. Indien kvkNummer ontbreekt, leidt dit tot een transformatiefout.

Onderneming is niet aanwezig in RSGB 3.0, vervangen door incidactie economisch actief.

Eigenschappen:

NHR element BRMO kolom Opmerking
registratie/datumAanvang datum_aanvang Speciale kolom
registratie/datumEinde datum_einde_geldig Speciale kolom tbv archivering
kvkNummer kvk_nummer PK
hoofdSbiActiviteit TODO, koppeltabel maken
nevenSbiActiviteit TODO, koppeltabel maken
fulltimeWerkzamePersonen
parttimeWerkzamePersonen
totaalWerkzamePersonen

Relaties:

NHR element BRMO kolom Opmerking
fk_4mac_kvk_nummer “is voortgezet door” niet aanwezig in NHR
handeltOnder Niet in RSGB, alleen voor vestiging
wordtUitgeoefendIn vestg.fk_15ond_kvk_nummer 0..n commercieleVestiging
wordtUitgeoefendDoor maatschappelijkeActiviteit
heeftOvergenomenVan
0..n onderneming / Niet meer in RSGB 3.0
isOvergedragenAan fk_1ond_kvk_nummer 1)
  1. isOvergedragenAan wordt in NHR via het OndernemingRelatieRegistratieType geregistreerd met datum aanvang en datum einde, in RSGB 2.2 niet. In RSGB 3.0 is dit afwezig. Geen testcase voor aanwezig, alleen een kvk_nummer in de kolom zetten is niet voldoende. Dus of de foreign key verwijderen of, indien de onderneming waaraan is overgedragen in het product is opgenomen (is niet duidelijk zonder testcase), deze onderneming eerst (recursief) inserten. Voorlopig wordt dit genegeerd.

Vestiging (vestg, vestg_naam, vestg_activiteit, subject)

NHR elementen nietCommercieleVestiging en commercieleVestiging.

Eigenschappen subject:

NHR element BRMO kolom Opmerking
vestigingsnummer identif PK, extra namespace prefix
clazz waarde 'VESTIGING'
typering waarde 'VESTIGING'
bezoekLocatie/binnenlandsAdres/ adres_binnenland Alleen de waarde van volledigAdres wordt ingevuld indien aanwezig. Geen losse elementen of BAG id's
bezoekLocatie/buitenlandsAdres adres_buitenland Alleen de waarde van volledigAdres wordt ingevuld indien aanwezig.
naam Zie vestg.verkorte_naam
communicatiegegevens emailadres Alleen het eerste emailadres
communicatiegegevens telefoonnummer Alleen het eerste telefoonnummer
communicatiegegevens fax_nummer Alleen het eerste faxnummer
communicatiegegevens website_url Alleen de eerste domeinNaam
postLocatie pa_postadres_* Alleen ingevuld indien postbusnummer element aanwezig is.
postLocatie//bagId fk_15aoa_identif Alleen binnenlands adres
postLocatie/buitenlandsAdres Ontbreekt

Eigenschappen vestg:

NHR element BRMO kolom Opmerking
registratie/datumAanvang datum_aanvang Speciale kolom, mogelijk leeg
registratie/datumEinde datum_einde_geldig Speciale kolom, geen archivering
vestigingsnummer sc_identif PK, extra namespace prefix
datumVoortzetting datum_voortzetting
nietCommercieleVestiging typering 'Niet-commerciele vestiging'
commercieleVestiging typering 'Commerciele vestiging'
activiteiten/omschrijving activiteit_omschr
activiteiten/import
activiteiten/export
activiteiten/hoofdSbiActiviteit TODO, koppeltabel maken
activiteiten/sbiActiviteit TODO, koppeltabel maken
eersteHandelsnaam Geen testcase
verkorte_naam Eerste 45 tekens van eersteHandelsnaam (indien aanwezig) of eerste handeltOnder
handeltOnder vestg_naam.naam 0..n (BRMO 500 lang, NHR 625). In BRMO geen volgorde, is dit belangrijk?
fulltimeWerkzamePersonen fulltime_werkzame_mannen 1)
fulltime_werkzame_vrouwen 1)
parttimeWerkzamePersonen parttime_werkzame_mannen 1)
parttime_werkzame_vrouwen 1)
totaalWerkzamePersonen fulltime_werkzame_mannen 1)
bezoekLocatie/toevoegingAdres toevoeging_adres
ookGenoemd Niet in RSGB
  1. In het NHR wordt aantal werkzame personen niet uitgesplitst in mannen en vrouwen zoals in RSGB, daarom worden alleen de mannelijke kolommen gevuld. Indien fulltimeWerkzamePersonen en parttimeWerkzamePersonen beide aanwezig zijn worden de fulltime_werkzame_mannen en parttime_werkzame_mannen kolommen gevuld, indien totaalWerkzamePersonen aanwezig is wordt alleen fulltime_werkzame_mannen gevuld.

Relaties vestiging:

NHR element BRMO kolom Opmerking
wordtUitgeoefendDoor fk_15ond_kvk_nummer Foreign key naar onderneming, 1)
fk_16tgo_identif Nee, 2)
fk_17mac_kvk_nummer
fk_18ves_sc_identif TODO 'is samengevoegd met'
fk_19mac_kvk_nummer TODO 'is hoofdvestiging van' (wordtGeleidVanuit)
activiteit 3)
isBijeengevoegdMet TODO Wat is het verschil met samengevoegd?
  1. fk_15ond_kvk_nummer wordt alleen gehaald uit parent element van vestiging, niet uit wordtUitgeoefendDoor. NHR berichten met Vestiging als hoofdelement van inhoud worden dus niet ondersteund.
  2. 'heeft hoofdlocatie in of op' als koppeling naar een BAG benoemd_obj is leuk bedacht maar kan niet worden gevuld vanuit de NHR gegevenscatalogus
  3. Koppeltabel vestg_activiteit(fk_vestg_nummer, fk_sbi_activiteit_code, indicatie_hoofdactiviteit)
Clone this wiki locally