KerML 1.1b1 RTF Avatar
  1. OMG Issue

KERML11 — Names in KerML OCL that do not resolve

  • 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.

    1. 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).
    2. In 8.3.2.4.4 MembershipImport, in the OCL for the operation importedMemberships, importAll should be isImportAll.
    3. In 8.3.2.4.5 Namespace:
      1. The name of the constraint validateNamespaceDistinguishibility should be validateNamespaceDistinguishability.
      2. 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.
      3. In the OCL for the operation visibilityOf, memberships->includes(mem) should be membership->includes(mem).
      4. In the OCL for the operation visibleMemberships, selectAsKind should be selectByKind.
    4. In 8.3.2.4.8 OwningMembership, in the OCL for the operation path, ownedElement should be ownedMemberElement (2 occurrences).
    5. In 8.3.3.1.8 Specialization, the name of the constraint validateSpecificationSpecificNotConjugated should be validateSpecializationSpecificNotConjugated.
    6. In 8.3.3.1.10 Type:
      1. In the OCL for deriveTypeOwnedSpecialization, s.special should be s.specific.
      2. In the OCL for deriveTypeOwnedConjugator, Sequence(Conjugator) should be Sequence(Conjugation).
      3. In the OCL for deriveTypeInheritedFeature, inheritedMemberships->selectByKind(FeatureMembership).memberFeature should be inheritedMembership->selectByKind(FeatureMembership).ownedMemberFeature.
      4. In the OCL for the operation inheritableMemberships, excludedType should be excludedTypes (the parameter).
      5. In the OCL for the operation directionOf, directionOfExcluding(f, Set{}) should be directionOfExcluding(feature, Set{}) (the parameter).
    7. In 8.3.3.3.4 Feature:
      1. In the OCL for deriveFeatureOwnedTyping, ownedGeneralization should be ownedSpecialization.
      2. In the OCL for deriveFeatureType, OrderedSet(Types) should be OrderedSet(Type), and exist should be exists.
      3. In the OCL for deriveFeatureFeaturingType, as revised by resolution KERML11-150 to issue KERML11-7 (approved in Ballot #2), typeFeaturing.type should be typeFeaturing.featuringType (TypeFeaturing has no property type).
      4. In the OCL for checkFeatureFeatureMembershipTypeFeaturing, featuringTypes should be featuringType.
      5. In the OCL for checkFeatureParameterRedefinition, as replaced by resolution KERML11-149 to issue KERML11-6 (approved in Ballot #2), ownerParameters.indexof(self) should be ownerParameters->indexOf(self).
      6. In the OCL for checkFeatureResultRedefinition, superType should be supertype (3 occurrences; the iterator variable is supertype).
      7. In the OCL for validateFeatureEndMultiplicity, allSuperTypes() should be allSupertypes().
      8. 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.
      9. In the OCL for the operation subsetsChain, allSuperTypes() should be allSupertypes(), and selectAsKind should be selectByKind.
      10. In the OCL for the operation typingFeatures, subsettedFeature->includes(chainingFeature->last()) should be subsettedFeatures->includes(chainingFeature->last()) (the let variable).
    8. In 8.3.4.4.2 Association, in the OCL for validateAssociationBinarySpecialization, associationEnds should be associationEnd.
    9. In 8.3.4.5.3 Connector, in the OCL for checkConnectorBinaryObjectSpecialization and validateConnectorBinarySpecialization, connectorEnds should be connectorEnd.
    10. In 8.3.4.7.3 Expression:
      1. In the OCL for deriveExpressionResult, featureMemberships should be featureMembership.
      2. In the OCL for the operation evaluate, resultExpr->isEmpty() should be resultExprs->isEmpty() (the let variable).
      3. In the OCL for the operation checkCondition, result->size() = 1 should be results->size() = 1 (the let variable).
    11. In 8.3.4.7.4 Function, in the OCL for deriveFunctionResult, featureMemberships should be featureMembership.
    12. In 8.3.4.8.3 ConstructorExpression, in the OCL for validateConstructorExpressionOwnedFeatures, ownedFeatures should be ownedFeature.
    13. In 8.3.4.8.4 FeatureChainExpression:
      1. 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).
      2. In the OCL for the operation sourceTargetFeature, ownedFeatures->select(direction = 'in') should be ownedFeature->select(direction = FeatureDirectionKind::'in').
    14. In 8.3.4.8.5 FeatureReferenceExpression:
      1. In the OCL for checkFeatureReferenceExpressionBindingConnector, relatedFeatures should be relatedFeature (2 occurrences), and targetFeature should be referent.
      2. In the OCL for checkFeatureReferenceExpressionResultSpecialization, result.owningType() should be result.owningType.
      3. In the OCL for the operation modelLevelEvaluable, isOclKindOf should be oclIsKindOf (2 occurrences), and MetaClass should be Metaclass.
    15. In 8.3.4.8.7 InstantiationExpression, in the OCL for the operation instantiatedType, typeMembers->first() should be members->first() (the let variable).
    16. In 8.3.4.9.2 Flow, in the OCL for checkFlowWithEndsSpecialization, ownedEndFeatures should be ownedEndFeature.
    17. 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.
    18. In 8.3.4.11.2 MultiplicityRange, in the OCL for the operation valueOf, oclAsKindOf should be oclAsType.
    19. In 8.3.4.12.3 MetadataFeature:
      1. In the OCL for deriveMetadataFeatureMetaclass, metaClassTypes should be metaclassTypes (the let variable).
      2. In the OCL for checkMetadataFeatureSemanticSpecialization, selectAsKind should be selectByKind (2 occurrences), and baseTypes() should be baseTypes (2 occurrences; the let variable).
      3. 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