Corrections to Ballot #5 resolutions
-
Key: KERML_-224
-
Status: closed
-
Source: Model Driven Solutions ( Mr. Ed Seidewitz)
-
Summary:
Further implementation work has identified problems with certain resolutions in Ballot #5 that urgently need to be corrected.
KERML_-57Time and space life/slice/portion modeling patterns are missing- validateSubsettingConstantConformance – This constraint requires the subsettingFeature to be constant if the subsettedFeature is. However, a feature can only be constant if it is variable. But this makes invalid the reference subsettings of the ends of, e.g., a succession between constant features, because the ends of a succession cannot be variable (since a succession is not a kind of class).
- validateSubsettingPortionConformance – This constraint requires the subsettingFeature to be a portion if the subsettedFeature is. But this makes invalid the reference subsettings of the ends of any connector between portion features, because end features cannot be portions.
- validateRedefinitionDirectionConformance – For the purposes of this constraint, the direction of the redefinedFeature is considered relative to the featuringType of the redefiningFeature. However, this does not work if the redefiningFeature is a variable feature with an implied featuringType. (The OCL for the constraint is also wrong: featuringType should be redefiningFeature.featuringType.)
- validateRedefinitionFeaturingType – This constraint checks that the redefiningFeature has a different featuringType than the redefinedFeature. However, for variable features with implied featuringTypes, this constraint will always be met, even for features with the same owningType, because the constructed featuringTypes will not be equal (even if semantically equivalent).
KERML_-58checkFeatureParameterRedefinition fails for named-argument invocations- checkFeatureParameterRedefinition – The proposed OCL update fixes the problem stated in the issue, but then this breaks positional-argument notation, because there is no semantic constraint requiring implied redefinitions from the invocation parameters to the parameters of the invoked function. (Also, the OCL replacement snippet should have "implies" at the end.)
KERML_-59OCL for checkFeatureParameterRedefinition is wrong- checkFeatureParameterRedefinition – In the proposed OCL, the expression for let i : Integer is syntactically incorrect, and, even if corrected by adding a closing parenthesis, would not return an integer, as required.
KERML_-132Constructor invocation expressions are semantically inconsistent- ConstructorExpression::modelLevelEvaluable – This operation is redefined to make constructor expressions always not model-level evaluable. However, construction using the previous invocation-expression notation could be model-level evaluable, and this can be useful, e.g., for instantiating RiskMetadata::RiskLevel in a metadata usage.
- validateInvocationExpressionOwnedFeatures – This constraint requires that all ownedFeatures of an InvocationExpression have direction in. However, in the textual notation grammar, certain classification and metaclassification expressions are parsed to OperatorExpressions (a kind of InvocationExpression with type references that become ownedFeatures without any indicated direction.
-
Reported: KerML 1.0b2 — Thu, 13 Mar 2025 21:41 GMT
-
Disposition: Resolved — KerML 1.0b4
-
Disposition Summary:
Make the necessary corrections
This resolution proposes to resolve the problems identified in the issue as follows:
KERML_-57Time and space life/slice/portion modeling patterns are missing- validateSubsettingConstantConformance – Revise the constraint to apply only if the subsettedFeature is constant and the subsettingFeature is variable.
- validateSubsettingPortionConformance – Remove the constraint.
- validateRedefinitionDirectionConformance – Revise the constraint so that, if the redefiningFeature is variable, its owningType is used instead of its featuringTypes.
- validateRedefinitionFeaturingType – Revise the constraint so that if the redefiningFeature and/or the redefinedFeature are variable, then their owningType is used instead of their featuringTypes.
KERML_-58checkFeatureParameterRedefinition fails for named-argument invocations- checkFeatureParameterRedefinition – Revise the constraint so that, if the owningType is an InvocationExpression, the constraint still applies unless the feature has a non-implied ownedRedefinition (which will always be the case if the feature was parsed from a named argument list).
KERML_-59OCL for checkFeatureParameterRedefinition is wrong- checkFeatureParameterRedefinition – Correct the constraint by invoking indexOf(self).
KERML_-132Constructor invocation expressions are semantically inconsistent- ConstructorExpression::modelLevelEvaluable – Revise the operation to allow a constructor expression to be model-level evaluable if all its arguments are.
- validateInvocationExpressionOwnedFeatures – Revise the grammar classification and metaclassification expressions so that a TypeReferenceMember is parsed as a ParameterMembership, which requires that its ownedMemberParameter have the direction in.
The resolution also makes minor corrections of errors in the OCL for the following operations and constraint, found while formulating the above changes:
- checkConstructorExpressionResultFeatureRedefinition
- InstantiationExpression::instantiatedType
- OperatorExpression::instantiatedType
-
Updated: Sat, 19 Jul 2025 18:59 GMT