Issue 18465: UML2.5 issue: incorrect use of oclKindOf()->notEmpty() (uml25-ftf) Source: Microsoft (Mr. Steve Cook, stcook(at)microsoft.com) Nature: Revision Severity: Summary: There is a systematic error in the OCL in Clause 17. There are many erroneous expressions of the form x.oclIsKindOf(T)->notEmpty(). These are apparently intended to mean x.oclIsKindOf(T), i.e. a Boolean-valued test that x has the type T or a subtype. The fact that the ->notEmpty() happens to pass the syntax checking is an unfortunate and misleading “feature” of OCL. Semantically, all of these expressions in their current form will evaluate to true, whatever their arguments. I found these constraints all to have the problem: all_lifelines interaction_uses_share_lifeline selector_int_or_string sending_receiving_message_event signature_is_signal signature_is_operation_request signature_is_operation_reply Resolution: Revised Text: Actions taken: February 20, 2013: received issue Discussion: End of Annotations:===== m: Steve Cook To: "issues@omg.org" Subject: UML2.5 issue: incorrect use of oclKindOf()->notEmpty() Thread-Topic: UML2.5 issue: incorrect use of oclKindOf()->notEmpty() Thread-Index: Ac4PZQIAAqtUV8Q8SGirjkP67uqufw== Date: Wed, 20 Feb 2013 12:29:13 +0000 Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.166.18.102] X-Forefront-Antispam-Report: CIP:131.107.125.37;CTRY:US;IPV:CAL;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(189002)(199002)(54356001)(74502001)(16406001)(56776001)(80022001)(54316002)(76482001)(512954001)(5343635001)(53806001)(20776003)(5343655001)(50986001)(51856001)(15202345001)(55846006)(47446002)(63696002)(65816001)(56816002)(44976002)(4396001)(33656001)(31966008)(49866001)(77982001)(59766001)(16236675001)(46102001)(47976001)(79102001)(74662001)(47736001);DIR:OUT;SFP:;SCL:1;SRVR:BY2FFO11HUB039;H:TK5EX14MLTC104.redmond.corp.microsoft.com;RD:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-OriginatorOrg: microsoft.onmicrosoft.com X-Forefront-PRVS: 07630F72AD X-Virus-Scanned: amavisd-new at omg.org There is a systematic error in the OCL in Clause 17. There are many erroneous expressions of the form x.oclIsKindOf(T)->notEmpty(). These are apparently intended to mean x.oclIsKindOf(T), i.e. a Boolean-valued test that x has the type T or a subtype. The fact that the ->notEmpty() happens to pass the syntax checking is an unfortunate and misleading .feature. of OCL. Semantically, all of these expressions in their current form will evaluate to true, whatever their arguments. I found these constraints all to have the problem: all_lifelines interaction_uses_share_lifeline selector_int_or_string sending_receiving_message_event signature_is_signal signature_is_operation_request signature_is_operation_reply -- Steve