Open ArjanLoeffen opened 3 months ago
Klopt precies!
@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: 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.
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.
@ArjanLoeffen In welke Imvertor versie is dit probleem opgelost?
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.
Op basis van jouw eerste bericht bij dit issue, meende ik dat het zou worden:
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.
Op 13 dec 2023 is de regel toegevoegd voor MIM 1.1 (en hoger) modellen. Zie https://github.com/Imvertor/Imvertor-Maven/issues/428#issuecomment-1854301033 Een week geleden is de regel fijngeslepen, zoals jij aanhaalt in je commentaar. Die implementatie zit in Nightly build [edit].
Excuses, nee, die zit nog niet in 4.1, maar in de nightly build.
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?
Hoi Arjan,
Het is niet dat we vanuit BRO deze controle niet willen! Dus graag niet op 'no' zetten, maar op 'yes'.
Maar zoals gecommuniceerd m.b.t. SLD: het werkt nog niet goed in Imvertor.
Nog wel de vraag: waar ergens stel je deze feature in (graag verwijzing naar wrs. bestand op GitHub)?
Groeten, Jacob
Van: Arjan Loeffen @.> Verzonden: woensdag 21 augustus 2024 13:55 Aan: Imvertor/Imvertor-Maven @.> CC: Jacob Vos @.>; Mention @.> Onderwerp: Re: [Imvertor/Imvertor-Maven] Unieke namen voor relaties en -rollen beter valideren (Issue #523)
Ik heb een feature opgenomen voor een metamodel, waarin je aangeeft dat de namen van relaties of rollen uniek moeten zijn of niet:
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'.
@WijnandIHWhttps://github.com/WijnandIHW @jacobvosimpronotionhttps://github.com/jacobvosimpronotion Is dit voor jullie voldoende?
— Reply to this email directly, view it on GitHubhttps://github.com/Imvertor/Imvertor-Maven/issues/523#issuecomment-2301870388, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQ2QU2TUVTZHL3MYRA56XZ3ZSR54PAVCNFSM6AAAAABMOL27SSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBRHA3TAMZYHA. You are receiving this because you were mentioned.
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.
Nee, in SLD staat dat relatierol leidend is. Je stuurde daar zelf net een afbeelding van:
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).
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.
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.
De aanpak moet zijn:
Zie https://docs.geostandaarden.nl/mim/mim/#uniekheid-van-namen-van-modelelementen dat dus nog achterloopt.