-
Key: KERML11-87
-
Status: open Implementation work Blocked
-
Source: Dassault Systemes ( Mrs. Gintare Krisciuniene)
-
Summary:
ControlFunctions::forAll() and exists() are currently not model-level evaluable.
This precludes their usage in profile building e.g. specifying constraints for MetadataDefinitions (aka “stereotypes”) of custom domains..
Thus:
1) These operations shall be model-level evaluable IFF the inner predicate that they are using is model-level evaluable.
2) Reference implementation shall be able to evaluate meta-level assert constraints (that are defined against stereotyped model elements)
3) A test case in the conformance WG should check that constraints carrying such operations are (at least) mode-level evaluable (and evaluated by the tools that claim conformance);Example:
/**** Some domain library - e.g. UAF *****/constraint def StrategicRule;
abstract metadata def SubjectOfStrategicRule :> Metaobjects::SemanticMetadata{
{ in x; x istype SysML::AssertConstraintUsage}
:>> annotatedElement: KerML::Type {
assert constraint onlyStrategicRules {
ownedFeature
-> ControlFunctions::select-> ControlFunctions::forAll
{ in y : KerML::Type; y.specializes(StrategicRule meta SysML::ConstraintDefinition) }}
}
}/****** User Model ******/
#SubjectOfStrategicRule MyEnterprise
{ assert constraint strategy1 : StrategicRule; //valid assert constraint strategy2; //invalid - must specialize StrategicRule } -
Reported: KerML 1.0 — Fri, 10 Oct 2025 14:37 GMT
-
Updated: Fri, 10 Oct 2025 15:41 GMT
KERML11 — ForAll and Exists Should be Model-Level Evaluable
- Key: KERML11-87
- OMG Task Force: Kernel Modeling Language (KerML) 1.1 RTF