-
Notifications
You must be signed in to change notification settings - Fork 15
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
Ondersteunen aspect min/max voor getallen #109
Comments
Iets meer info? |
Zie #72. Het gaat er in dit geval om dat aan de constraints de mogelijkheid wordt toegevoegd om een minimum of maximum waarde te kunnen neerzetten, bijvoorbeeld: waarde moet liggen tussen 0 en 5. |
Voorstel: opnemen zoals voorgesteld. |
Ja, is eerder besproken als wens. Zodra iemand concreet een informatiemodel wilt maken waarin dit nodig is, gingen we deze toevoegen. Als je een praktijk voorbeeld noemt dan nemen we die ook op, dan kunnen mensen naar jouw informatiemodel gaan kijken hoe dat daar gedaan is. |
Nagevraagd. Voor de BAG en voor de BRK hebben wij geen voorbeelden en dus ook niet zo zeer een voorstel hoe dit te specificeren. Wellicht dat de BRO of een model van TNO vaker met dit bijltje heeft gehakt? Zo nee, dan zou ik zeggen, geef een concreet voorbeeld en doe een voorstel voor de uitwerking. Er is even over nagedacht. Wat meespeelt: De kern van een informatiemodel is om de betekenis en de structuur van de informatie te specificeren. Een definitie van een gegevens, of het een String is, of de structuur van de String moet voldoen aan een patroon. Een minimum waarde zit in een grijs gebied. Dat geeft eigenlijk meer een bereik aan aan waaraan de data moet voldoen. Dat is niet zozeer betekenis of structuur, maar een waardebereik. Daarom een grijs gebied. Een bedrijfsregel: verzoeken mogen tot 18u worden aangeleverd, of de geometrie van dit object moet liggen binnen Nederland, of binnen een andere geometrie ... of de geometrie moet voldoen aan srs 28992 etc ... zijn ook zaken die niet bij de kern van een informatiemodel horen, en die we in feite ook niet modelleren. We bieden hiervoor de "catch all extra": een constrain language, OCL. Een minimum waarde is ook vrij complex, want voor een String moet dit anders gespecificeerd worden dan voor een Integer of een Decimal of een Date, of voor een zelf gedefinieerd datatype. waarbij de waarde zelf ook weer soms dus een String, Integer, Decimal of Date is. Ik ben hier dan ook vrij terughoudend in. Het lijkt veel werk om iets te specificeren wat vrij diep in de implementatie zit (en waar al een andere mogelijkheid voor is: constraint). De intentie van het informatiemodel is in ieder geval niet de volledige mogelijkheden van alle technische formaten te ondersteunen (XSD, SHACL, JSON schema enz). Ben benieuwd hoe andere hier tegen aankijken. |
Voorstel voor MIM 1.1. - nog niet opnemen, opnemen zodra het nodig is en goed uitgewerkt is. Oftewel, MIM 1.11 of zo. |
Hierbij zit ook de trade off: moet alles wat je in XSD kan ook in UML gemodelleerd worden? Er is al OCL. Er is al reguliere expressie/patroon. Is het dan nog nodig om min/max te doen? Let a.u.b. wel op dat we in MIM niet twee verschillende modelleringen hebben voor hetzelfde. Dat willen we namelijk uitdrukkelijk niet. |
Ik zou dit onderbrengen bij 'Kardinaliteit'. Daar heb je nu de mogelijke waarden: 1, 1.., 0..1 en 0... Dus in 2.8.2.12 de tekst onder toelichting aanvullen met: Een goed voorbeeld ontbreekt nog. Op MIM-2 niveau zou ik dit interpreteren als een uitspraak over de werkelijkheid. Voor een (natuurlijk) Persoon heeft geboorteDatum kardinaliteit 1. (iedere persoon heeft precies één geboortedatum). |
Lever drie voorbeelden: |
Ik had het mis. In SHACL wordt dit wel ondersteund. Er wordt dezelfde terminologie gebruikt als in XML Schema.
Dit aspect kan in XML Schema voorkomen op:
In SHACL worden deze aspecten met dezelfde term geduid. Bijv. als je wilt uitdrukken dat leeftijd >= 10 en <= 21 moet zijn:
In theorie belemmert SHACL niet op welke datatypes je dit zou kunnen gebruiken. In de praktijk gebruiken alle SHACL implementaties onder water SPARQL. In SPARQL kan dit standaard ondersteund worden voor:
|
@wilkoquak weet jij een ISO standaard hiervoor analoog aan GM interfaces zoals Surface en GML/GeoJSON? Of is het echt: zie XML (XML voel te technisch)? |
Ik kon het niet laten om het even op te zoeken. Ik zat nog te denken aan de interval notatie van de wiskunde:
Dat kun je heel mooi mappen op:
Meerdere bereiken kun je dan scheiden met een puntkomma dus: [2,4];[6-8] |
Ik heb nog geen ISO standaard gevonden die hier iets over zegt. Ik moet zeggen dat ik zelf wel blij ben met de manier waarop het semantisch in Shacl en XML-Schema zit. Qua syntax vind ik de wiskundige notatie zoals hierboven ook wel mooi! |
Nog te doen:
VoorstelToevoeging aan 2.8.2 Specificatie metagegevens modelelementen Metagegeven Minimumwaarde inclusief
Toelichting Bijvoorbeeld de minimale waarde voor een geldigheidsdatum. Toepassing Gebruik op attribuutsoorten en data elementen met een primitief datatype van het type:
Een modelelement mag maar één voorkomen van metagegeven Minimumwaarde inclusief of Minimumwaarde exclusief hebben. Metagegeven Minimumwaarde exclusief
Toelichting Bijvoorbeeld de minimale inhoud van een bouwwerk. Toepassing Gebruik op attribuutsoorten en data elementen met een primitief datatype van het type:
Een modelelement mag maar één voorkomen van metagegeven Minimumwaarde inclusief of Minimumwaarde exclusief hebben. Metagegeven Maximumwaarde inclusief
Toelichting Bijvoorbeeld de minimale waarde voor een geldigheidsdatum. Toepassing Gebruik op attribuutsoorten en data elementen met een primitief datatype van het type:
Een modelelement mag maar één voorkomen van metagegeven Maximumwaarde inclusief of Maximumwaarde exclusief hebben. Metagegeven Maximumwaarde exclusiefBijvoorbeeld de maximale waarde voor de leeftijd van een persoon.
Toelichting Bijvoorbeeld de maximale waarde voor een geldigheidsdatum. Toepassing Gebruik op attribuutsoorten en data elementen met een primitief datatype van het type:
Een modelelement mag maar één voorkomen van metagegeven Maximumwaarde inclusief of Maximumwaarde exclusief hebben. Toevoeging aan 3.2.1 Modellering metagegevens voor objecten en attributen in UML Bij Specificatie voor «Attribuutsoort»
3.2.4 Specificatie metagegevens voor datatypen Toevoeging aan 3.2.4 Specificatie metagegevens voor datatypen Bij Specificatie voor «Attribuutsoort»
Toevoeging aan 6.4.2 Gebruikte functies:
**Toevoeging aan 4.3 Nadere specificatie metagegevens in LD
Toevoeging aan 4.3.1 Modellering metagegevens voor objecten en attributen in LD: bij Specificatie voor mim:Attribuutsoort
bij Specificatie voor mim:DataElement
Toevoeging aan 6.4.9 Properties transformatie: Minimumwaarde inclusief
De CONSTRUCT {
?propertyshape sh:minInclusive ?minInclusive.
}
WHERE {
?modelelement mim:minimumwaardeInclusief ?minimumwaardeInclusief .
?modelelement mim:type ?datatype .
?propertyshape mim:equivalent ?modelelement .
?datatype a mim:PrimitiefDatatype .
bind(t:cast(?minimumwaardeInclusief, ?datatype) as ?minInclusive)
} transformatie: Minimumwaarde exclusief
De CONSTRUCT {
?propertyshape sh:minExclusive ?minExclusive.
}
WHERE {
?modelelement mim:minimumwaardeExclusief ?minimumwaardeExclusief .
?modelelement mim:type ?datatype .
?propertyshape mim:equivalent ?modelelement .
?datatype a mim:PrimitiefDatatype .
bind(t:cast(?minimumwaardeExclusief, ?datatype) as ?minExclusive)
} transformatie: Maximumwaarde inclusief
De CONSTRUCT {
?propertyshape sh:maxInclusive ?maxInclusive.
}
WHERE {
?modelelement mim:maximumwaardeInclusief ?maximumwaardeInclusief .
?modelelement mim:type ?datatype .
?propertyshape mim:equivalent ?modelelement .
?datatype a mim:PrimitiefDatatype .
bind(t:cast(?maximumwaardeInclusief, ?datatype) as ?maxInclusive)
} transformatie: Maximumwaarde exclusief
De CONSTRUCT {
?propertyshape sh:maxExclusive ?maxExclusive.
}
WHERE {
?modelelement mim:maximumwaardeExclusief ?maximumwaardeExclusief .
?modelelement mim:type ?datatype .
?propertyshape mim:equivalent ?modelelement .
?datatype a mim:PrimitiefDatatype .
bind(t:cast(?maximumwaardeExclusief, ?datatype) as ?maxExclusive)
} |
Graag matchen op deze: https://docs.geostandaarden.nl/mim/def-st-mim-20201023/#primitive-datatypes Bij twijfel (vanwege laatste behandeldag voor bevriezen release inhoud) een type nog even weglaten, kan later worden toegevoegd. Bv. GM types en Boolean nog even niet. |
Definitie: |
@architolk zou jij voor #109 (comment) kunnen beoordelen of de beschreven transformatie zo duidelijk is? |
@pmaria : transformatie helemaal duidelijk, en lijkt me ook helemaal goed zo. Prima om deze door te voeren. |
@pmaria @architolk @dkrijtenburg-GNM @lennartvanbergen-kadaster Deze zit nog niet in done kolom en wordt niet meegenomen voor v 1.1.1. |
Met de review van @architolk kan hij denk ik nu naar done. Prima om met 1.1.2 mee te nemen wat mij betreft. |
@pmaria maakt een PR |
[#109] toevoeging metagegevens min-max-inclusief en min-max-exclusief
Twee vragen:
Dit in het kader van Imvertor/Imvertor-Maven#448 |
MIM 1.2 stelt het zoals het nu gesteld wordt. Dat zou ik aanhouden. Daarnaast blijft het een valide issue. |
Zie ook #72 : voorstel vanuit DUO om ook het aspect min/max te ondersteunen zoals ook beschikbaar in SHACL.
The text was updated successfully, but these errors were encountered: