-
Key: KERML11-198
-
Status: open
-
Source: Budapest University of Technology and Economics ( Dr. Vince Molnar)
-
Summary:
The OCL of several constraints and operations in 8.3 uses names that do not resolve: properties, operations, variables, types and enumeration literals that are misspelled or do not exist, and an operation called on a receiver that does not have it. In each case the intended name is clear from the metamodel, from a let variable or parameter of the same OCL, or from the description. In addition, two constraint names are misspelled.
- In 8.3.2.4.3 Membership, in the OCL for the operation isDistinguishableFrom, oclKindOf should be oclIsKindOf (2 occurrences), and shortMemberName should be memberShortName (5 occurrences).
- In 8.3.2.4.4 MembershipImport, in the OCL for the operation importedMemberships, importAll should be isImportAll.
- In 8.3.2.4.5 Namespace:
- The name of the constraint validateNamespaceDistinguishibility should be validateNamespaceDistinguishability.
- In the OCL for the operation namesOf, Namespace has no property memberships, and the let variable elementMemberships is never used: memberships->select(memberElement = element) should be membership->select(memberElement = element), and memberships.memberShortName and memberships.memberName should be elementMemberships.memberShortName and elementMemberships.memberName.
- In the OCL for the operation visibilityOf, memberships->includes(mem) should be membership->includes(mem).
- In the OCL for the operation visibleMemberships, selectAsKind should be selectByKind.
- In 8.3.2.4.8 OwningMembership, in the OCL for the operation path, ownedElement should be ownedMemberElement (2 occurrences).
- In 8.3.3.1.8 Specialization, the name of the constraint validateSpecificationSpecificNotConjugated should be validateSpecializationSpecificNotConjugated.
- In 8.3.3.1.10 Type:
- In the OCL for deriveTypeOwnedSpecialization, s.special should be s.specific.
- In the OCL for deriveTypeOwnedConjugator, Sequence(Conjugator) should be Sequence(Conjugation).
- In the OCL for deriveTypeInheritedFeature, inheritedMemberships->selectByKind(FeatureMembership).memberFeature should be inheritedMembership->selectByKind(FeatureMembership).ownedMemberFeature.
- In the OCL for the operation inheritableMemberships, excludedType should be excludedTypes (the parameter).
- In the OCL for the operation directionOf, directionOfExcluding(f, Set{}) should be directionOfExcluding(feature, Set{}) (the parameter).
- In 8.3.3.3.4 Feature:
- In the OCL for deriveFeatureOwnedTyping, ownedGeneralization should be ownedSpecialization.
- In the OCL for deriveFeatureType, OrderedSet(Types) should be OrderedSet(Type), and exist should be exists.
- In the OCL for deriveFeatureFeaturingType, as revised by resolution
KERML11-150to issueKERML11-7(approved in Ballot #2), typeFeaturing.type should be typeFeaturing.featuringType (TypeFeaturing has no property type). - In the OCL for checkFeatureFeatureMembershipTypeFeaturing, featuringTypes should be featuringType.
- In the OCL for checkFeatureParameterRedefinition, as replaced by resolution
KERML11-149to issueKERML11-6(approved in Ballot #2), ownerParameters.indexof(self) should be ownerParameters->indexOf(self). - In the OCL for checkFeatureResultRedefinition, superType should be supertype (3 occurrences; the iterator variable is supertype).
- In the OCL for validateFeatureEndMultiplicity, allSuperTypes() should be allSupertypes().
- In the OCL for the operation isCompatibleWith, supertype.oclIsKindOf(Feature) should be otherType.oclIsKindOf(Feature), and ownedRedefinitions.allRedefinedFeatures() should be allRedefinedFeatures(), as for the otherType on the next line.
- In the OCL for the operation subsetsChain, allSuperTypes() should be allSupertypes(), and selectAsKind should be selectByKind.
- In the OCL for the operation typingFeatures, subsettedFeature->includes(chainingFeature->last()) should be subsettedFeatures->includes(chainingFeature->last()) (the let variable).
- In 8.3.4.4.2 Association, in the OCL for validateAssociationBinarySpecialization, associationEnds should be associationEnd.
- In 8.3.4.5.3 Connector, in the OCL for checkConnectorBinaryObjectSpecialization and validateConnectorBinarySpecialization, connectorEnds should be connectorEnd.
- In 8.3.4.7.3 Expression:
- In the OCL for deriveExpressionResult, featureMemberships should be featureMembership.
- In the OCL for the operation evaluate, resultExpr->isEmpty() should be resultExprs->isEmpty() (the let variable).
- In the OCL for the operation checkCondition, result->size() = 1 should be results->size() = 1 (the let variable).
- In 8.3.4.7.4 Function, in the OCL for deriveFunctionResult, featureMemberships should be featureMembership.
- In 8.3.4.8.3 ConstructorExpression, in the OCL for validateConstructorExpressionOwnedFeatures, ownedFeatures should be ownedFeature.
- In 8.3.4.8.4 FeatureChainExpression:
- In the OCL for checkFeatureChainExpressionResultSpecialization, ownedFeatures->select(direction = 'in') should be ownedFeature->select(direction = FeatureDirectionKind::'in'), and owningExpression.sourceTargetFeature() should be sourceTargetFeature() (the context is the FeatureChainExpression itself).
- In the OCL for the operation sourceTargetFeature, ownedFeatures->select(direction = 'in') should be ownedFeature->select(direction = FeatureDirectionKind::'in').
- In 8.3.4.8.5 FeatureReferenceExpression:
- In the OCL for checkFeatureReferenceExpressionBindingConnector, relatedFeatures should be relatedFeature (2 occurrences), and targetFeature should be referent.
- In the OCL for checkFeatureReferenceExpressionResultSpecialization, result.owningType() should be result.owningType.
- In the OCL for the operation modelLevelEvaluable, isOclKindOf should be oclIsKindOf (2 occurrences), and MetaClass should be Metaclass.
- In 8.3.4.8.7 InstantiationExpression, in the OCL for the operation instantiatedType, typeMembers->first() should be members->first() (the let variable).
- In 8.3.4.9.2 Flow, in the OCL for checkFlowWithEndsSpecialization, ownedEndFeatures should be ownedEndFeature.
- In 8.3.4.10.2 FeatureValue, in the OCL for checkFeatureValueBindingConnector, resolveGlobal( should be featureWithValue.resolveGlobal( (2 occurrences): resolveGlobal is an operation of Namespace, and a FeatureValue is not a Namespace.
- In 8.3.4.11.2 MultiplicityRange, in the OCL for the operation valueOf, oclAsKindOf should be oclAsType.
- In 8.3.4.12.3 MetadataFeature:
- In the OCL for deriveMetadataFeatureMetaclass, metaClassTypes should be metaclassTypes (the let variable).
- In the OCL for checkMetadataFeatureSemanticSpecialization, selectAsKind should be selectByKind (2 occurrences), and baseTypes() should be baseTypes (2 occurrences; the let variable).
- In the OCL for the operation evaluateFeature, selectAsKind should be selectByKind.
-
Reported: KerML 1.0b2 — Fri, 8 May 2026 16:54 GMT
-
Updated: Fri, 9 Oct 2026 07:55 GMT
KERML11 — Names in KerML OCL that do not resolve
- Key: KERML11-198
- OMG Task Force: Kernel Modeling Language (KerML) 1.1 RTF