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

Unieke namen voor relaties en -rollen beter valideren #523

Open
ArjanLoeffen opened this issue Aug 13, 2024 · 16 comments
Open

Unieke namen voor relaties en -rollen beter valideren #523

ArjanLoeffen opened this issue Aug 13, 2024 · 16 comments

Comments

@ArjanLoeffen
Copy link
Contributor

ArjanLoeffen commented Aug 13, 2024

De aanpak moet zijn:

  • relatiesoort moet unieke naam hebben binnen het objecttype wanneer relatiesoort leidend
  • naam relatierol alleen wanneer relatierol leidend

Zie https://docs.geostandaarden.nl/mim/mim/#uniekheid-van-namen-van-modelelementen dat dus nog achterloopt.

@PalmJanssen
Copy link
Collaborator

Klopt precies!

@jacobvosimpronotion
Copy link
Collaborator

@PalmJanssen: Wat betreft de vereiste uniciteiten voor relatiesoort en relatierol (afhankelijk van wat leidend is): ik zou graag willen weten waarop de keuze voor deze uniciteiten is gebaseerd.

Daarnaast: nu het niet in MIM 1.2 staat, lijkt me dat voor dit - best ingrijpende - besluit eerst het werkveld geconsulteerd moet worden.

Bij 'relatiesoort leidend' zou ik als regel hanteren dat de combinatie van relatiebenaming & doelobjecttype uniek moet zijn.

@PalmJanssen
Copy link
Collaborator

@PalmJanssen: Wat betreft de vereiste uniciteiten voor relatiesoort en relatierol (afhankelijk van wat leidend is): ik zou graag willen weten waarop de keuze voor deze uniciteiten is gebaseerd.

Dit komt uit algemene object-orientatie. Naam van een kenmerk moet uniek zijn binnen de context (objecttype) waar het kenmerk bij hoort. Als het niet uniek is kan je er ook niet over praten. Bijvoorbeeld, stel een objecttype Persoon heeft twee aparte attributen 'naam'. Een keer voor het invullen van de voornaam, een keer voor de achternaam. Dat lukt natuurlijk niet in de gegevensdefinitie. Vandaar twee unieke namen voor deze attributen. In dit geval 'voornaam' en ' achternaam'. Hetzelfde geldt voor relatie(naam) of relatie(rol). Het zijn immers ook kenmerken.

Daarnaast: nu het niet in MIM 1.2 staat, lijkt me dat voor dit - best ingrijpende - besluit eerst het werkveld geconsulteerd moet worden.

Dit staat ook in alle MIM versies. Kenmerken moeten binnen de context van objecttype uniek benoemd zijn. Je moet dan wel doorhebben dat als 'relatierol = leidend' dat dan de relatienaam geen kenmerk meer is en dus ook deze regel niet voor geldt. BRO doet dat heel goed.

Bij 'relatiesoort leidend' zou ik als regel hanteren dat de combinatie van relatiebenaming & doelobjecttype uniek moet zijn.

Deze regel is er niet en niet nodig. Het gaat om de kenmerken. Deze combinatie is geen kenmerk.

@WijnandIHW
Copy link
Contributor

Bij het modelleren van objecten (stereotype: Objecttype) en elementen van objecttype lijkt het me niet meer dan logisch om unieke namen te gebruiken. Dat wordt ook afgedwongen in de modelleertooling (EA). Bij (association-)relaties ligt dat in de praktijk anders. 

@PalmJanssen Hetzelfde geldt voor relatie(naam) of relatie(rol). Het zijn immers ook kenmerken.

Waar zijn relatienaam en -rol kenmerken van? Dat is bij mijn weten niet van een van de twee objecten waartussen de relatie ligt, maar van de relatie zelf. De relatie wordt niet gestereotypeerd als objecttype en hoeft dan ook niet te voldoen aan de regel: Naam van een kenmerk moet uniek zijn binnen de context (objecttype) waar het kenmerk bij hoort. Het is dan ook niet meer dan logisch dat de modelleertooling het niet afdwingt. 

@PalmJanssen Je moet dan wel doorhebben dat als 'relatierol = leidend' dat dan de relatienaam geen kenmerk meer is en dus ook deze regel niet voor geldt.

Het zou fijn zijn als dit 'doorhebben' ook in de MIM-catalogus zo ondubbelzinnig mogelijk beschreven is. Misschien ook met het advies dat als je kiest voor niet unieke relatienamen, je automatisch 'kiest' om relatierol leidend te laten zijn.  

Of misschien onderscheid maken in de toepassing van de uniciteits-regels tussen een conceptueel model in natuurlijke taal en een logisch model in formelere taal.

@jacobvosimpronotion
Copy link
Collaborator

@ArjanLoeffen In welke Imvertor versie is dit probleem opgelost?

@ArjanLoeffen
Copy link
Contributor Author

De regel is nog steeds van kracht. Er zal een property o.i.d. kunnen komen die stelt dat deze eis niet geldt voor het betreffende model. Maar die er is nog niet en we willen het kind niet met het badwater weggooien. Er moet een duidelijk besluit komen, een regel die we kunnen volgen.
Enig overleg is wel gewenst.

@jacobvosimpronotion
Copy link
Collaborator

Op basis van jouw eerste bericht bij dit issue, meende ik dat het zou worden:

  • relatiesoort moet unieke naam hebben binnen het objecttype wanneer voor het model geldt: relatiemodelleringstype = 'relatiesoort leidend'
  • relatierol moet unieke naam hebben binnen het objecttype wanneer voor het model geldt: relatiemodelleringstype = 'relatierol leidend'

Wat ik wil weten vanaf welke Imvertor versie dit is geïmplementeerd.

Bedoel je nu dat er misschien nog een mogelijkheid komt om deze rules te negeren bij een bepaald model? Dat was op zich niet mijn vraag.

@ArjanLoeffen
Copy link
Contributor Author

ArjanLoeffen commented Aug 21, 2024

Op 13 dec 2023 is de regel toegevoegd voor MIM 1.1 (en hoger) modellen. Zie #428 (comment)
Een week geleden is de regel fijngeslepen, zoals jij aanhaalt in je commentaar.
Die implementatie zit in Nightly build [edit].

@ArjanLoeffen
Copy link
Contributor Author

ArjanLoeffen commented Aug 21, 2024

Excuses, nee, die zit nog niet in 4.1, maar in de nightly build.

@ArjanLoeffen
Copy link
Contributor Author

Ik heb een feature opgenomen voor een metamodel, waarin je aangeeft dat de namen van relaties of rollen uniek moeten zijn of niet:

<feature name="unique-normalized-association-names">yes</feature>

Dit betekent: namen van relaties of rollen moeten uniek zijn, afhankelijk van gekozen relatiemodelleringstype. Als 'no', dan deze test niet uitvoeren.
Dit geldt o.a. voor metamodellen MIM 1.1 en hoger. Moeten bepalen of dit ook voor MBG geldt.

Voor BRO en IHW zet ik deze waarde op 'no'.

@WijnandIHW @jacobvosimpronotion Is dit voor jullie voldoende?

@jacobvosimpronotion
Copy link
Collaborator

jacobvosimpronotion commented Aug 21, 2024 via email

ArjanLoeffen pushed a commit that referenced this issue Aug 21, 2024
@ArjanLoeffen
Copy link
Contributor Author

ArjanLoeffen commented Aug 21, 2024

In SLD staat dat het MIM model Relatiesoort leidend is. De validatie verloopt in dat geval goed, nietwaar? Het moet relatierol leidend zijn, neem ik aan.
Zie https://github.com/Imvertor/Imvertor-Maven/blob/77b06e79e69de022429ac82bbdb87939f34be3b7/src/main/resources/input/BRO/cfg/metamodels/BRO-MIM-1-CONCEPTUAL.xml#L48C44-L48C45 voor de locatie van de feature. Dit moet dus wrsch alsnog "yes" worden.

@jacobvosimpronotion
Copy link
Collaborator

Nee, in SLD staat dat relatierol leidend is. Je stuurde daar zelf net een afbeelding van:

afbeelding

@jacobvosimpronotion
Copy link
Collaborator

Zie https://github.com/Imvertor/Imvertor-Maven/blob/77b06e79e69de022429ac82bbdb87939f34be3b7/src/main/resources/input/BRO/cfg/metamodels/BRO-MIM-1-CONCEPTUAL.xml#L48C44-L48C45 voor de locatie van de feature. Dit moet dus wrsch alsnog "yes" worden.

Ja, inderdaad graag aanpassen (ik heb daar geen rechten).

ArjanLoeffen pushed a commit that referenced this issue Aug 21, 2024
De namen van rollen moeten uniek zijn.

Zie #523

Configuratie aanpassing.
@ArjanLoeffen
Copy link
Contributor Author

Ik zie dat er een bug zat in het uitlezen van namen van rollen. Dat is nu hersteld.
Ook is de feature unique-normalized-association-names op "yes" gezet voor BRO.

Morgen beschikbaar in Development = Nightly-build.

@jacobvosimpronotion
Copy link
Collaborator

Zojuist getest met nightly build. Aangeboden: SLD, waarbij relatierol leidend is. Helaas toch nog de foutmelding "Several properties with same name found: "omvat"". En de naam 'omvat' is de naam van een relatiesoort.

Zie job 2024-08-23-06-34-46-410.

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

No branches or pull requests

4 participants