Object Constraint Language Avatar
  1. OMG Specification

Object Constraint Language — Closed Issues

  • Acronym: OCL
  • Issues Count: 162
  • Description: Issues resolved by a task force and approved by Board
Open Closed All
Issues resolved by a task force and approved by Board

Issues Summary

Key Issue Reported Fixed Disposition Status
OCL2_-92 The property 'unspecified' can be removed from the metamodel OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-94 Instanciation of collection types OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-93 The metaclass 'OclMessageArg' can be removed from the metamodel OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-91 The composition associations in figure 9 are missing OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-90 The superclass of UnspecifiedValueExp is not ModelElement OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-89 Reusing TypedElement for UnspecifiedValueExp OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-88 An UnlimitedNaturalExp should be added in the metamodel OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-87 The Ocl prefix should be avoided as much as possible in metaclass names OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-86 Should avoid using the OclHelper stereotype OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-85 Inconsistency in the way to represent Tuple literal part OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-84 The naming of the parts properties in literals is not consistent OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-83 The set of possible values of CollectionKind is missing OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-82 Use a uniform convention to name multivalued properties OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-79 make link explicit OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-78 The container for self and return variables is missing OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-81 Inherited or non navigable properties should not appear in class descriptio OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-80 Should compare the value of the slots and not the objects itself OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-77 VariableDeclaration should be renamed Variable OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-76 Specific inheritance links at M1 level should be removed OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-75 OclAny cannot be an instance of Classifier OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-74 Section: 11.9.2 reject OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-73 Section: 11.9.1 exists OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-72 Section: 11.7.2 OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-71 ’StringValue.iterators OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-70 context Classifier OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-69 context TTupleType::... OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-68 referredOperation OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-67 "Bag" OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-66 context TTupleType::make(atts : sequence(Attribute) ) : TTupleType OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-65 type of a TupleLiteralExp OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-62 type of a TupleLiteralExp OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-64 The type of the attribute is the type of the value expression. OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-63 tuple literal expression OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-61 message is a send action, OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-60 message is a call action, OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-59 ’parameter’ should be ’Parameter’ OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-58 the property ’refParams’ is not present in OperationCallExp OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-57 forall’ should be ’forAll’ OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-54 attributes of the signal. OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-53 parameters of the operation. OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-56 5] The target of an OCL message cannot be a collection. OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-55 ’sentMessage’ should be ’sentSignal’ OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-48 The type of the condition of an if expression must be Boolean. OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-50 result type OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-49 iterator OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-52 type of each iterator var. must be type of the elements of source collectio OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-51 1] The type of the source expression must be a collection. OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-47 collection literal expression OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-46 7. context AttrubuteCallExp OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-45 context TupleType::make(atts : sequence(Attribute) ) : TupleType OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-44 In section 3.3.9 OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-43 context Operation OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-42 If message is a send action, arguments must conform to attributes of signal OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-41 The type of body expression must conform to declared type of result variabl OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-40 Errors in the abstract syntax chapter 1. -- [1] Integer conforms to real. OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-39 The classifier name TupleType is also a reserved word OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-38 change rollnames OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-37 OclMessageArg metaclass that is currently defined, could be removed. OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-36 tostring operation for Integer, Real and Boolean OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-35 plus (infix) operator (’+’) OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-34 flatten operation OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-30 result of applying the collect operation to a Sequence OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-29 Remove the composition symbol at the end of PropertyCallExp OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-33 There should be an OclTypeLiteralExp metaclass OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-32 There should be an OclTypeLiteralExp metaclass OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-31 There should be an OclUndefinedLiteralExp metaclass OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-28 section 7.4.6 (Re-typing or casting) on p.13 OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-27 Use the "null" keyword instead of verbose "OclUndefined". OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-26 What's a collection? OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-25 Keywords "attr" and "oper"? OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-24 Formal Semantics of OCL 2.0 in Appendix A OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-23 OclUndefined = OclUndefine ? OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-22 Enumeration approach for reflection OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-21 Issue: OclModelElement OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-20 Issue: OclType OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-19 Issue: oclIUndefined() versus isEmpty() OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-18 Issue: Attributes and Association Ends versus Properties OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-17 Issue: Operator precedence OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-16 Issue: Keywords OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-15 Issue: Set of characters OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-14 Issue: General section to define OCL concepts OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-13 Reintroduce allAttributes operator OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-12 Missing equality and inequality operations on collection types OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-11 Clarify definition of collectNested for Set, Bag, and Sequence OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-10 Undefined values, isEmpty() and Collections OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-7 Flagging recursive definitions OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-9 Attributes and Association Ends versus Properties OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-8 Operator precedence OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-4 Consider OclType as a powertype OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-6 Flagging insecure cast from Set to Sequence OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-5 domain for library operations /, div OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-3 Omit predefined type OclModelElement. OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-2 oclIsNew for a collection OCL 2.0b2 OCL 2.0 Resolved closed
OCL2_-1 OCL 2.0/international character sets OCL 2.0b2 OCL 2.0 Resolved closed
OCL21-248 sub evaluations (02) OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-247 sub evaluations OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-254 Section: 7.5.11 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-253 Section: 7.5.9 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-246 value of a collection range OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-245 value of a collection range OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-249 Section: 6.5.4.3 Combining Properties OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-243 result value of an attribute call expression OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-251 Section: 7.4.5 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-252 Section: 7.5.3 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-250 Section: 7.4 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-244 result value of a collection literal expression evaluation OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-204 Issue: Syntax of Operation Call, Iterator, and Iterate Expressions OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-203 Issue: Abstract syntax tree OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-208 The notation for selecting elements should be more intuitive OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-207 The notation for testing the type of a metaclass is too verbose OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-206 Example with TupleType OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-211 Improve the notation when defining local variables OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-210 There is no simple way to invoke an "if then else" on a collection OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-209 notation for selecting unique element within a list should be more concise OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-216 Provide specific notational support when testing stereotypes OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-215 Suppress the usage of an Ocl prefix in standard library operations OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-202 Issue: Unspecified syntax and semantics for Integer, Real, and String OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-213 Allow implicit type casting to boolean when a boolean is expected OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-212 Allow applying iteration operations on single objects OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-214 Automatic casting between strings and enumeration values OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-217 Add a generic text formatter operator '% OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-205 The index seems incomplete OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-234 arguments of the return message of an ocl message expression OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-233 inv: model.sentSignal->size() = 1 implies OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-236 ’element’ should be ’elements’ OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-235 Only one of the attributes isPost and isPre may be true at the same time. OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-242 elements in a tuple value OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-232 arguments OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-240 The history of an object is ordered.(02) OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-241 The operation allPredecessors OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-239 history of an object is ordered. OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-238 ’Element’ should be ’NameValueBinding’ OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-237 ’element’ should be ’elements’ (02) OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-198 Add select/reject/collectNested to Collection OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-197 Exception of strict evaluation (queries) OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-201 Issue: Virtual machine OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-200 Clarify the UML semantics of IfExpEval OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-195 Exception of strict evaluation (implies) OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-196 Exception of strict evaluation (forAll, exists) OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-199 Clarify the semantics of forAll OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-261 Section: 1 - 13 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-260 Section: 11.9.3 & 11.9.4 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-258 Section: 11.2.1 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-257 Section: 10.2.2 LocalSnapshot OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-255 Section: 7.5.13 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-262 The spec does not describes the syntax of integer, real or string literals OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-259 Section: 11.5.4 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-256 Section: 7.6.2 OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-219 rewrite well-formedness OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-218 Make usage of tuples less complex and less verbose OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-225 sub evaluations (in the sequence bodyEvals) OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-224 context IfExpEval inv: OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-228 isSent attribute OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-227 ocl message expression OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-231 an iterate expression evaluation OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-230 missing ’inv:’ twice OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-222 1] The type of the attribute is the type of the value expression. OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-221 An additional attribute refParams lists all parameters of the referred OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-226 sub evaluations (in sequence bodyEvals) have different environment. OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-229 add ’and’ between both expression parts OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-223 context LocalSnapshot OCL 2.0b2 OCL 2.1 Resolved closed
OCL21-220 context State::getStateMachine() : StateMachine OCL 2.0b2 OCL 2.1 Resolved closed

Issues Descriptions

The property 'unspecified' can be removed from the metamodel

  • Key: OCL2_-92
  • Legacy Issue Number: 8821
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Because UnspecifiedValueExp is a special kind of OclExpression, it is not necessary to define an explicit unspecified property. One can check the type of the OclExpression to see whether we are in the unspecified situation. This also make useless the need to define a specific getType() helper operation for OclMessageArg since the type can direcly be obtained.

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Instanciation of collection types

  • Key: OCL2_-94
  • Legacy Issue Number: 8823
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    In 8.2 the sentence "Users will never instanciate these types explicitly" is not entirely true. When a OCL writer defines a helper operation that returns a set, he explicitly declares the Set to be returned. Also, according to the OCL metamodel, an expression always has a type (OclExpression::type has multiplicity equal to 1). So when using the metamodel to exchange OCL specifications (XMI exchange) this implies that all used types, including expressions yielding to collection types have to be instanciated for the XMI to be well-formed.

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The metaclass 'OclMessageArg' can be removed from the metamodel

  • Key: OCL2_-93
  • Legacy Issue Number: 8822
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    A OclMessageExp can directly represent the arguments without the need of an intermediate class, just as OperationCallExp refer to its arguments

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The composition associations in figure 9 are missing

  • Key: OCL2_-91
  • Legacy Issue Number: 8820
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    The composition associations in figure 9 are missing. In particular, a message
    expression (OclMessageExp) should contain its arguments, its target expression, are –probably – specified call action. Otherwise the model cannot be properly instanciated

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The superclass of UnspecifiedValueExp is not ModelElement

  • Key: OCL2_-90
  • Legacy Issue Number: 8819
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    According to figure 9, the UnspecifiedValueExp does not inherits from OclExpression. However this is contradictory with the text description of the metaclass (and it own name).

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Reusing TypedElement for UnspecifiedValueExp

  • Key: OCL2_-89
  • Legacy Issue Number: 8818
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    The type property of UnspecifiedValueExp can be obtained from a superclass (for instance TypedElement or OclExpression

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

An UnlimitedNaturalExp should be added in the metamodel

  • Key: OCL2_-88
  • Legacy Issue Number: 8817
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    An UnlimitedNaturalExp should be added in the metamodel to be used to access upper bound values in multiplicity specifications. This will be conformant with UML2 primitive literals

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The Ocl prefix should be avoided as much as possible in metaclass names

  • Key: OCL2_-87
  • Legacy Issue Number: 8816
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Except for the abstract OclExpression metaclass which differentiates from the UML class Expression, the other metaclasses OclMessageType, OclMessageExp and OclMessageArg should better be renamed MessageType, MessageExp and MessageArg to improve uniformity and readability of the metamodel.

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Should avoid using the OclHelper stereotype

  • Key: OCL2_-86
  • Legacy Issue Number: 8815
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Referring to the OclHelper stereotype in the well-formedness rules should be avoided since not strictly necessary. It should be possible yo use OCL in UML without using stereotypes

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Inconsistency in the way to represent Tuple literal part

  • Key: OCL2_-85
  • Legacy Issue Number: 8814
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    In the well-formedness rules there is a class named TupleLiteralExpPart but in the diagram VariableDeclaration is strangely used to represent the literal tuple parts.

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The naming of the parts properties in literals is not consistent

  • Key: OCL2_-84
  • Legacy Issue Number: 8813
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    The naming to refer to the parts of tuple literals and collection literals should be uniformized. For tuples it is called 'tuplePart' and for collection literals it is called 'parts'. Also the CollectionLiteralExp::parts and TupleLiteralExp::tuplePart properties is only depicted in the diagrams (missing in the class descriptions)

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The set of possible values of CollectionKind is missing

  • Key: OCL2_-83
  • Legacy Issue Number: 8812
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    The description of the CollectionKind should indicate the list of possible values

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Use a uniform convention to name multivalued properties

  • Key: OCL2_-82
  • Legacy Issue Number: 8811
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    In particular the properties NavigationCallExp::qualifiers, OperationCallEXp::arguments should be renamed NavigationCallExp::qualifier and OperationCallEXp::argument.

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

make link explicit

  • Key: OCL2_-79
  • Legacy Issue Number: 8794
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    The link between a variable representing a parameter and the parameter should be made explicit.

    The link between a variable and a parameter is currently not explicitly modelled in the OCL abstract syntax. It depends on name comparison. This adds unnecessary complexity to implementers.

  • Reported: OCL 2.0b2 — Wed, 18 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The container for self and return variables is missing

  • Key: OCL2_-78
  • Legacy Issue Number: 8793
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    The OCL spec does not define who is the container of the 'self', the 'result' and other variables bound to the parameters of an operation. This makes the OCL instanciation incomplete and invalid.

  • Reported: OCL 2.0b2 — Wed, 18 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Inherited or non navigable properties should not appear in class descriptio

  • Key: OCL2_-81
  • Legacy Issue Number: 8810
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    In the association list of the OclExpression metaclass description, the 'appliedProperty', 'parentOperation' and 'initializedVariable' are non navigable and should be removed. In addition the 'type' property should be inherited from the UML2 metaclass TypedElement.

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Should compare the value of the slots and not the objects itself

  • Key: OCL2_-80
  • Legacy Issue Number: 8809
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    In the well-formedness rules of OclMessageType (section 8.2.2), the self.feature cannot be equal to the result of the asParameter() operation. The rule need to be rewritten so that the value of the slots are compared (the 'name' and 'type' instead of comparing the object themselves).

    A similar problem occurs in the well-formedness rule [2] of OclMessageType (section 8.2.2), the self.feature cannot be equal to the result of the 'referredSignal.feature' since in that case the referred features will be contained twice.

  • Reported: OCL 2.0b2 — Wed, 25 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

VariableDeclaration should be renamed Variable

  • Key: OCL2_-77
  • Legacy Issue Number: 8792
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    The concept representing a parameter declaration is not called ParameterDeclaration but Parameter. Similarily, the concept corresponding to variable declaration should be called Variable. Also this concept already exists in UML2 and the name chosen for the metaclass is Variable.

    Also the name property of the variable can be taken from the super class NamedElement instead of having a specific varName attribute.

  • Reported: OCL 2.0b2 — Wed, 18 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Specific inheritance links at M1 level should be removed

  • Key: OCL2_-76
  • Legacy Issue Number: 8791
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Figure 28 defines specific inheritance links between M1 types that are
    not inferred from M2 types. This links should be suppressed since it brings
    confusion and unnecessary complexity to the standard library
    definition. The particular compliance rules of OclVoid and OclAny can be defined independently of the "inheritance" formalism.

  • Reported: OCL 2.0b2 — Wed, 18 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

OclAny cannot be an instance of Classifier

  • Key: OCL2_-75
  • Legacy Issue Number: 8790
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Classifier is an abstract class. It is then not possible to define the OclAny of the standard library as a direct instance of classifier.

    Suggestion: Define a AnyType metatype

  • Reported: OCL 2.0b2 — Wed, 18 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Section: 11.9.2 reject

  • Key: OCL2_-74
  • Legacy Issue Number: 8664
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    On the left side of the equals symbol is the word "select" correct or should it be "iterate?"

  • Reported: OCL 2.0b2 — Wed, 30 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Section: 11.9.1 exists

  • Key: OCL2_-73
  • Legacy Issue Number: 8663
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    Now it is too early in the morning because the statement "Results in true if body evaluates to true for at least one element in the source collection" does not make sense with the OCL notation on the right side of the equals symbol "source->iterate(iterators; result:Boolean = false | result or body)." One says true, the other says false.

  • Reported: OCL 2.0b2 — Wed, 30 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Section: 11.7.2

  • Key: OCL2_-72
  • Legacy Issue Number: 8662
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    It's late in the day but I do not see that the OCL definition for union(s:Set(T)): Set(T) is totally accurate because it does not mention that self and s cannot contain the same element or the union of self and s would be a bag not a set. I am also confused by the last post for bothe asSequenced(): Sequence(T) and asBag(): Bag(T) where the result->count(elem)=1. Should this be result->count(elem)>=1 in both cases because you're writing about sequences and bags?

  • Reported: OCL 2.0b2 — Tue, 29 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

’StringValue.iterators

  • Key: OCL2_-71
  • Legacy Issue Number: 7547
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    39. The association between ’StringValue.iterators’ and ’LoopExpEval’ should be ordered on the side
    of ’StringValue.iterators’.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

context Classifier

  • Key: OCL2_-70
  • Legacy Issue Number: 7499
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    def: lookupAttribute(attName : String) : Attribute =
    self.allAttributes->any(me | me.name = attName)
    def: lookupAssociationEnd(name : String) : AssociationEnd =
    self.allAssociationEnds->any (ae | ae.name = name)
    def: lookupAssociationClass(name : String) : AssociationClass =
    self.allAssociationClasses->any (ae | ae.name = name)
    def: lookupOperation (name: String, paramTypes: Sequence(Classifier)):
    Operation =
    self.allOperations->any (op | op.name = name and
    op.hasMatchingSignature(paramTypes))
    def: lookupSignal (sigName: String, paramTypes: Sequence(Classifier)):
    Operation =
    self.allReceptions.signal->any (sig | sig.name = sigName and
    sig.hasMatchingSignature(paramTypes))
    ==> all references to operations like allAttributes are missing brackets, and the returnType of lookup-
    Signal should be Signal. The whole expression should be:
    context Classifier
    def: lookupAttribute(attName : String) : Attribute =
    self.allAttributes()->any(me | me.name = attName)
    def: lookupAssociationEnd(name : String) : AssociationEnd =
    self.allAssociationEnds()->any (ae | ae.name = name)
    def: lookupAssociationClass(name : String) : AssociationClass =
    self.allAssociationClasses()->any (ae | ae.name = name)
    def: lookupOperation (name: String, paramTypes: Sequence(Classifier)):
    Operation =
    self.allOperations()->any (op | op.name = name and
    op.hasMatchingSignature(paramTypes))
    def: lookupSignal (sigName: String, paramTypes: Sequence(Classifier)):
    Signal =
    self.allReceptions().signal->any (sig | sig.name = sigName and
    sig.hasMatchingSignature(paramTypes))

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

context TTupleType::...

  • Key: OCL2_-69
  • Legacy Issue Number: 7498
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    30. context TTupleType::make(atts : Sequence(UML14::Core::Attribute) ) : TTupleType
    post: result.features = atts
    post: result.stereotype.name = ’OclHelper’
    ==> should be: context TTupleType::make(atts : OrderedSet(UML14::Core::Attribute) ) :
    TTupleType
    post: result.feature = atts
    post: result.stereotype.name = ’OclHelper’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

referredOperation

  • Key: OCL2_-68
  • Legacy Issue Number: 7497
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    29. – [2] The parameters of the referredOperation become attributes of the instance
    – of OclMessageType
    context OclMessageType
    inv: referredOperation->size() = 1 implies
    self.feature = referredOperation.parameter.asAttribute()
    ==> ’parameter’ should be Parameter
    ==> ’.asAttribute()’ should be ’->collect(p | p.asAttribute().oclAsType(UML14::Core::Feature) ).asOrderedSet()’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

"Bag"

  • Key: OCL2_-67
  • Legacy Issue Number: 7496
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    28. – [1] The name of a bag type is "Bag" followed by the element type’s name in
    – parentheses.
    context BagType
    inv: self.name = ’Bag(’ + self.elementType.name + ’)’
    [1] The name of a collection type is "Collection" followed by the element
    – type’s name in parentheses.
    context CollectionType
    inv: self.name = ’Collection(’ + self.elementType.name + ’)’
    [1] The name of a set type is "OrderedSet" followed by the element type’s name
    – in parentheses.
    context OrderedSetType
    inv: self.name = ’OrderedSet(’ + self.elementType.name + ’)’
    [1] The name of a sequence type is "Sequence" followed by the element type’s
    – name in parentheses.
    context SequenceType
    inv: self.name = ’Sequence(’ + self.elementType.name + ’)’
    [1] The name of a set type is "Set" followed by the element type’s name in
    – parentheses. context SetType
    inv: self.name = ’Set(’ + self.elementType.name + ’)’
    ==> ’’ should be replaced by ’concat’ or ’’ should be allowed as concrete syntax for the String concat
    operation.
    inv: self.name = ’Bag(’.concat( self.elementType.name).concat(’)’)
    inv: self.name = ’Collection(’.concat(
    self.elementType.name).concat(’)’)
    inv: self.name = ’OrderedSet(’.concat(
    self.elementType.name).concat(’)’)
    inv: self.name = ’Sequence(’.concat( self.elementType.name).concat(’)’)
    inv: self.name = ’Set(’.concat( self.elementType.name).concat(’)’)

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

context TTupleType::make(atts : sequence(Attribute) ) : TTupleType

  • Key: OCL2_-66
  • Legacy Issue Number: 7495
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    27. context TTupleType::make(atts : sequence(Attribute) ) : TTupleType
    post: result.features = atts
    post: result.stereotype.name = ’OclHelper’ ==> ’sequence(Attribute)’ should be ’Sequence(UML14::Core::Attribute)’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

type of a TupleLiteralExp

  • Key: OCL2_-65
  • Legacy Issue Number: 7494
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    26. – [1] The type of a TupleLiteralExp is a TupleType with the specified parts.
    context TupleLiteralExp
    inv: type.oclIsKindOf (OclAbstractSyntax::Types::TTupleType)
    and
    tuplePart->forAll (tlep |
    type.allAttributes()->exists (tp | tlep.attribute = tp))
    and
    tuplePart->size() = type.allAttributes()->size()
    ==> should be
    context TupleLiteralExp
    inv: type.oclIsKindOf (OclAbstractSyntax::Types::TTupleType)
    and
    tuplePart->forAll (tlep |
    type.allAttributes()->exists (tp | tlep.asAttribute().name = tp.name and
    tlep.asAttribute().type = tp.type and
    tlep.asAttribute().initExpression = tp.initExpression))
    and
    tuplePart->size() = type.allAttributes()->size()

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

type of a TupleLiteralExp

  • Key: OCL2_-62
  • Legacy Issue Number: 7491
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    23. – [1] The type of a TupleLiteralExp is a TupleType with the specified parts.
    context TupleLiteralExp
    inv: type.oclIsKindOf (TupleType) and
    tuplePart->forAll (tlep |
    type.oclAsType (TupleType).allAttributes()->exists (tp | tlep.attribute
    = tp))
    and
    tuplePart->size() = type.oclAsType (TupleType).allAttributes()->size()
    ==> should be:
    context TupleLiteralExp
    inv: type.oclIsKindOf (OclAbstractSyntax::Types::TTupleType)
    and
    tuplePart->forAll (tlep |
    type.allAttributes()->exists (tp | tlep.asAttribute().name = tp.name and
    tlep.asAttribute().type = tp.type and
    tlep.asAttribute().initExpression = tp.initExpression))
    and
    tuplePart->size() = type.allAttributes()->size()

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The type of the attribute is the type of the value expression.

  • Key: OCL2_-64
  • Legacy Issue Number: 7493
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    25. – [1] The type of the attribute is the type of the value expression.
    context TupleLiteralExpPart
    inv: attribute.type = value.type
    ==> should be removed, the type ’TupleLiteralExpPart’ does not exist.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

tuple literal expression

  • Key: OCL2_-63
  • Legacy Issue Number: 7492
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    24. – [2] All tuple literal expression parts of one tuple literal expression have
    – unique names.
    context TupleLiteralExp
    inv: tuplePart->isUnique (attribute.name)
    ==> should be:
    context TupleLiteralExp
    inv: tuplePart->isUnique (name)

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

message is a send action,

  • Key: OCL2_-61
  • Legacy Issue Number: 7490
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    22. – [2] If the message is a send action, the arguments must conform to the
    – attributes of the signal.
    context OclMessageExp
    inv: sentSignal->notEmpty() implies
    arguments->forAll (a | a.getType().conformsTo
    (self.sentSignal.signal.feature.oclAsType(StructuralFeature)
    >at (arguments>indexOf (a)).type))
    ==> should be:
    context OclMessageExp
    inv: sentSignal->notEmpty() implies
    arguments->forAll (a | a.getType().conformsTo
    (self.sentSignal.signal.feature
    >at (arguments>indexOf
    (a)).oclAsType(UML14::Core::StructuralFeature).type) )

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    Discussion:
    This well-formed rule is correct in the current OCL 2.0 specification. It is a duplicate of the issue 7471.
    Disposition: See Issue 7471 for disposition

  • Updated: Sun, 8 Mar 2015 13:35 GMT

message is a call action,

  • Key: OCL2_-60
  • Legacy Issue Number: 7489
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    21. – [1] If the message is a call action, the arguments must conform to the
    – parameters of the operation.
    context OclMessageExp
    inv: calledOperation->notEmpty() implies
    arguments->forAll (a | a.getType().conformsTo
    (self.calledOperation.operation.Parameter->
    select( kind = UML14::Core::ParameterDirectionKind::In )
    >at (arguments>indexOf (a)).type))

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

’parameter’ should be ’Parameter’

  • Key: OCL2_-59
  • Legacy Issue Number: 7488
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    20. – [1] If the message is a call action, the arguments must conform to the
    – parameters of the operation.
    context OclMessageExp
    inv: calledOperation->notEmpty() implies
    arguments->forAll (a | a.getType().conformsTo
    (self.calledOperation.operation.parameter->
    select( kind = ParameterDirectionKind::In )
    >at (arguments>indexOf (a)).type))
    ==> ’parameter’ should be ’Parameter’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

the property ’refParams’ is not present in OperationCallExp

  • Key: OCL2_-58
  • Legacy Issue Number: 7487
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    ==> add the following:
    context OperationCallExp
    def: refParams: Sequence(UML14::Core::Parameter) =
    self.referredOperation.Parameter->asSequence()
    ==> see also number 21.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

forall’ should be ’forAll’

  • Key: OCL2_-57
  • Legacy Issue Number: 7486
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    18. – [1] All the arguments must conform to the parameters of the referred operation
    context OperationCallExp
    inv: arguments->forall (a | a.type.conformsTo
    (self.refParams->at (arguments->indexOf (a)).type))
    ==> ’forall’ should be ’forAll’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

attributes of the signal.

  • Key: OCL2_-54
  • Legacy Issue Number: 7483
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    15. – [2] If the message is a send action, the arguments must conform to the
    – attributes of the signal.
    context OclMessageExp
    inv: sentSignal->notEmpty() implies
    arguments->forall (a | a.getType().conformsTo
    (self.sentSignal.signal.feature.oclAsType(StructuralFeature)
    >at (arguments>indexOf (a)).type))
    ==> ’forall’ should be ’forAll’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

parameters of the operation.

  • Key: OCL2_-53
  • Legacy Issue Number: 7482
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    14. – [1] If the message is a call action, the arguments must conform to the
    – parameters of the operation.
    context OclMessageExp
    inv: calledOperation->notEmpty() implies
    arguments->forall (a | a.getType().conformsTo
    (self.calledOperation.operation.parameter->
    select( kind = ParameterDirectionKind::In )
    >at (arguments>indexOf (a)).type))
    ==> ’forall’ should be ’forAll’

  • Reported: OCL 2.0b2 — Mon, 14 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

5] The target of an OCL message cannot be a collection.

  • Key: OCL2_-56
  • Legacy Issue Number: 7485
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    context OclMessageExp
    inv: not target.type.oclIsKindOf (CollectionType)
    ==> ’CollectionType should be ’OclAbstractSyntax::Types::CollectionType’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

’sentMessage’ should be ’sentSignal’

  • Key: OCL2_-55
  • Legacy Issue Number: 7484
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    16. – [4] An OCL message has either a called operation or a sent signal.
    context OclMessageExp
    inv: calledOperation->size() + sentMessage->size() = 1
    ==> ’sentMessage’ should be ’sentSignal’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The type of the condition of an if expression must be Boolean.

  • Key: OCL2_-48
  • Legacy Issue Number: 7477
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    context IfExp
    inv: self.condition.type.oclIsKindOf(Primitive) and
    self.condition.type.name =
    ’Boolean’
    ==> ’Primitive’ should be ’UML14::Core::Primitive’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

result type

  • Key: OCL2_-50
  • Legacy Issue Number: 7479
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    [2] The result type of the collect operation on a sequence type is a sequence,
    – the result type of ’collect’ on any other collection type is a Bag. The type
    – of the body is always the type of the elements in the return collection.
    context IteratorExp
    inv: name = ’collect’ implies
    if source.type.oclIsKindOf(SequenceType) then
    type =
    expression.type.collectionType->select(oclIsTypeOf(SequenceType))-
    >first()
    else
    type = expression.type.collectionType->select(oclIsTypeOf(BagType))-
    >first()
    endif
    ==> should be
    context IteratorExp
    inv: name = ’collect’ implies if source.type.oclIsKindOf(OclAbstractSyntax::Types::SequenceType) then
    self.type = StandardLibrary::StdLib::Sequence
    and
    self.Body.type = Body.type
    else
    self.type = StandardLibrary::StdLib::Bag
    and
    self.Body.type = Body.type
    endif

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

iterator

  • Key: OCL2_-49
  • Legacy Issue Number: 7478
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    [1] If the iterator is ’forAll’, ’isUnique’, or ’exists’ the type of the
    – iterator must be Boolean.
    context IteratorExp
    inv: name = ’exists’ or name = ’forAll’ or name = ’isUnique’
    implies type.oclIsKindOf(Primitive) and type.name = ’Boolean’
    ==> ’Primitive’ should be ’UML14::Core::Primitive’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

type of each iterator var. must be type of the elements of source collectio

  • Key: OCL2_-52
  • Legacy Issue Number: 7481
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    context IteratorExp
    inv: self.iterators->forAll(type = source.type.oclAsType
    (CollectionType).elementType)
    ==> ’CollectionType should be ’OclAbstractSyntax::Types::CollectionType’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

1] The type of the source expression must be a collection.

  • Key: OCL2_-51
  • Legacy Issue Number: 7480
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    context LoopExp
    inv: source.type.oclIsKindOf (CollectionType)
    ==> ’CollectionType should be ’OclAbstractSyntax::Types::CollectionType’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

collection literal expression

  • Key: OCL2_-47
  • Legacy Issue Number: 7476
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    [2] The type of a collection literal expression is determined by the
    – collection kind selection and the common supertype of all elements. Note that
    – the definition below implicitly states that empty collections have OclVoid as
    – their elementType.
    context CollectionLiteralExp
    inv: kind = CollectionKind::Set implies type.oclIsKindOf (SetType )
    inv: kind = CollectionKind::Sequence implies type.oclIsKindOf (SequenceType)
    inv: kind = CollectionKind::Bag implies type.oclIsKindOf (BagType )
    inv: type.oclAsType (CollectionType).elementType = parts->iterate (p; c
    :
    Classifier = OclVoid | c.commonSuperType (p.type))
    ==> should be
    context CollectionLiteralExp
    inv: kind = CollectionKind::Set implies type =
    StandardLibrary::StdLib::Set
    inv: kind = CollectionKind::OrderedSet implies type =
    StandardLibrary::StdLib::OrderedSet
    inv: kind = CollectionKind::Sequence implies type =
    StandardLibrary::StdLib::Sequence
    inv: kind = CollectionKind::Bag implies type =
    StandardLibrary::StdLib::Bag
    inv: type.oclAsType
    (OclAbstractSyntax::Types::CollectionType).elementType =
    parts->iterate (p; c :
    Classifier = StandardLibrary::StdLib::OclVoid | c.commonSuperType
    (p.type))

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

7. context AttrubuteCallExp

  • Key: OCL2_-46
  • Legacy Issue Number: 7475
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    inv: type = referredAttribute.type
    ==> ’AttrubuteCallExp’ should be ’AttributeCallExp’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

context TupleType::make(atts : sequence(Attribute) ) : TupleType

  • Key: OCL2_-45
  • Legacy Issue Number: 7474
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    post: result.features = atts
    post: result.stereotype.name = ’OclHelper’
    ==> ’sequence’ should be ’OrderedSet’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

In section 3.3.9

  • Key: OCL2_-44
  • Legacy Issue Number: 7473
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    5. In section 3.3.9 the operations "OclExpression::withAtPre() : OperationCallExp" and "OclExpression::
    withAsSet() : OperationCallExp" should be prefixed with the keyword ’context’.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

context Operation

  • Key: OCL2_-43
  • Legacy Issue Number: 7472
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    context Operation
    def: hasMatchingSignature(paramTypes: Sequence(Classifier)) : Boolean =
    – check that operation op has a signature that matches the given
    parameter lists
    = let sigParamTypes: Sequence(Classifier) = self.allAttributes.type in
    (
    ( sigParamTypes->size() = paramTypes->size() ) and
    ( Set

    {1..paramTypes->size()}

    ->forAll ( i |
    paramTypes->at .conformsTo (sigParamTypes->at )
    )
    )
    )
    ==> remove the ’=’ after Boolean
    ==> same error occurs in "context Signal def: hasMatchingSignature...."

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

If message is a send action, arguments must conform to attributes of signal

  • Key: OCL2_-42
  • Legacy Issue Number: 7471
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    context OclMessageExp
    inv: sentSignal->notEmpty() implies
    arguments->forall (a | a.getType().conformsTo
    (self.sentSignal.signal.feature.oclAsType(StructuralFeature) )
    >at (arguments>indexOf (a)).type))
    ==> should be:
    context OclMessageExp
    inv: sentSignal->notEmpty() implies
    arguments->forAll (a | a.getType().conformsTo
    (self.sentSignal.signal.feature
    >at (arguments>indexOf
    (a)).oclAsType(UML14::Core::StructuralFeature).type) )

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The type of body expression must conform to declared type of result variabl

  • Key: OCL2_-41
  • Legacy Issue Number: 7470
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    context IterateExp
    Body.type.conformsTo(result.type)
    ==> missing ’inv:’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    This typo has already been corrected in the last OCL 2.0 release.

    Disposition: Close, no change

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Errors in the abstract syntax chapter 1. -- [1] Integer conforms to real.

  • Key: OCL2_-40
  • Legacy Issue Number: 7469
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    context Primitive
    inv: (self.name = ’Integer’) implies
    Primitive.allInstances()->forAll (p | (p.name = ’Real’) implies
    (self.conformsTo(p))))
    ==> one closing bracket ’)’ too many

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

The classifier name TupleType is also a reserved word

  • Key: OCL2_-39
  • Legacy Issue Number: 7468
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    The classifier name TupleType is also a reserved word. In order to check the constraints we have
    changed it into TTupleType.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

change rollnames

  • Key: OCL2_-38
  • Legacy Issue Number: 7467
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    1. The keywords ’pre’, ’body’, ’in’ and ’context’ are being used in the OCL expressions themselves to
    indicate role names. Actually this is an error. These can be avoided by changing the following
    rolenames:
    • - ’body’ of AbstractSyntax::Expression::LoopExp
    • - ’pre’ of OclDomain::Values::LocalSnapshot
    • - ’context’ of OclDomain::Evaluations::OclExpEval
    • - ’in’ of AbstractSyntax::Expression::LetExp
    • - ’in’of UML14::Core::ParameterDirectionKind
    To check the expressions we have changed the above names into the same word beginning with an
    upperclass character.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

OclMessageArg metaclass that is currently defined, could be removed.

  • Key: OCL2_-37
  • Legacy Issue Number: 7465
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    11. The OclMessageArg metaclass that is currently defined, could be removed. We propose the configuration
    depicted in figure 1, together with the following constraints. Note that a similar set of constraint
    must be added to chapter "The Use of Ocl Expressions in UML Models", depending on the
    exact alignment with the UML metamodel. Also note that both the first and second constraint of
    OclMessageExp on page 54 of the final adopted spec need to be changed: "arguments->forAll( a |
    a.getType() ...." should be "arguments->forAll( a | a.type ....".
    – an unspecified value expression may not have an applied property
    context UnspecifiedValueExp
    10 June 2004,
    page 2 of 22
    Klasse Objecten
    © Copyright Klasse Objecten
    inv: self.appliedProperty->isEmpty()
    – an unspecified value expression may not be used anywhere but as
    – argument to an OclMessageExp
    context OclExpression
    inv: not appliedProperty.oclIsTypeOf(UnspecifiedValueExp)
    context LoopExp
    inv: not body.oclIsTypeOf(UnspecifiedValueExp)
    context VariableDeclaration
    inv: not initExpression.oclIsTypeOf(UnspecifiedValueExp)
    context LoopExp
    inv: iterators->forAll(i | not i.oclIsTypeOf(UnspecifiedValueExp))
    context IterateExp
    inv: not result.oclIsTypeOf(UnspecifiedValueExp)
    context OperationCallExp
    inv: arguments->forAll( i | not i.oclIsTypeOf(UnspecifiedValueExp))
    context NavigationCallExp
    inv: qualifiers->forAll( i | not i.oclIsTypeOf(UnspecifiedValueExp))
    context IfExp
    inv: not thenExpression.oclIsTypeOf(UnspecifiedValueExp)
    context IfExp
    inv: not elseExpression.oclIsTypeOf(UnspecifiedValueExp)
    context IfExp
    inv: not condition.oclIsTypeOf(UnspecifiedValueExp)
    context LetExp
    inv: not in.oclIsTypeOf(UnspecifiedValueExp)

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

tostring operation for Integer, Real and Boolean

  • Key: OCL2_-36
  • Legacy Issue Number: 7464
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    It would be convenient to have a tostring operation for Integer, Real and Boolean.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

plus (infix) operator (’+’)

  • Key: OCL2_-35
  • Legacy Issue Number: 7463
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    9. It would be very convenient to allow the plus (infix) operator (’+’) as concrete syntax for the String
    concat.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

flatten operation

  • Key: OCL2_-34
  • Legacy Issue Number: 7462
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    It is not clear from the specification whether the flatten operation is meant to be a deep or a shallow
    flatten. We prefer a deep flatten, but perhaps both options should be available.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

result of applying the collect operation to a Sequence

  • Key: OCL2_-30
  • Legacy Issue Number: 7458
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    The result of applying the collect operation to a Sequence should be a Sequence, not a Bag. Likewise,
    the result of applying the collect operation to an OrderedSet should be a Sequence, not a Bag.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Remove the composition symbol at the end of PropertyCallExp

  • Key: OCL2_-29
  • Legacy Issue Number: 7456
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    Remove the composition symbol at the end of PropertyCallExp in the association between Property-
    CallExp (rolename appliedProperty) and OclExpression (rolename source). This should be a normal
    association.
    Composition implies lifetime dependency, therefore this use of composition is incorrect. An OclExpression
    exists independent of its (optional) applied property and they have no lifetime dependency.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

There should be an OclTypeLiteralExp metaclass

  • Key: OCL2_-33
  • Legacy Issue Number: 7461
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    There should be an OclTypeLiteralExp metaclass, subtype of LiteralExp. It should have an association
    with UML::Classifier.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

There should be an OclTypeLiteralExp metaclass

  • Key: OCL2_-32
  • Legacy Issue Number: 7460
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    There should be an OclStateLiteralExp metaclass, subtype of LiteralExp. It should have an association
    with UML::State.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

There should be an OclUndefinedLiteralExp metaclass

  • Key: OCL2_-31
  • Legacy Issue Number: 7459
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    There should be an OclUndefinedLiteralExp metaclass, subtype of PrimitiveLiteralExp. The type of
    its instances should always be OclVoid.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

section 7.4.6 (Re-typing or casting) on p.13

  • Key: OCL2_-28
  • Legacy Issue Number: 7341
  • Status: closed  
  • Source: Missouri University of Science and Technology ( Thomas Weigert)
  • Summary:

    In section 7.4.6 (Re-typing or casting) on p.13, it is stated that "An object can only be re-typed to one of its subtypes". In other words, in the expression object.oclAsType(A), A must be a subtype of the type of the object. However, in section 7.5.8 (Accessing overridden properties of supertypes) on p.20 an example is given of object.oclAsType(A), where A is a supertype of object. This contradicts the assertion made earlier. In section 11.2.4 there are no constraints given on oclAsType that would rule out the usage shown in the second paragraph. However, in the semantics section on p.A-25 it is only stated that for oclAsType, the the target type must be a subtype of the source type or vice versa, supporting again the usage in the second paragraph. Judging from these, I assume that the restriction given on p.13 is incorrect.

  • Reported: OCL 2.0b2 — Sun, 16 May 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    Type-casting is more general than the set of known subtypes and supertypes. If the OCL type system can be considered as open (meaning that OCL expressions may be applied to objects of types not known in the context in which it was defined), then it must be permitted to attempt a cast to any other type. UML implements multiple inheritance, so that given any two types, it is always a possibility that an object could be classified by both, even if they do not apparently have any relationship. This is particularly important for constraints defined in type libraries.

    Because OCL provides type tests oclIsKindOf() and oclIsTypeOf(), it is reasonable that failure to cast result in invalid to indicate an error condition. Note that a type-testing expression such as self.oclAsType(SomeType).oclIsInvalid() is correct, though it may be considered as poor style.

    The effect of casting is only a parse-time re-typing to provide visibility of features not defined for the original type, and a run-time assertion of the required type of an object. It cannot change the type of an object or coerce an object to an instance of a different type, nor can it provide access to hidden or overidden features of a supertype. For this, a new syntax is required that statically indicates the definition of a feature by the classifier that defines it.

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Use the "null" keyword instead of verbose "OclUndefined".

  • Key: OCL2_-27
  • Legacy Issue Number: 6888
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Use the "null" keyword instead of verbose "OclUndefined".

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

What's a collection?

  • Key: OCL2_-26
  • Legacy Issue Number: 6633
  • Status: closed  
  • Source: HL7 ( Mr. Grahame Grieve)
  • Summary:

    OCL 2 does not clarify what makes a type a collection. It's clear that
    any multiple attributes and associations are collections. And from
    section 3.2, it's clear that parameterised classes may be treated as
    OCL collections. However not all parameterised classes can be treated
    as collections

    This needs further clarification

  • Reported: OCL 2.0b2 — Thu, 20 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Keywords "attr" and "oper"?

  • Key: OCL2_-25
  • Legacy Issue Number: 6615
  • Status: closed  
  • Source: Modeling Value Group ( Wim Bast)
  • Summary:

    Keywords "attr" and "oper" still necessary? Keywords attr and oper are defined in the keywords list, but are not included in the concrete grammar. Are they maybe superfluous? If "attr" is really a keyword, then the well-formedness rule on page 140 that uses a local variable attr must use another variable name.

  • Reported: OCL 2.0b2 — Thu, 13 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Formal Semantics of OCL 2.0 in Appendix A

  • Key: OCL2_-24
  • Legacy Issue Number: 6612
  • Status: closed  
  • Source: Modeling Value Group ( Wim Bast)
  • Summary:

    Maybe the completion of the formal semantics of OCL is an issue that is too extensive as part of the finalization process of OCL 2.0. Therefore, I suggest to just add a note in Appendix A concerning the currently still missing parts of the formal semantics, i.e., in particular OCL Messages, Ordered Set, and def-clauses. If you want you can refer to my paper about the Formal Semantics of OCL Messages, presented at the OCL Workshop at UML 2003. It can currently be found at http://i11www.ira.uka.de/~baar/oclworkshopUml03/papers/05_formal_semantics_ocl_messages.pdf

  • Reported: OCL 2.0b2 — Thu, 13 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

OclUndefined = OclUndefine ?

  • Key: OCL2_-23
  • Legacy Issue Number: 6611
  • Status: closed  
  • Source: Modeling Value Group ( Wim Bast)
  • Summary:

    Perhaps it makes sense to explicitly mention whether OclUndefined = OclUndefined results in OclUndefined (or true)? The SQL equivalent seems to cause a lot of confusion, especially since in C "NULL == NULL" resturns true. For example, the above expression would not work with excluding(OclUndefined), given (OclUndefined=OclUndefined).isOclUndefined().....

  • Reported: OCL 2.0b2 — Thu, 13 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    Technically, no change is necessary because the OclAny definition of the = operation, together with the definition of the singleton values null and invalid, is sufficient. However, being more explicit is helpful, especially as the there is no oclIsXyz() operation testing for void but not invalid.

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Enumeration approach for reflection

  • Key: OCL2_-22
  • Legacy Issue Number: 6610
  • Status: closed  
  • Source: Modeling Value Group ( Wim Bast)
  • Summary:
    • I think the enumeration approach to reflection leads to a dead end. Why not leave that out for now and add full access to the user model in OCL2.1, when the other UML parts have stabilized. I think it would be quite straightforward to simply copy the relevant properties and operations from Classifier/Class to OclType.
  • Reported: OCL 2.0b2 — Thu, 13 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Issue: OclModelElement

  • Key: OCL2_-21
  • Legacy Issue Number: 6570
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: The object OclModelElement object should be removed from the standard library, while OclModelElementType should remain in OCL type hierarchy.
    Rationale: It implies a useless level of wrapping for the model objects.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Issue: OclType

  • Key: OCL2_-20
  • Legacy Issue Number: 6569
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: OclType should disappear from the OCL type hierarchy.
    Rationale: OclType should be only present in the standard library to support values for the type expression used in functions like oclAsType(), oclIsKindOf(), and oclIsTypeOf().

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Issue: oclIUndefined() versus isEmpty()

  • Key: OCL2_-19
  • Legacy Issue Number: 6568
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: OCL offers two choices to test if a value is undefined or not: isEmpty and oclIsUndefined.
    Rationale: Most of the modern programming languages contain null values. The best OCL mapping for null value is the undefined value. Using isEmpty to test if a value is null/undefined is some how confusing:

    • the result of property->isEmpty() must be true if the value of the property is null/undefined
    • the result of Set {1/0}

      ->isEmpty() must be false
      because the expression property->isEmpty() is converted according to the OCL specification to Set

      {property}

      ->empty()
      These situations are a source of errors and confusion at the implementation level. I think that isEmpty() should be used only to test if a collection is empty or not; the null/undefined values should be tested using ocIslUndefined. This operation should be also valid on collections. This approach will also work nice and clear for nested collections. On the other hand I don't think that () should not be optional if the called operation has no arguments. This is feature specific to old languages like TAL and Pascal, while in modern languages like C, C++ the meaning of f and f() is different.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Issue: Attributes and Association Ends versus Properties

  • Key: OCL2_-18
  • Legacy Issue Number: 6567
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: The submission uses the terms of Attributes and Association Ends, which are no longer used in UML 2.0.
    Rationale: In order to align OCL 2.0 and UML 2.0 specifications I think that the expression package should look like: I also think that the OCL grammar should be rewritten accordingly

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Issue: Operator precedence

  • Key: OCL2_-17
  • Legacy Issue Number: 6564
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: Section 4.3.2 does not specify precedence for operators like div, mod, ^^, or ^.
    Rationale: The operator precedence must be as precise as possible in order to provide a platform-independent implementation. I think that logical operators should be organized on different levels of precedence:
    'not'
    'and'
    'or'
    'xor'
    'implies'

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    See issue 6544 for disposition

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Issue: Keywords

  • Key: OCL2_-16
  • Legacy Issue Number: 6562
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: OCL 2.0 uses keywords (e.g. and, or, xor, implies etc.) that cannot be used elsewhere.
    Rationale: This means that these names cannot be used to identify properties, classes or packages. There are two options to solve this problem: either UML 2.0 specifies the names that cannot be used or the OCL concept of keywords has to be revised.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Issue: Set of characters

  • Key: OCL2_-15
  • Legacy Issue Number: 6560
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: The OCL 2.0 specification should describe the set of characters allowed in the OCL constructions (e.g. Unicode or ASCII).
    Rationale: This will help implementers to solve another ambiguity and to produce portable implementations. Unicode will be in my opinion the best choice.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Issue: General section to define OCL concepts

  • Key: OCL2_-14
  • Legacy Issue Number: 6558
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: The specification should contain an introductory section containing definitions of the terms used in the specification and other notations that are used (e.g. well-formed expression, ill-formed expression, behaviour, undefined-behaviour etc.).
    Rationale: This will avoid ambiguities and provide a better specification of the OCL (see specifications for C++, Java, and C#).

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Reintroduce allAttributes operator

  • Key: OCL2_-13
  • Legacy Issue Number: 6556
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Herman Balsters (h.balsters@bdk.rug.nl)
    Description: Reintroduce allAttributes operator
    Rationale:
    In pre-OCL 2.0 versions, there was an operator called "allAttributes": this operator (to be applied to class objects) returns the set of attributes of that object. (This operator should also be applicable to tuples as well, by the way.) Now the strange thing has happened that this most useful operator has vanished in OCL 2.0 I propose that it be re-introduced.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Missing equality and inequality operations on collection types

  • Key: OCL2_-12
  • Legacy Issue Number: 6555
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Hubert Baumeister (baumeist@informatik.uni-muenchen.de),
    Rolf Hennicker (hennicke@informatik.uni-muenchen.de),
    Alexander Knapp (knapp@informatik.uni-muenchen.de)
    Description: Missing equality and inequality operations on collection types
    Rationale:
    The collection types Set, Sequence, and Bag show a predefined = operation. However, this operation is not defined for the abstract type Collection.
    Moreover, the operation <> is missing for all collection types.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Clarify definition of collectNested for Set, Bag, and Sequence

  • Key: OCL2_-11
  • Legacy Issue Number: 6552
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Hubert Baumeister (baumeist@informatik.uni-muenchen.de),
    Rolf Hennicker (hennicke@informatik.uni-muenchen.de),
    Alexander Knapp (knapp@informatik.uni-muenchen.de)
    Description: Clarify definition of collectNested for Set, Bag, and Sequence
    Rationale:
    For Set, Bag, and Sequence the definition of collectNested (page 6-17ff.) actually defines collect which should read collectNested.
    As a minor detail, the definition of collectNested seems to be the only one using iterators as iterator variable. This should be aligned with select, reject, etc.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Undefined values, isEmpty() and Collections

  • Key: OCL2_-10
  • Legacy Issue Number: 6546
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Octavian Patrascoiu (O.Patrascoiu@kent.ac.uk)
    Description: Most of the modern OO languages support null values, but OCL does not. In order to map null values into OCL concepts we used the undefined value. Unfortunately, OCL offers two choices to test if a value is undefined or not: isEmpty and oclIsUndefined. Using isEmpty for such a purpose is some how confusing:
    the result of property->isEmpty() must be true if the value of the property null/undefined
    the result of Set

    {1/0, 1/0}

    ->isEmpty() must be false
    These situations are a source of errors and confusion at the implementation level. I think that isEmpty() should be used only to test if a collection is empty or not; the undefined values should be tested using ocIslUndefined. This operation should be also valid on collections. This approach will also work nice and clear for nested collections.

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    The submitter’s assertion about appropriate usage of oclIsUndefined() and isEmpty() is a matter of style. OCL does support null values, even in collections, so that a collection containing a single element that is null is not empty. The isEmpty() operation applied to scalar values that are null is an inevitable consequence of the coercion of scalars to sets. It is reasonable that a scalar null is coerced to an empty set while a non-null scalar is coerced to a non-empty set. Moreover, oclIsUndefined() is true not only for null, but also for invalid, which is not permitted in collections.

    Disposition: Closed, no change

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Flagging recursive definitions

  • Key: OCL2_-7
  • Legacy Issue Number: 6543
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Jörn Guy Süß (jgsuess@cs.tu-berlin.de)
    Description: Interpreter to warn of recursive definitions
    Rationale:
    While recursive definitions are necessary to express certain constructs, they may lack a fixpoint. Specification should require implementations to provide either an occurs check or structured time-out/stack-trace to handle these situations.

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Attributes and Association Ends versus Properties

  • Key: OCL2_-9
  • Legacy Issue Number: 6545
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Octavian Patrascoiu (O.Patrascoiu@kent.ac.uk)
    Description: The submission uses the terms of Attributes and Association Ends, which are no longer used in UML 2.0. In order to align OCL 2.0 and UML 2.0 specifications I think that the expression package should look like:

    I also think that the OCL grammar should be rewritten accordingly.

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Operator precedence

  • Key: OCL2_-8
  • Legacy Issue Number: 6544
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Octavian Patrascoiu (O.Patrascoiu@kent.ac.uk)
    Description: Logical operators 'and', 'or', and 'xor' have the same precedence, which in my opinion is not natural. I think that the precedence of these operators should be from highest to lowest as follows:

    'and'
    'or'
    'xor'

    Also, the precedence of some useful operators like 'div', 'mod', '', and '^', is not specified in section 4.3.2.

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Consider OclType as a powertype

  • Key: OCL2_-4
  • Legacy Issue Number: 6532
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: OclType is currently a subtype of OclAny and seen as an enumeration type. This leads to some drawbacks w.r.t. the specification of operations like oclAsType(), oclIsKindOf(), and oclIsTypeOf(), that need to reason about type conformance. As this cannot be done without accessing the metalevel, OclType should rather be considered as a powertype (cf. OCL Workshop paper at UML 2003: S.Flake, OclType - A Type or Metatype?).

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Flagging insecure cast from Set to Sequence

  • Key: OCL2_-6
  • Legacy Issue Number: 6542
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Jörn Guy Süß (jgsuess@cs.tu-berlin.de)
    Description: Interpreter to warn of nondeterministic cast
    Rationale:
    If an OCL expression contains a cast from Set to Sequence types, nondeterminism is introduced through the order of the new sequence. Either such casts should be disallowed, or the specification should require that implementations give feedback that nondeterministic behavior is to be expected

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

domain for library operations /, div

  • Key: OCL2_-5
  • Legacy Issue Number: 6537
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Thomas Baar (thomas.baar@epfl.ch)
    Description: clarify, whether x/0 is undefined
    Rationale: On page 6/6, 6-7 the semantics of operation / is decribed informally as 'The value of self divided by r (respective i).' It remains unclear what self / 0 evaluates to.
    On page 6/7 the div-operation is specified in terms of /-operation, however with a pre-condition pre: i <> 0.
    Why is div handled differently from / ?

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

Omit predefined type OclModelElement.

  • Key: OCL2_-3
  • Legacy Issue Number: 6531
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: OclModelElement is currently defined in the OCL Standard Library. It can simply be omitted, as it is actually never used. OclModelElementType, however, must remain in the metamodel, e.g., for the mapping of OclState.

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

oclIsNew for a collection

  • Key: OCL2_-2
  • Legacy Issue Number: 6529
  • Status: closed  
  • Source: Ecole Polytechnique Federale de Lausanne ( Alfred Strohmeier)
  • Summary:

    Description: Provide an operation for creating a collection of new objects
    Rationale:
    Consider the case where you want to create a new smartcard for a set of persons. Any solution is currently longwinded. It would be nice to be able to have an operation oclIsNew that applies to a collection (or perhaps only to a Set), and states the number of objects to be created, e.g.:
    let: s: Set(SmartCards) in s.oclIsNew(self.person->size())...

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    closed no change

  • Updated: Sun, 8 Mar 2015 13:35 GMT

OCL 2.0/international character sets

  • Key: OCL2_-1
  • Legacy Issue Number: 6393
  • Status: closed  
  • Source: Simula Research Laboratory ( Dr. Bran Selic)
  • Summary:

    The OCL 2.0 FAS makes several references to ASCII (pg. 22), lowercase and uppercase characters (pg. 33-34) that violate the requirement for allowing international character sets to be used with UML. This is unacceptable since it limits the use of UML.

  • Reported: OCL 2.0b2 — Thu, 30 Oct 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.0
  • Disposition Summary:

    No Data Available

  • Updated: Sun, 8 Mar 2015 13:35 GMT

sub evaluations (02)

  • Key: OCL21-248
  • Legacy Issue Number: 7546
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    38. – [1] All sub evaluations have a different environment. The first sub evaluation
    – will start with an environment in which all iterator variables are bound to
    – the first element of the source, plus the result variable which is bound to
    – the init expression of the variable declaration in which it is defined.
    context IterateExpEval
    inv: let bindings: Sequence( NameValueBinding ) =
    iterators->collect( i |
    NameValueBinding( i.varName, source->asSequence()->first() ))
    in
    bodyEvals->at(1).environment = self.environment->addAll( bindings )
    ->add( NameValueBinding( result.name, result.initExp.resultValue ))
    ==> ’varName’ should be ’value’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

sub evaluations

  • Key: OCL21-247
  • Legacy Issue Number: 7545
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    37. – [1] All sub evaluations have a different environment. The first sub evaluation
    – will start with an environment in which all iterator variables are bound to
    – the first element of the source, plus the result variable which is bound to
    – the init expression of the variable declaration in which it is defined.
    context IterateExpEval
    inv: let bindings: Sequence( NameValueBindings ) =
    iterators->collect( i |
    NameValueBinding( i.varName, source->asSequence()->first() ))
    in
    bodyEvals->at(1).environment = self.environment->addAll( bindings )
    ->add( NameValueBinding( result.name, result.initExp.resultValue ))
    ==> ’NameValueBindings’ should be ’NameValueBinding’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 7.5.11

  • Key: OCL21-254
  • Legacy Issue Number: 8625
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    The example of Set

    {1,2,5,88}

    is more of an example of an ordered set as is Set

    {'apple','orange','strawberry'}

    . The example of a Sequence

    {1,3,45,2,3}

    does not exhibit any apparent order although a Sequence is defined as an ordered Bag. It might be wise to alter these examples to: Set

    {1,88,5,2}

    , Set ['strawberry','apple','orange'} and Sequence

    {1,2,3,3,45}
  • Reported: OCL 2.0b2 — Thu, 24 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    Yes. But reverse the sequence to clarify that the ordering may not be the obvious one. Also correct the punctuation.

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 7.5.9

  • Key: OCL21-253
  • Legacy Issue Number: 8624
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    Although the definition of oclAsType may be obvious, this is an appropriate sub-section to place a paragraph describing oclAsType. It is the only prrdefined property on All Objects that is not defined in this section.

  • Reported: OCL 2.0b2 — Thu, 24 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

value of a collection range

  • Key: OCL21-246
  • Legacy Issue Number: 7544
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    36. – [1] The value of a collection range is the range of integer numbers between
    – the result value of its first expression and its last expression.
    context CollectionRangeEval
    inv: element.isOclType( Sequence(Integer) ) and
    element = getRange( first->oclAsType(Integer), last->oclAsType(Integer) ==> ’isOclType’ should be ’oclIsTypeOf’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    ’isOclType’ was fixed in OCL 2.3.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

value of a collection range

  • Key: OCL21-245
  • Legacy Issue Number: 7541
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    33. – [1] The value of a collection range is the range of integer numbers between
    – the result value of its first expression and its last expression.
    context CollectionRangeEval
    inv: element.isOclType( Sequence(Integer) ) and
    element = getRange( first->asOclType(Integer), last->asOclType(Integer)
    )
    ==> ’asOclType’ should be ’oclAsType’ (twice)

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    ’asOclType’ was fixed in OCL 2.3.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 6.5.4.3 Combining Properties

  • Key: OCL21-249
  • Legacy Issue Number: 7722
  • Status: closed  
  • Source: BBDO InterOne ( Jasper Ullrich)
  • Summary:

    "[1] Married people are of age >= 18 context Person inv: self.wife->notEmpty() implies self.wife.age >= 18 and self.husband->notEmpty() implies self.husband.age >= 18" has to be "[1] Married people are of age >= 18 context Person inv: (self.wife->notEmpty() implies self.wife.age >= 18) and (self.husband->notEmpty() implies self.husband.age >= 18)" because of the precedence rules
    same mistake in http://www.omg.org/docs/ptc/03-10-14.pdf, "UML 2.0 OCL Final Adopted specification", chapter 7.5.3, page 18.

  • Reported: OCL 2.0b2 — Thu, 9 Sep 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

result value of an attribute call expression

  • Key: OCL21-243
  • Legacy Issue Number: 7537
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    29. – [1] The result value of an attribute call expression is the value bound to the
    – name of the attribute to which it refers.
    context AttributeCallExpEval inv:
    resultValue = if source.resultValue->isOclType(
    OCLDomain::Values::ObjectValue) then
    source.resultValue->asOclType( ObjectValue )
    .getCurrentValueOf(referredAttribute.name)
    else – must be a tuple value
    source.resultValue->asOclType( TupleValue )
    .getValueOf(referredAttribute.name)
    endif
    ==> ’isOclType’ should be ’oclIsTypeOf’
    ==> ’asOclType’ should be ’oclAsType’
    ==> ’name’ should be ’value’ (twice)

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    ’isOclType’ and ’asOclType’ were fixed in OCL 2.3.
    Yes. value rather than name

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 7.4.5

  • Key: OCL21-251
  • Legacy Issue Number: 8621
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    Typo - In the 2nd para, 3rd sent., the "t" of "type conformance error" is not italicized as is the rest of the phrase. Table 4 does not address the UML 2.0 (pct/04-10-02)use of UnlimitedNaturals as a type. This type probably Conforms to/Is a subtype of Real since UnlimitedNaturals are integers equal to or greater than 0.

  • Reported: OCL 2.0b2 — Wed, 23 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The italics are fixed in OCL 2.3.
    Subtyping is resolved by Issue 15780.
    Disposition: See issue 15780 for disposition

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 7.5.3

  • Key: OCL21-252
  • Legacy Issue Number: 8622
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    Typo - 2nd line of para under Missing AssociationEnd names, add a "s" to "tarting." Combining Properties example [2] does not show/express any combined properties; it just expresses the size property of the set employee.

  • Reported: OCL 2.0b2 — Wed, 23 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The paragraph containing the typo was removed in OCL 2.3.
    In the context of Section 7, Operation is a property so there is a combination in the example..
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 7.4

  • Key: OCL21-250
  • Legacy Issue Number: 8620
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    I'm not certain if I should report this issue to the OCL group or to the UML Superstructure group, but... the Basic Types listed in OCL do not agree with the Primitive Types listed in the UML Superstucture. OCL lists "Real" as a primitive (basic type), UML Superstructure does not, instead listing UnlimitedNatural as a primitive type. Shouldn't the two agree?

  • Reported: OCL 2.0b2 — Wed, 23 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    UML 2.5 introduces Real. UnlimiteralNatural has been in UML for a long time.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

result value of a collection literal expression evaluation

  • Key: OCL21-244
  • Legacy Issue Number: 7539
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    31. – [2] The result value of a collection literal expression evaluation is a
    – collection literal value, or one of its subtypes.
    context CollectionLiteralExpEval inv:
    resultValue.isOclKind( OCLDomain::Values::CollectionValue )
    ==> ’isOclKind’ should be ’oclIsKindOf’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    ’isOclType’ and ’asOclType’ were fixed in OCL 2.3.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Issue: Syntax of Operation Call, Iterator, and Iterate Expressions

  • Key: OCL21-204
  • Legacy Issue Number: 6571
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: Syntax for the above constructions is extremely ambiguous and it might involve backtracking.
    Rationale: According to OCL specification

    • self.f(x, y)
    • Set {1,2,3}

      ->select(x, y| x+y = 3)

    • Set {1,2,3,4,5,6}

      ->iterate(x; acc:Integer=0 | acc + x)
      describe an operation call, an iterator, and an iterate expression.
      In order to make the distinction between an iterator call and an operation call we need in this case a three token lookahead, starting from x. The problem gets even more complicated if we consider that an argument for an operation call can be an expression.
      In order to solve this problem, which is a potential source of problems for the implementation (error-prone, inefficiency aso), we think that these OCL constructs should contain some extra syntax markers. There are several choices:

    • change the comma marker from iterator calls to something else, maybe a semicolon
    • add a syntax marker to an iterator name
    • do not allow the default types
      The above choices will allow to a deterministic parser to deal with the enumerated problems more efficiently. I do not agree with textual language in which variables are given a default type according to the context in which they are used, especially if these languages are design for industrial use. The same problems were in previous versions of C standard, which allowed implicit type int for variables in constructions like
      x;
      Now, the latest C standard states that variables with default type are not allowed.
  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The exposition of the OCL grammar is poor. In OCL 2.3 the status of iterator names was clarified as not-reserved words which makes the naive parsing approach outlined above more challenging. Instead it is necessary to pursue a syntactic parse and then resolve semantics in a tree walk. The 'problems' have not prevented OCL tool being built.
    Users would not be well-served by a major resyntaxing to introduce new punctuation.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Issue: Abstract syntax tree

  • Key: OCL21-203
  • Legacy Issue Number: 6566
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: Some of the elements presented in 3.3.10 (e.g. EnumLiteralExp, children of ModelPropertyCallExp) cannot be constructed without using semantic information (e.g. the type of the expression determines if a name denotes an attribute, an association end, or an operation).
    Rationale: Usually a parser produces an AST. The semantic analyser augments the AST by computing for each node from AST the values of the attached attributes. The semantic analysis also checks if there are static semantics errors and reports them. Using other terms in the AST and hence other non-terminals in 4.5 (e.g. dot-selection-expression, arrow-selection-expression, call-expression etc.) will solve this problem.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The exposition of the OCL grammar is poor, but it is possible to resolve context pursuing a left to right analysis of an expression. It is also possible to perform a syntactic parse and then resolve semantics in a tree walk.The 'problems' have not prevented OCL tool being built.
    Users would not be well-served by a major resyntaxing to introduce new operators that required the user to have greater understanding of the metamodels.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

The notation for selecting elements should be more intuitive

  • Key: OCL21-208
  • Legacy Issue Number: 6880
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Suggestion: Use brackets as an alternate option to denote a call to the "select"
    function. Notation: mylist[iterator | condition]
    Example:
    self.ownedElementClass and name="MyClass"
    – #Class is a shorthand for oclIsKindOf(MyClass)
    equivalent to :
    self.ownedElement->select(oclIsKindOf(Class) and name="MyClass")

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The suggested syntax comes from QVTo.
    Non-trivial OCL expressions can be difficult to read. Introducing shorthand notations compromises readability. At present OCL has "." and "->" shorthands that cause significant difficulties. Introducing more does not seem appropriate for the standard language.
    It is not clear that introduction of another [..] syntax can avoid conflicts with the already challenging conflicts for association qualifiers and array indexes.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

The notation for testing the type of a metaclass is too verbose

  • Key: OCL21-207
  • Legacy Issue Number: 6879
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Suggestion: Use special characters to denote a call to oclIsKindOf and oclIsTypeOf.
    For instance, use '#ActionState' instead of 'oclIsKindOf(ActionState)'
    and use '##ActionState' instead of 'oclIsTypeOf(ActionState)'

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The suggested syntax comes from QVTo.
    Non-trivial OCL expressions can be difficult to read. Introducing shorthand notations compromises readability. At present OCL has "." and "->" shorthands that cause significant difficulties. Introducing more does not seem appropriate for the standard language.
    oclIsKindOf and oclIsTypeOf are already a source of confusion; oclIsTypeOf should rarely be used but is the more obvious name to new users, so providing a shorthand for oclIsTypeOf is unnecessary.
    The # syntax has no terminator so the shorthand needs an ambiguity resolution for a.#B.c()
    The suggested usage seems to conflict with the intuition of those familiar with unary prefixes of assembler languages or even OCL 1.x enumeration literals.
    If an improvement is to be made, something like
    (a as B).c()
    would contribute to rather than hamper readibility.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Example with TupleType

  • Key: OCL21-206
  • Legacy Issue Number: 6614
  • Status: closed  
  • Source: Modeling Value Group ( Wim Bast)
  • Summary:

    Typo in an example with TupleType Section 7.5.15: In the example constraint, expression attr: Statistics : Set(TupleType(& This must be Tuple only, according to the concrete syntax.

  • Reported: OCL 2.0b2 — Thu, 13 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The typos are corrected in the overlapping Issue 15254.
    Disposition: See issue 15254 for disposition

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Improve the notation when defining local variables

  • Key: OCL21-211
  • Legacy Issue Number: 6885
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    This is to avoid using the unreadable and unfriendly "let … in …" notation.
    Suggestion: Use the result of a variable initialization as in:
    if (let c = self.address)="" then "UNKNOWN"
    else if c.includes(Set

    {"Irak","Afganifsthan"}

    ) then "DANGEROUS"
    else "OK" endif endif endif …

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    OCL 2.3 relaxed a VariableDeclarationCS to permit the typeCS to be omitted and deduced from the initializer.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

There is no simple way to invoke an "if then else" on a collection

  • Key: OCL21-210
  • Legacy Issue Number: 6882
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Suggestion: Define an "alt" collection function, with a specific notation, as in:
    mylist->alt(iterator | condition? thenExp, elseExp)
    The expression elseExp is not evaluated if condition returns true

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    It is not true that there is no way:
    mylist->collect(iterator | if condition then thenExp else elseExp endif)
    which has two more tokens than the suggestion but avoids introducing a "?" syntax irregularity.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

notation for selecting unique element within a list should be more concise

  • Key: OCL21-209
  • Legacy Issue Number: 6881
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Suggestion: Use brackets with a "!" prefixing mark
    Example:
    self.ownedElement! #Class and name="MyClass"
    means
    self.ownedElement->select(oclIsKindOf(Class) and name="MyClass")->first()

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The suggested syntax comes from QVTo.
    Non-trivial OCL expressions can be difficult to read. Introducing shorthand notations compromises readability. At present OCL has "." and "->" shorthands that cause significant difficulties. Introducing more does not seem appropriate for the standard language.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Provide specific notational support when testing stereotypes

  • Key: OCL21-216
  • Legacy Issue Number: 6893
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Suggestion: Use the STAR character. Quotes could be used in case of blanks
    characters in stereotype names.
    Example: self.ownedElement.select(kindOf(Class) and *EJBEntity)
    returns all the classes stereotyped by the EJBEntity stereotype or a derived
    stereotype.
    Example: self.ownedElement.select(kindOf(Class) and **EJBEntity)
    returns all the classes stereotyped by the EJBEntity stereotype.

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    Stereotype support is certainly required, but I think much of the trouble is inadequate tooling. The examples can be realised by:
    self.ownedElement->select(oclIsKindOf(Class)).oclAsType(Class) ->select(extension_EJBEntity <> null)
    self.ownedElement->select(oclIsKindOf(Class)).oclAsType(Class) ->select(extension_EJBEntity.oclIsTypeOf(EJBEntity))
    The clumsy ->select(oclIsKindOf(Class)).oclAsType(Class) 'idiom' is resolved by the selectByKind library operation from Issue 18829 to give
    self.ownedElement->selectByKind(Class)->select(extension_EJBEntity <> null)
    self.ownedElement->selectByKind(Class)->select(extension_EJBEntity.oclIsTypeOf(EJBEntity))
    Given that UML specified the magic "extension_" and "base_" prefixes, it seems best to encourage rather than obscure them.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Suppress the usage of an Ocl prefix in standard library operations

  • Key: OCL21-215
  • Legacy Issue Number: 6890
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    When a name conflicts happen, it should be possible to resolve by qualifying the
    names.

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    It is not really clear what this is issue is about.
    Perhaps the suggestion is to allow users to write x.isKindOf(Y) rather than x.oclIsKindOf(Y).
    There is a small benefit but also a confusion between alternate syntaxes and a need to change syntaxes to avoid confusion occasionally. Confusion is best avoided.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Issue: Unspecified syntax and semantics for Integer, Real, and String

  • Key: OCL21-202
  • Legacy Issue Number: 6561
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: The specification does not describes the syntax of integer, real or string literals. Also, it does not contain the description of the allowed set of values.
    Rationale: Specifying the syntax and the semantics of basic types will increase the portability of OCL programs. In order to describe the semantics of basic types, the specification should describe the set of values, the allowed operations, and the standard used to perform the allowed operations. I think that it will be also useful to allow different types of integers and reals, like Integer(16), Integer(32), Integer(64), Real(32), and Real(64), in order to optimize the computational process.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    OCL 2.3 introduced concrete syntax specifications for integer, real or string literals.
    In regard to specific sets of values, the issue seems to indicate a misunderstanding of OCL; OCL is a specification language that may be evaluated. Integers and Reals are unlimited. If a particular implementation chooses to use a restricted value set, then it is for that implementation to prove that its reduced range is appropriate.
    Users can of course define their own DataTypes with whatever characteristics they find suitable.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Allow implicit type casting to boolean when a boolean is expected

  • Key: OCL21-213
  • Legacy Issue Number: 6887
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Example1: if list.select(...) then … equivalent to
    if list.select(...)->notEmpty() then …
    Example2: if item then … equivalent to
    if item<>OCLUndefined then ...

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The suggestion introduces a confusion for Boolean variables that may be null. For these variables <> null is required while for non-Boolean variables it can be omitted.
    This seems to be a significant degradation in type safety. Not even Java permits this freedom.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Allow applying iteration operations on single objects

  • Key: OCL21-212
  • Legacy Issue Number: 6886
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Use a DOT instead of an ARROW is this situation.
    myinstance.anycollectionfunction() equivalent to
    Set

    {myinstance}

    ->anycollectionfunction(…)->first()

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The usage of "." and "-"> in OCL is already confusing for many users. However there is a rationale.
    Introduction of a freedom to use "." will undermine user understanding in exchange for a minor convenience in a rare use case..
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Automatic casting between strings and enumeration values

  • Key: OCL21-214
  • Legacy Issue Number: 6889
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Make optional the qualification of enumeration values.
    Example: Be able to write 'self.aggregationKind="Composite" ' as an alternative
    to 'self.aggregationKind=AggregationKind::Composite'.

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    This seems like a harmless simplification (using OCL's single quotes rather than a Java-like double quotes), but creating a confusion between Strings and EnumerationLiterals may cause confusion when selecting operation overloads.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Add a generic text formatter operator '%

  • Key: OCL21-217
  • Legacy Issue Number: 6894
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Example: self.comment = "My name is %s" % self.firstname

  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    Presumably the suggestion is to build C's printf into OCL.
    However experience with printf has shown that it has significant type safety issues.
    I think a better solution requiring no change to the OCL language would be a String::printf() Standard Library operation.
    'My name is %s'.printf(self.firstname)
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

The index seems incomplete

  • Key: OCL21-205
  • Legacy Issue Number: 6600
  • Status: closed  
  • Source: Modeling Value Group ( Wim Bast)
  • Summary:

    The index seems incomplete and leaves out interesting items (e.g., the definition of standard library functions).

  • Reported: OCL 2.0b2 — Wed, 12 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    Inaccurate manually maintained indexes are discouraged in OMG specifications.
    The Index was accidentally omitted in OCL 2.3. It will not be re-instated.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

arguments of the return message of an ocl message expression

  • Key: OCL21-234
  • Legacy Issue Number: 7523
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    15. – [5] The arguments of the return message of an ocl message expression
    – evaluation must correspond to the names given by the formal output parameters,
    – and the result type of the operation indicated in the ocl message expression.
    – Note that the Parameter type is defined in the UML 1.4 foundation package.
    context OclMessageExpEval
    inv: let returnArguments: Sequence{ NameValueBindings ) =
    resultValue.returnMessage.arguments ,
    formalParameters: Sequence

    { Parameter }

    =
    ==> ’

    {’ should be ’(’ (twice), and ’}

    ’ should be ’)’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

inv: model.sentSignal->size() = 1 implies

  • Key: OCL21-233
  • Legacy Issue Number: 7522
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    Sequence

    {1.. arguments->size()}

    ->forAll( i |
    arguments->at.variable->size() = 1 implies
    model.sentSignal.signal.feature->select(
    arguments->at.variable )->notEmpty()
    and
    arguments->at.expression->size() = 1 implies
    model.sentSignal.signal.feature.oclAsType(StructuralFeature).type =
    arguments->at.expression.model
    ==> missing final closing bracket

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

’element’ should be ’elements’

  • Key: OCL21-236
  • Legacy Issue Number: 7525
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    17. – [1] All elements belonging to a sequence value have unique index numbers.
    inv: self.element->isUnique(e : Element | e.indexNr)
    ==> missing context statement: context SequenceTypeValue,
    ==> ’element’ should be ’elements’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Only one of the attributes isPost and isPre may be true at the same time.

  • Key: OCL21-235
  • Legacy Issue Number: 7524
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    16. – [1] Only one of the attributes isPost and isPre may be true at the same time.
    context LocalSnapshot
    inv: isPost implies isPre = false
    inv: ispre implies isPost = false
    ==> second invariant: ’ispre’ should be ’isPre’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

elements in a tuple value

  • Key: OCL21-242
  • Legacy Issue Number: 7531
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    23. – [1] The elements in a tuple value must have a type that conforms to the type
    – of the corresponding tuple parts.
    context TupleValue inv:
    elements->forAll( elem |
    let correspondingPart: Attribute =
    self.model.allAttributes()->select( part | part.name = elem.name ) in elem.value.model.conformsTo( correspondingPart.type ) )
    ==> ’Attribute’ should be ’UML14::Core::Attribute’
    ==> ’select’ should be ’any’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    No: OCL 2.4 does not yet have a UML-aligned type system so the UML14::Core:: is a solution for one particular tool. The prefix certainly shouldn't be UML14. It is likely that the UML aligned solution will not require a prefix at all legitimizing the original exposition.
    Yes: any rather than select

  • Updated: Fri, 6 Mar 2015 20:58 GMT

arguments

  • Key: OCL21-232
  • Legacy Issue Number: 7521
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    13. – [4] The arguments of an ocl message expression evaluation must correspond to
    – the formal input parameters of the operation, or the attributes of the signal
    – indicated in the ocl message expression.
    context OclMessageExpEval
    inv: model.calledOperation->size() = 1 implies
    Sequence

    {1.. arguments->size()}

    >forAll( i | arguments>at.variable->size() = 1 implies
    model.calledOperation.operation.parameter->
    select( kind = ParameterDirectionKind::In )->at.name =
    arguments->at.variable
    and
    arguments->at.expression->size() = 1 implies
    model.calledOperation.operation.parameter->
    select( kind = ParameterDirectionKind::In )at.type =
    arguments->at.expression.model
    ==> missing ’->’ before ’at’, and missing final closing bracket

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

The history of an object is ordered.(02)

  • Key: OCL21-240
  • Legacy Issue Number: 7529
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    21. – [1] The history of an object is ordered. The first element does not have a
    – predecessor, the last does not have a successor.
    context ObjectValue
    inv: history->oclIsTypeOf(
    StandardLibrary::StdLib.Sequence(LocalSnapShot) )
    inv: history->last().succ->size = 0
    inv: history->first().Pre->size = 0
    ==> ’size’ should be ’size()’ (twice)

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    Yes, although the affected text changed slightly in OCL 2.2.

  • Updated: Fri, 6 Mar 2015 20:58 GMT

The operation allPredecessors

  • Key: OCL21-241
  • Legacy Issue Number: 7530
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    22. – [1] The operation allPredecessors returns the collection of all snapshots
    – before a snapshot, allSuccessors returns the collection of all snapshots after
    – a snapshot.
    context LocalSnapshot
    def: allPredecessors() : Sequence(LocalSnapshot) =
    if pred->notEmpty then
    pred->union(pred.allPredecessors())
    else
    Sequence {}
    endif
    def: allSuccessors() : Sequence(LocalSnapshot) =
    if succ->notEmpty then
    succ->union(succ.allSuccessors())
    else
    Sequence {}
    endif
    ==> ’notEmpty’ should be ’notEmpty()’ (twice)

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

history of an object is ordered.

  • Key: OCL21-239
  • Legacy Issue Number: 7528
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    20. – [1] The history of an object is ordered. The first element does not have a
    – predecessor, the last does not have a successor.
    context ObjectValue
    inv: history->oclIsTypeOf( Sequence(LocalSnapShot) )
    inv: history->last().succ->size = 0
    inv: history->first().Pre->size = 0
    ==> should be:
    context ObjectValue
    inv: history->oclIsTypeOf(
    StandardLibrary::StdLib.Sequence(LocalSnapShot) )
    inv: history->last().succ->size = 0
    inv: history->first().Pre->size = 0

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    This issue seems to have been corrupted and reentered as Issue 7529..
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

’Element’ should be ’NameValueBinding’

  • Key: OCL21-238
  • Legacy Issue Number: 7527
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    19. – [1] All elements belonging to a tuple value have unique names.inv: self.elements->isUnique(e : Element | e.name)
    ==> missing context statement: context TupleValue
    ==> ’Element’ should be ’NameValueBinding’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

’element’ should be ’elements’ (02)

  • Key: OCL21-237
  • Legacy Issue Number: 7526
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    18. – [1] All elements belonging to a set value have unique values.
    inv: self.element->isUnique(e : Element | e.value)
    ==> missing context statement: context SetTypeValue
    ==> ’element’ should be ’elements’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Add select/reject/collectNested to Collection

  • Key: OCL21-198
  • Legacy Issue Number: 6551
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Hubert Baumeister (baumeist@informatik.uni-muenchen.de),
    Rolf Hennicker (hennicke@informatik.uni-muenchen.de),
    Alexander Knapp (knapp@informatik.uni-muenchen.de)
    Description: Add select/reject/collectNested to Collection
    Rationale:
    The definition of any on Collection (page 6-16f.) uses select on Collection. However, select is not defined for Collection. Similarly, the definition of collect on Collection (page 6-17) uses collectNested on Collection, which is not defined on Collection. We therefore propose to add select and collectNested (and possibly reject) to Collection.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    No Data Available

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Exception of strict evaluation (queries)

  • Key: OCL21-197
  • Legacy Issue Number: 6540
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Thomas Baar (thomas.baar@epfl.ch)
    Description: Strict evaluation for queries yields to contradictions in specifications
    Rationale: Queries can be specified in two ways, as invariants and in form of pre/post conditions. Suppose we specify query q(arg) as
    post: if (arg.oclIsUndefined()) then result = true else result = false endfi
    Having this, the following invariant should evaluate always to true:
    self.q(arg) = true or self.q(arg) = false.
    However, the invariant evaluates to undef once arg evaluates to undef thanks to strict evaluation.
    There is a misconception of strict evaluation when it comes to queries. The idea of queries is to have user-defined functions on classes. Why should the user be restricted only to such function which return undef once one of its arguments is undef? Using OCL, the user can even specify queries which can handle undefined arguments (e.g. see post specification of q(arg) ). Obviously, the post specification for q(arg) makes sense.
    The rule of strict evaluations for queries should be weakened to the case where the owner of the query (the object upon the query was called) is undefined.

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    This issue was raised before undefined was clarified as null and invalid. It is now permissible to pass null values to queries. Only invalid values cannot be passed.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Issue: Virtual machine

  • Key: OCL21-201
  • Legacy Issue Number: 6559
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Description: The OCL 2.0 specification should be behaviour-oriented and not implementation-oriented (see section 4.3).
    Rationale: The idea of using OCL to describe itself is interesting from the research point of view, but unfortunately OCL is not a suitable metalanguage to define the meaning of other textual languages. I think that the best thing to do is to define a virtual machine and to describe the behaviour of the virtual machine using natural language. This technique was successfully used for languages like C, C+, Java, C#, and Prolog. I see no reasons why such a technique would fail for OCL. After all, OCL is less complex than modern programming language like C+, Java, or C#.
    A proper description and implementation of the OCL virtual machine will create all the conditions to have a language that is platform/tool independent.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The specification can no doubt be improved. Most criticisms concern inconsistency and lack of formaility. Moving to "natural language" seems a retrograde approach. Work in progress attempts to remove inconsistency from auto-generation from models, and to improve formality by using an exposition of the semantics that can be checked by Isabelle.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Clarify the UML semantics of IfExpEval

  • Key: OCL21-200
  • Legacy Issue Number: 6554
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Hubert Baumeister (baumeist@informatik.uni-muenchen.de),
    Rolf Hennicker (hennicke@informatik.uni-muenchen.de),
    Alexander Knapp (knapp@informatik.uni-muenchen.de)
    Description: Clarify the UML semantics of IfExpEval
    Rationale:
    The specification on page 5-21 of the evaluation of if_then_else omits the case when the condition evaluates to undefined. Thus the sentence should read:
    "The result value of an if expression is the result of the thenExpression if the condition is true, it is the result of the elseExpression if the condition is false, else it is undefined."

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The resolution for this becomes more complex with null/invalid rather than undefined. The resolution is in 17531.
    Disposition: See issue 17531 for disposition

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Exception of strict evaluation (implies)

  • Key: OCL21-195
  • Legacy Issue Number: 6538
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Thomas Baar (thomas.baar@epfl.ch)
    Description: Exception from strict evaluation for IMPLIES is incomplete and contradicts set-theoretical semantics
    Rationale: On page 2-10 only one exception from strict evaluation for IMPLIES is given:
    False IMPLIES x == True
    However, based on the official semantics of IMPLIES given on page A-12
    also x IMPLIES True == True

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The requested change actually occurred in OCL 2.2. However the clarification of null and invalid for Issue 17531 conflicts with the resolution, so this issue is therefore merged.
    Disposition: See issue 17531 for disposition

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Exception of strict evaluation (forAll, exists)

  • Key: OCL21-196
  • Legacy Issue Number: 6539
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Thomas Baar (thomas.baar@epfl.ch)
    Description: Exception of strict evaluation should be extended to forAll, exists
    Rationale: Suppose r(o1) = undef, r(o2) = false What is value of Exp =

    {o1, o2}

    ->forAll(x| r) ? One could argue, because of strict evaluation, the value of Exp is undef. However, this would contradict the semantics of forAll als 'iterated and' given on page A.28. Similarily, for exists.
    A note should be added on page 2-10 on evalution of expressions based on iterate.

  • Reported: OCL 2.0b2 — Mon, 10 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The resolution for this becomes more complex with null/invalid rather than undefined. The resolution is in 17531.
    Disposition: See issue 17531 for disposition

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Clarify the semantics of forAll

  • Key: OCL21-199
  • Legacy Issue Number: 6553
  • Status: closed  
  • Source: Anonymous
  • Summary:

    Author: Hubert Baumeister (baumeist@informatik.uni-muenchen.de),
    Rolf Hennicker (hennicke@informatik.uni-muenchen.de),
    Alexander Knapp (knapp@informatik.uni-muenchen.de)
    Description: Clarify the semantics of forAll
    Rationale:
    According to the informal explanation (page 6-16) the following Expression Set

    { 1 }

    ->forAll(x | x/0 < 0) would evaluate to false. However, according to the OCL definition it evaluates to undefined. Thus we propose to omit "otherwise, result is false" in the informal explanation.

  • Reported: OCL 2.0b2 — Tue, 11 Nov 2003 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The resolution for this becomes more complex with null/invalid rather than undefined. The resolution is in 17531.
    Disposition: See issue 17531 for disposition

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 1 - 13

  • Key: OCL21-261
  • Legacy Issue Number: 8667
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    General comments: OCL primitive types do not agree with UML primitive types. Multiplicity symbology for "infinite" is different. UML uses "*" whereas OCL uses "n." Capitalize the word "Boolean" as it is named for the 19th Century mathematicial George Boole. In most places it is capitalized but there are several places where it is not. I hope my comments have not been too annoying. Please consider everything I know about OCL I have learned from reading this document so if my comments don't make a lot of sense, then possibly clarification in the document may be needed.

  • Reported: OCL 2.0b2 — Wed, 30 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    OCL primitive types now align, since UML has introduced Real.
    */n multiplicity is a drawing tool artefact. It may be resolved when redrawn for an autogenerated OCL 2.5.
    boolean in non-technical contexts can be corrected.

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 11.9.3 & 11.9.4

  • Key: OCL21-260
  • Legacy Issue Number: 8666
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    Typo - pg 151 change "The standard iterator expression" to "The standard iterator expressions." The reject expression for both Bag and Sequence have "source->select(iterator | not body) on the left side of the equals symbol. Shouldn't the word "iterate" be used instead of "select?" The sortedBy expression is very restrictive if the sort order must always have the lowest value first. A statement that a sort order could be by a > value would be nice.

  • Reported: OCL 2.0b2 — Wed, 30 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The typo is actually for Set.
    The wording for reject is correct; reject is defined as select with a not body.
    The sortedBy issue is a repeat of Issue 8665, which remains unresolved. (Maybe we need a sort(i, j | body) iteration so that body can return pairwise comparison which could be in reverse order.)

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 11.2.1

  • Key: OCL21-258
  • Legacy Issue Number: 8659
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    Last line on page is a sentence fragment

  • Reported: OCL 2.0b2 — Tue, 29 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    redundant line

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 10.2.2 LocalSnapshot

  • Key: OCL21-257
  • Legacy Issue Number: 8645
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    Typos - Change "ispre" to "isPre" and reword [2] to "...postcondition snapshot does it have an associated..."

  • Reported: OCL 2.0b2 — Mon, 28 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The typo is corrected in Issue 7524.

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 7.5.13

  • Key: OCL21-255
  • Legacy Issue Number: 8626
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    The example using Bike and Car as two separate subtypes of Transport does not make any mention of Set(Car), Bag(car), or Collection(Car). Either delete reference to Car as a separate subtype of Transport or add some comments about a collection of some sort of Car conforming (and not conforming) to some other collection. I may be confused, but the statement "Note that Set(Bicycle) does not conform to Bag(Bicycle)" does not make a lot of sense to me. Wouldn't it be better to say that "Set(Bicycle) does not conform to Bag(car)?"

  • Reported: OCL 2.0b2 — Thu, 24 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    Yes the words can be a little clearer

  • Updated: Fri, 6 Mar 2015 20:58 GMT

The spec does not describes the syntax of integer, real or string literals

  • Key: OCL21-262
  • Legacy Issue Number: 8789
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    1) The specification does not describes the syntax of integer, real or string literals.
    The specification does not describes the syntax of integer, real or string literals.
    Specifying the syntax and the semantics of basic types will increase the portability
    of OCL programs

  • Reported: OCL 2.0b2 — Wed, 18 May 2005 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    These specifications were introduced in OCL 2.3
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 11.5.4

  • Key: OCL21-259
  • Legacy Issue Number: 8661
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    What is the difference in meaning between the definitions of or(b:Boolean): Boolean and xor(b:Boolean): Boolean? or(b:Boolean): Boolean says True if either self or b is true which implies "but not both" which is the ending phrase of the definition of xor(b:Boolean): Boolean.

  • Reported: OCL 2.0b2 — Tue, 29 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The resolution of Issue 17531 rephrased this.
    Disposition: See issue 17531 for disposition

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Section: 7.6.2

  • Key: OCL21-256
  • Legacy Issue Number: 8627
  • Status: closed  
  • Source: U. S. Geological Survey ( Jane Messenger)
  • Summary:

    In the 2nd paragraph, shange "The value of the reject operation..." to "The value of the collect operation..."

  • Reported: OCL 2.0b2 — Thu, 24 Mar 2005 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The typo is corrected in Issue 15980.
    Disposition: See issue 15980 for disposition

  • Updated: Fri, 6 Mar 2015 20:58 GMT

rewrite well-formedness

  • Key: OCL21-219
  • Legacy Issue Number: 7466
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    We would like to be able to rewrite well-formedness rules like:
    context IfExp
    inv: self.condition.type.oclIsKindOf(Primitive) and
    self.condition.type.name = ’Boolean’
    as
    context IfExp
    inv: self.condition.type.oclIsKindOf(Primitive) and This is more clear that the first expression where the matching is done by name.
    Because the metamodel resides on a level higher than the standard library, we need a way to get access
    to the standard library elements. One solution is to define a package ’StandardLibrary’ that contains a
    Classifier called ’StdLib’, that holds the following attributes:
    • + Collection: CollectionType;
    • + Set: SetType;
    • + OrderedSet: OrderedSetType;
    • + Sequence: SequenceType;
    • + Bag: BagType;
    • + String: Primitive;
    • + OclMessage: OclMessageType;
    • + OclVoid : VoidType;
    Other solutions might be possible, but the above has been proven to work in the Octopus tool.

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    Unfortunately the 'better' example is missing from the above text. Presumably it should read:
    context IfExp
    inv: self.condition.type.oclIsKindOf(Primitive) and self.condition.type = StdLib::Boolean
    OCL supports type literal as in a.oclIsKindOf(Boolean) so the 1.x practice of comparing types by string-valued name was a misunderstanding. It is possible to write
    inv: self.condition.type.oclIsKindOf(Primitive) and self.condition.type = Boolean
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

Make usage of tuples less complex and less verbose

  • Key: OCL21-218
  • Legacy Issue Number: 6895
  • Status: closed  
  • Source: France Telecom R&D ( Mariano Belaunde)
  • Summary:

    Suggestions:

    • Make type spec of internal fields optional.
    • Make field name in tuples optional (using positional access)
  • Reported: OCL 2.0b2 — Wed, 7 Jan 2004 05:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    OCL 2.3 relaxed VariableDeclarationCS to allow inference of an omitted type from an initializer.
    Allowing field names to be omitted and resolved positionally reduces type safety of programs when first written and makes them vulnerable to meta-model evolution thereafter.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

sub evaluations (in the sequence bodyEvals)

  • Key: OCL21-225
  • Legacy Issue Number: 7512
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    4. – [2] All sub evaluations (in the sequence bodyEvals) have a different
    – environment. The first sub evaluation will start with an environment in which
    – all iterator variables are bound to the first element of the source. Note that
    – this is an arbitrary choice, one could easily well start with the last element
    – of the source, or any other combination.
    context LoopExpEval
    inv: let bindings: Sequence( NameValueBindings ) =
    iterators->collect( i |
    NameValueBinding( i.varName, source->asSequence()->first() )
    in
    bodyEvals->at(1).environment = self.environment->addAll( bindings )
    ==> missing closing bracket before ’in’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

context IfExpEval inv:

  • Key: OCL21-224
  • Legacy Issue Number: 7511
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    resultValue = if condition then thenExpression.resultValue else
    elseExpression.resultValue
    ==> missing ’endif’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    No Data Available

  • Updated: Fri, 6 Mar 2015 20:58 GMT

isSent attribute

  • Key: OCL21-228
  • Legacy Issue Number: 7515
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    7. – [4] The isSent attribute of the resulting ocl message value is true only if
    – the message value is in the outgoing messages of the ‘self’ object.
    context OclMessageExpEval
    inv:
    if resultValue.oclIsUndefined()
    resultValue.isSent = false
    else
    resultValue.isSent = true
    endif
    ==> add ’then’ after ’oclIsUndefined()’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

ocl message expression

  • Key: OCL21-227
  • Legacy Issue Number: 7514
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    6. – [2] The result value of an ocl message expression is the sequence of the
    – outgoing messages of the ‘self’ object that matches the expression. Note that
    – this may result in an empty sequence when the expression does not match to any
    – of the outgoing messages.
    context OclMessageExpEval
    inv: resultValue =
    environment.getValueOf( ’self’ ).outgoingMessages->select( m |
    m.target = target.resultValue and
    m.name = self.name and
    self.arguments->forAll( expArg: OclMessageArgEval |
    not expArg.resultValue.oclIsUndefined() implies
    m.arguments->exists( messArg | messArg.value = expArg.value ))
    ==> add one closing bracket after expression

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

an iterate expression evaluation

  • Key: OCL21-231
  • Legacy Issue Number: 7520
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    12. – [1] The model of the result of an iterate expression evaluation is equal to
    – the model of the result of the associated IterateExp.
    context IterateExpEval
    inv: result.model = model.result )
    ==> remove last bracket

  • Reported: OCL 2.0b2 — Mon, 14 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

missing ’inv:’ twice

  • Key: OCL21-230
  • Legacy Issue Number: 7519
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    11. – [1] The condition evaluation corresponds with the condition of the expression,
    – and likewise for the thenExpression and the else Expression.
    context IfExpEval inv:
    condition.model = model.condition
    thenExpression.model = model.thenExpression
    elseExpression.model = model.elseExpression
    ==> missing ’inv:’ twice

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

1] The type of the attribute is the type of the value expression.

  • Key: OCL21-222
  • Legacy Issue Number: 7508
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    context TupleLiteralExpPart
    inv: attribute.type = value.type
    ==> should be removed, class does not exist

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The offending text was removed in OCL 2.2.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

An additional attribute refParams lists all parameters of the referred

  • Key: OCL21-221
  • Legacy Issue Number: 7507
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    38. – [3] An additional attribute refParams lists all parameters of the referred
    – operation except the return and out parameter(s).
    context OperationCallExp
    def: refParams: Sequence(Parameter) = referredOperation.parameters-
    >select (p

    p.kind <> ParameterDirectionKind::return or
    p.kind <> ParameterDirectionKind::out)
    ==> ’parameters’ should be ’Parameter’

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The offending parameters waschanged to ownedParameter-in OCL 2.2.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT

sub evaluations (in sequence bodyEvals) have different environment.

  • Key: OCL21-226
  • Legacy Issue Number: 7513
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    5. – [3] All sub evaluations (in the sequence bodyEvals) have a different
    – environment. The environment is the same environment as the one from the
    – previous bodyEval, where the iterator variable or variables are bound to the
    – subsequent elements of the source.
    context LoopExpEval
    inv:
    let SS: Integer = source.value->size()
    in if iterators->size() = 1 then
    Sequence

    {2..SS}

    ->forAll( i: Integer |
    bodyEvals->at.environment = bodyEvals->at(i-1).environment
    >replace( NameValueBinding( iterators>at(1).varName,
    source.value->asSequence()->at )))
    else – iterators->size() = 2
    Sequence

    {2..SS*SS}

    ->forAll( i: Integer |
    bodyEvals->at.environment = bodyEvals->at(i-1).environment
    >replace( NameValueBinding( iterators>at(1).varName,
    source->asSequence()->at(i.div(SS) + 1) ))
    >replace( NameValueBinding( iterators>at(2).varName,
    source.value->asSequence()->at(i.mod(SS)) )) ) endif
    ==> two closing brackets before ’endif’ should be removed

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    yes

  • Updated: Fri, 6 Mar 2015 20:58 GMT

add ’and’ between both expression parts

  • Key: OCL21-229
  • Legacy Issue Number: 7516
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    8. – [1] An ocl message argument evaluation has either an ocl expression
    – evaluation, or an unspecified value expression evaluation, not both.
    context OclMessageArgEval inv:
    expression->size() = 1 implies unspecified->size() = 0
    expression->size() = 0 implies unspecified->size() = 1
    ==> add ’and’ between both expression parts

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    Yes. But I cannot check the precedence without reading the spec so use a more obvious exposition

  • Updated: Fri, 6 Mar 2015 20:58 GMT

context LocalSnapshot

  • Key: OCL21-223
  • Legacy Issue Number: 7509
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    Errors found in UML-based-semantics
    1. context LocalSnapshot
    def: let allPredecessors() : Sequence(LocalSnapshot) =
    if pred->notEmpty then
    pred->union(pred.allPredecessors())
    else
    Sequence {}
    endif
    def: let allSuccessors() : Sequence(LocalSnapshot) =
    if succ->notEmpty then
    succ->union(succ.allSuccessors())
    else
    Sequence {}
    ==> remove ’let’ from both expressions, add ’endif’ after the second

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    Yes, except final endif is there (but was wrong font in OCL 2.0).

  • Updated: Fri, 6 Mar 2015 20:58 GMT

context State::getStateMachine() : StateMachine

  • Key: OCL21-220
  • Legacy Issue Number: 7503
  • Status: closed  
  • Source: OpenModeling ( Jos Warmer)
  • Summary:

    post: result =
    if statemachine->notEmpty() then
    stateMachine
    else
    – must be part of a composite state
    state.container.getStateMachine()
    endif
    context Transition::getStateMachine() : StateMachine
    post: result =
    if statemachine->notEmpty() then
    stateMachine
    else
    – state is not empty
    state.getStateMachine()
    endif
    ==> in both expressions ’statemachine’ should be stateMachine

  • Reported: OCL 2.0b2 — Thu, 10 Jun 2004 04:00 GMT
  • Disposition: Resolved — OCL 2.1
  • Disposition Summary:

    The offending expressions were rewritten in OCL 2.2 without similar typos.
    Disposition: Closed, no change

  • Updated: Fri, 6 Mar 2015 20:58 GMT