Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Organisatienaam is een redundant gegeven #112

Open
sjaakd opened this issue Jun 10, 2020 · 19 comments
Open

Organisatienaam is een redundant gegeven #112

sjaakd opened this issue Jun 10, 2020 · 19 comments

Comments

@sjaakd
Copy link

sjaakd commented Jun 10, 2020

Type issue

Implementatie

Waar

5.3.7.2 organisatienaam

Samenvatting

Het expliciet opgeven van een organisatie naam leid tot inconsistente data in de toekomst en is in strijd met de huidige architectuur.

  • Op dit moment wordt een KvK / ECRN gekoppeld met een organisatie in het organisatie register van de BRO-LV. Dit wordt gebruikt om de rol (wat is deze trouwens, we hebben: bronhouder, producent, leverancier ) af te dwingen in de controles. De naam / contact gegevens worden gebruikt in de LV voor registerbeheer.
  • In de toekomst toekomst is een koppeling naar het HRN voorzien voor synchronisatie.

Oplossingsrichting

Werkafspraak: maak de organisatie naam optioneel en verwijder uit de volgende versie. Een identificerend gegeven is voldoende. Een 2e zorgt voor redundantie en foutgevoeligheid.

@AnnitaVijverberg
Copy link
Collaborator

WaterML gebruikt hier het standaard OGC type CI_ResponsibleParty daarin is volgens mij verplciht dat je minimaal een van de drie attributen gebruikt: individualName, organisationName of positionName

zie ook bijv http://wiki.esipfed.org/index.php/CI_ResponsibleParty

@sjaakd
Copy link
Author

sjaakd commented Jun 11, 2020

Dat kan kloppen.. Maar dat kan nooit een reden zijn om architectuurprincipes te schenden. We hebben te maken met een uitwisselformaat.

Om een voorbeeld te noemen: individualName zit kennelijk ook in dit uitwisselformaat, maar NL wetgeving stelt ook dat je uit privacy overweging heel voorzichtig moet zijn met namen. Een uitwisselformaat kan niet leidend zijn voor je architectuur.

@AnnitaVijverberg
Copy link
Collaborator

We hebben ervoor gekozen een profiel te maken op WaterML en dan was de consequentie de organisatienaam op te nemen. Ik snap je bezwaren, kan me daar alles bij voorstellen.
Het is denk ik niet aan mij om te beslissen over het wel/niet afwijken van de gekozen standaard. Lijkt me het beste als je dit met Frank bespreekt.

@fterpstra
Copy link
Contributor

fterpstra commented Jun 11, 2020 via email

@sjaakd
Copy link
Author

sjaakd commented Jun 11, 2020

De organisatie naam is ook (terecht) niet als authentiek aangemerkt in de catalogus.

In de LV is functionaliteit voorzien (voorheen organisatie en volmachten register) om namen en organisaties aan elkaar te koppelen. Op den duur zou dit gelinked kunnen worden aan het HR of de europese counterpart.

Voor zou ik willen voorstellen de naam voorlopig weg te laten dit is volgens het originele md schema mogelijk:
<xs:element name="organisationName" type="gco:CharacterString_PropertyType" minOccurs="0"/>
en de limitatie in het bro profiel naar minOccurs = "1" aan te passen terug naar minOccurs = "0".

Voor de duidelijkheid: het huidige bro profiel gmd-profile.xsd:

  <complexType name="CI_ResponsibleParty_PropertyType">
    <!-- BRO changed sequence minOccurs from 0 to 1 -->
    <sequence minOccurs="1">
      <element ref="gmd:CI_ResponsibleParty"/>
    </sequence>
    <!-- BRO commented out:
    <attributeGroup ref="gco:ObjectReference"/>
    -->
    <attribute ref="gco:nilReason"/>
  </complexType>

Waarschijnlijk ik er overheen, maar ik vind in "OGC 10-126r4" (water ML 2.0) ook geen aanleiding om dit te doen.

@AnnitaVijverberg
Copy link
Collaborator

Dit is wat je meestal terug vindt in documentatie:
CI_ResponsibleParty

  • individualName :CharacterString [0..1]
  • organisationName :CharacterString [0..1]
  • positionName :CharacterString [0..1]
  • contactInfo :CI_Contact [0..1]
  • role :CI_RoleCode [1]
    Maar ik vond ook dat er een business rule zit op de eerste drie attributen: dat er altijd minimaal 1 van die drie moet voorkomen.

Maar dat terzijde, voor nu kan ik wel akkoord gaan met het voorstel van Sjaak.

@sjaakd
Copy link
Author

sjaakd commented Jun 13, 2020

Ah.. Ik denk dat de LV terughoudend moet zijn om namen aan (kvk / ecrn) nummers te koppelen. Dat is niet de taak van de LV maar o.a. van het HRN. Ik ben bang dat we een hele can-of-worms opentrekken als wij die koppeling ook gaan leggen. Overigens, bij andere objecten zijn we ook terughoudend met het verstrekken van kvk's aan de uitgifte kant. Alleen aanleverende partijen en bronhouders hebben inzage. Er is wel een onderscheid of deze partij een bedrijf is of bevoegd gezag. Misschien dat de keten architect hier ook eens naar moet kijken.

@sjaakd
Copy link
Author

sjaakd commented Jun 22, 2020

Maar dat terzijde, voor nu kan ik wel akkoord gaan met het voorstel van Sjaak.

Akkoord. We hebben een aantal keuzes hierin:

  1. De aangeleverde waarde voor organisatienaam negeren (niet opslaan)
  2. Het aangeleverde waarde voor organisatienaam afwijzen (onder vermelding van dit issue?)
  3. De aangeleverde waarde opslaan, maar niet uitgeven
  4. De aangeleverde waarde opslaan en ook uitgeven
  5. ?

Mijn voorkeur gaat uit naar 2.
Voor uitgifte moeten we denk ik goed kijken welke gegevens we mogen uitgeven. Tot nu toe zijn dat slechts kvk's en alleen aan dataleverancier en bronhouder (afhankelijk van het type kvk)

@AnnitaVijverberg
Copy link
Collaborator

AnnitaVijverberg commented Jun 22, 2020

De software van dataleveranciers en gebruikers die gebaseerd op WaterML zal een organisatienaam aanleveren respectivelijk verwachten die uitgeleverd te krijgen.

Han had ook nog wat gevonden en ik weet niet of jij, Sjaak, dit ook hebt gezien:

Ik heb nog eens naar de gmd:Metadata specificaties gekeken.
Het gegeven/element contact is verplicht.
Het type van contact is CI_ResponsibleParty
Het type CI_ResponsibleParty heeft een verplicht element organisationName.
Maar: de organisationName mag leeg zijn.

Zie onderstaande voorbeeld:

          <gmd:contact>
            <gmd:CI_ResponsibleParty>
              <gmd:organisationName>
                <!-- empty string represents void value -->
                <gco:CharacterString/>
              </gmd:organisationName>
              <gmd:role>
                <gmd:CI_RoleCode
                        codeList="urn:ISO:19115:CI_RoleCode"
                       codeListValue="principalInvestigator">principalInvestigator</gmd:CI_RoleCode>
              </gmd:role>
            </gmd:CI_ResponsibleParty>
          </gmd:contact>

Daarmee wordt dit hele stuk WaterML een stukje hard-gecodeerde tekst.

Een lege string is mogelijk, qua XSD’s. En ik ben nergens in de WaterML of Metadata specificaties een requirement tegengekomen dat de naam uit minstens N tekens moet bestaan. Dit is natuurlijk niet de intentie, want dan had WaterML de naam ook wel optioneel kunnen maken. Maar het lost wel het probleem op.

Ik kan niet helemaal overzien wat dit betekent voor dataleveranciers die, op basis van hun WaterML software, wel een organisatienaam aanleveren.

@AnnitaVijverberg
Copy link
Collaborator

Sjaak, betekent afwijzen in jou voorstel dat de dataleverancier een meding krijgt dat zijn aanlevering niet verwerkt kan worden? Dat hij het opnieuw moet leveren?
Dat zou betekenen dat mensen met 'WaterML software' mogelijk een probleem hebben.
zie ook mijn vorige post, dat lijkt me een betere oplossing dan afwijzen.

@sjaakd
Copy link
Author

sjaakd commented Jun 25, 2020

Sjaak, betekent afwijzen in jou voorstel dat de dataleverancier een meding krijgt dat zijn aanlevering niet verwerkt kan worden? Dat hij het opnieuw moet leveren?
Dat zou betekenen dat mensen met 'WaterML software' mogelijk een probleem hebben.
zie ook mijn vorige post, dat lijkt me een betere oplossing dan afwijzen.

Dat is inderdaad het idee en het meest duidelijke.

Negeren is een 2e optie, maar dan kan er een andere organisatie naam uit de uitgifte komen dan aangeleverd. Is dat wenselijk?

Overigens vind ik het zeer vreemd dat een waterML standaard dit dicteert en dat wij als BRO hier geen verdere afweging inmaken.

Ik weet ook niet of er in ons huidige werkveld maar één leverancier is die waterML (direct en op deze manier gebruikt en dan ook nog eens GLD implementeert). Ik denk dat daar echt een foute aanname achter zit wat client software ontwikkeling is en betekent. De BRO gaat nooit plug-and-play zijn voor aansluitende partijen omdat je in het koppelvlak waterML gebruikt. Er zullen altijd aanpassingen moeten gebeuren. Ik denk dat voor de meeste partijen momenteel dit zelfs het ontwikkelen van dergelijke software is.

@AnnitaVijverberg
Copy link
Collaborator

Voor nu wat mij betreft akkoord, dan moeten we adv ervaringen bij een volgende versie bekijken wat we hier uiteindelijk mee doen.

@erikvanderzee
Copy link

WaterML is tot stand gekomen in een internationale context (OGC leden); veel landen hebben geen "Stelsel van Basisregistraties", dat is waarom "organisatienaam" in die context is het wellicht logisch dit attribuut op te nemen in de WaterML standaard.

In Nederland hebben we echter wél een Stelsel van Basisregistraties, en ik denk dat voor de Nederlandse situatie het Stelsel van Basisregistraties leidend zou moeten zijn boven WaterML. In het stelsel geldt de "data bij de bron" gedachte, oftewel GEEN duplicatie van objecten en attributen en VERWIJZINGEN naar de bron op basis van unieke IDs (voor bedrijven verwijzingen vanuit registraties naar het NHR en mbv OID/KvK nummers). Dat "data bij de bron" architectuurprincipe is vrij essentieel, we moeten geen data dupliceren in de BRO die ook al in een bron register is opgenomen.

Ergo, in alle registraties behalve NHR worden in principe alléén KVK nummers opgenomen, geen overige attributen! Bedrijfsnaam wordt bijgehouden in het NHR, en kan bij het NHR worden opgevraagd op basis van het KvK nummer.

Dus ik zit op jouw lijn Sjaak, dat we dit gegeven moeten negeren, alleen het KVK opnemen in de BRO. Voor WaterML is dit attribuut echter toch aanwezig..., dus we kunnen of niets of iets invullen:
(1) leeg laten (dat zou dan in de BRO standaard opgenomen moeten worden, want we willen voor dit attribuut geen waarde (bedrijfsnaam) in de BRO hebben) of
(2) bij het veld bedrijfsnaam óók een KVK nummer invullen (dat zou dan in de BRO standaard opgenomen moeten worden); beetje gek maar houdt het stelsel wel consistent.

Ad (1) Bij uitlevering kan evt (als we het veld bij inname leeg laten) vanuit de uitlever service on the fly een call worden gedaan naar het NHR om de bedrijfsnaam op te halen en deze dan on the fly te includen in het veld. Dat creëert echter wel een sterke afhankelijkheid van het NHR, en is een beetje een ongebruikelijke manier van doen... We kunnen die taak ook gewoon bij de afnemer leggen natuurlijk, maar dan zadel je die op met werk (men levert een bedrijfsnaam aan, die wordt er door de BRO afgesloopt, en bij afname moet je em er dan zelf weer aanplakken...)
Ad (2) Het staat een afnemer NA afname uit de BRO vrij om een bedrijfsnaam uit het NHR te halen en daarmee de KVK waarde van het attribuut Bedrijfsnaam te overschrijven... maar het lijkt me een wat vreemde situatie maar het kan wel.

Mijn eigen gevoel zegt nu het veld leeg te laten. Het veld bij uitgifte invullen obv een call naar het NHR, zou kunnen... wel zo prettig voor afnemers.

In geval van invullen van een KVK nummer bij bedrijfsnaam:

  • Voorafgaand aan levering aan de BRO kan de bedrijfsnaam ("fugro") door aanleverende "grondwatersoftware" van een dataleverancier worden vervangen door een KVK nummer [via aanroep NHR]
  • Na afname kan een KVK nummer bedrijfsnaam door afnemende "grondwatersoftware" van een dataleverancier weer worden vervangen door een bedrijfsnaam ("fugro") [via aanroep NHR]

Op deze manier zit in de BRO bij bedrijfsnaam een KVK nummer. Staat ie er dus 2x in... niet optimaal (onnodige duplicatie)
bedrijfsID = KVKnummer
bedrijfsnaam = KVKnummer

Ik denk dus dat leeglaten de betere optie is, of het attribuut bedrijfsnaam verwijderen uit WaterML... maar dan ben je niet meer compliant met deze standaard verwacht ik... Is "Bedrijfsnaam" in WaterML trouwens een verplicht veld?

@fterpstra
Copy link
Contributor

fterpstra commented Jun 26, 2020 via email

@sjaakd
Copy link
Author

sjaakd commented Jun 27, 2020

Misschien kunnen we de URI naar de bedrijfsnaam resource in de KVK API erin zetten? dat gaat iets verder dan twee keer een KvK leveren en maakt het ophalen door de afnemer wel

Dan maak je afhankelijk van de API die, mogelijkerwijs veranderlijk is in de toekomst. Voor ECRN's heb je nog steeds geen oplossing.

Een lege string aanleveren kan, zoals eerder besproken, maar de vraag is wat doe je als er geen lege String wordt aangeleverd?

  1. verwerpen?
  2. opslaan?
  3. opslaan en ook weer uitgeven?

Dus..

  1. lijkt me niet onmogelijk: maar dan hebben we direct een werkafspraak nodig
  2. en 3. lijken in lijn met wat we zouden moeten doen als basisregistratie (data uitgeven zoals ontvangen) , maar leveren wellicht complicaties voor de toekomst.

Met betrekking to het punt van Erik:

In het stelsel geldt de "data bij de bron" gedachte, oftewel GEEN duplicatie van objecten en attributen en VERWIJZINGEN naar de bron op basis van unieke IDs (voor bedrijven verwijzingen vanuit registraties naar het NHR en mbv OID/KvK nummers)

Ik stel mezelf voor dat het ophalen van een naam een typische functionaliteit is van de client software. We moeten vermijden dat we de rol in nemen die ook door de software leveranciers als 'feature' of extra kan worden ingevuld.

@sjaakd
Copy link
Author

sjaakd commented Jul 1, 2020

Ik moet nu een keuze maken in de afronding van GLD.

De keuze is als volgt:

  • Bij het aanleveren van een niet lege organisatienaam volgt er een brondocument fout met een beschrijving:
    Uitvoerder.organisatienaam (Operator.name) waarde is niet correct: moet gelijk zijn aan leeg.
  • Aan jullie om hier een werk-afspraak op te definiëren.

@erikvanderzee
Copy link

erikvanderzee commented Jul 1, 2020 via email

@AnnitaVijverberg
Copy link
Collaborator

Wat mij betreft akkoord Sjaak

@fterpstra
Copy link
Contributor

fterpstra commented Jul 2, 2020 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants