Issue 15368: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names (ocl2-rtf) Source: Dell Technologies (Mr. George Ericson, ericson.george(at)emc.com) Nature: Uncategorized Issue Severity: Summary: The text in the clause titled “Qualifying association ends with association names” points out that it is possible to qualify an accessed role name with the name of the association using the ‘::’ separator. (In the example: aC1.A1::c2.) There is no issue with this as a means to access the associated instance. However, in doing so, the clause misses the opportunity to also say that it is also possible to reference the same associated instance using the ‘.’ (dot) operator in place of the ‘..’ separator, (for example: aC1.A1.c2). While this was also true prior to OCL 2.2, only the later technique was referenced in OCL 2.0. Clarification is needed with respect to whether or not there are any semantic differences between the uses of these two techniques. Where the functionality overlaps, is there a preferred technique? Nit: the last sentence of the example: “If a C1 is aC1 access, aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid.” Should probably say: “If aC1 isa C1, then aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid.” Resolution: Revised Text: Actions taken: July 9, 2010: received issue Discussion: End of Annotations:===== d: {2B71DCE6-927C-4733-8FCD-76992F80F557} x-cr-hashedpuzzle: A3gU BjIl BrjI DRTI Eo60 FCgh GHym GqFn G/kw HnR6 Iy8q KbeV KmEr K5+Y Lna2 L2J0;1;aQBzAHMAdQBlAHMAQABvAG0AZwAuAG8AcgBnAA==;Sosha1_v1;7;{2B71DCE6-927C-4733-8FCD-76992F80F557};ZQByAGkAYwBzAG8AbgBfAGcAZQBvAHIAZwBlAEAAZQBtAGMALgBjAG8AbQA=;Fri, 09 Jul 2010 19:45:11 GMT;TwBDAEwAIAAyAC4AMgA6ACAAUwBlAGMAdABpAG8AbgA6ACAANwAuADUALgAzACAAQwBsAGEAcgBpAGYAaQBjAGEAdABpAG8AbgAgAHIAZQBxAHUAaQByAGUAZAAgAGYAbwByACAAUQB1AGEAbABpAGYAeQBpAG4AZwAgAGEAcwBzAG8AYwBpAGEAdABpAG8AbgAgAGUAbgBkAHMAIAB3AGkAdABoACAAYQBzAHMAbwBjAGkAYQB0AGkAbwBuACAAbgBhAG0AZQBzAC4A Subject: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. Date: Fri, 9 Jul 2010 15:45:11 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. thread-index: Acsfnz4YzsLtHR8/S3yINf94WBBsEQ== From: To: X-OriginalArrivalTime: 09 Jul 2010 19:45:14.0629 (UTC) FILETIME=[401FFB50:01CB1F9F] X-EMM-EM: Active The text in the clause titled .Qualifying association ends with association names. points out that it is possible to qualify an accessed role name with the name of the association using the .::. separator. (In the example: aC1.A1::c2.) There is no issue with this as a means to access the associated instance. However, in doing so, the clause misses the opportunity to also say that it is also possible to reference the same associated instance using the ... (dot) operator in place of the .... separator, (for example: aC1.A1.c2). While this was also true prior to OCL 2.2, only the later technique was referenced in OCL 2.0. Clarification is needed with respect to whether or not there are any semantic differences between the uses of these two techniques. Where the functionality overlaps, is there a preferred technique? Nit: the last sentence of the example: .If a C1 is aC1 access, aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid.. Should probably say: .If aC1 isa C1, then aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid.. From: "Willink, Ed" To: ocl2-rtf@omg.org Cc: "'ericson_george@emc.com'" Subject: RE: issue 15368 -- OCL 2 RTF issue Date: Mon, 12 Jul 2010 11:02:03 +0100 X-Mailer: Internet Mail Service (5.5.2657.72) Hi George In OCL 2.0 and 2.2, aC1.A1.c2 is not a valid way of accessing the association A1, since OCL specifies that the first letter be converted to lowercase. Issue 15235 identifies this lack of UML alignment. Your comment applies only to OCL 2.3 where we can try to accommodate your editorial suggestions. aC1.A1.c2 is a navigation via A1 that might be an association (class) or property end. aC1.A1::c2 is a navigation using A1::c2. A1 must be a property end 'owner'. so given a perverse situation in which A1:c2 and A2::A1 are visible associations for aC1, the two could be different. Regards Ed Willink -------------------------------------------------------------------------------- From: Juergen Boldt [mailto:juergen@omg.org] Sent: 09 July 2010 21:17 To: issues@omg.org; ocl2-rtf@omg.org Subject: issue 15368 -- OCL 2 RTF issue x-cr-puzzleid: {2B71DCE6-927C-4733-8FCD-76992F80F557} x-cr-hashedpuzzle: A3gU BjIl BrjI DRTI Eo60 FCgh GHym GqFn G/kw HnR6 Iy8q KbeV KmEr K5+Y Lna2 L2J0;1;aQBzAHMAdQBlAHMAQABvAG0AZwAuAG8AcgBnAA==;Sosha1_v1;7;{2B71DCE6-927C-4733-8FCD-76992F80F557};ZQByAGkAYwBzAG8AbgBfAGcAZQBvAHIAZwBlAEAAZQBtAGMALgBjAG8AbQA=;Fri, 09 Jul 2010 19:45:11 GMT;TwBDAEwAIAAyAC4AMgA6ACAAUwBlAGMAdABpAG8AbgA6ACAANwAuADUALgAzACAAQwBsAGEAcgBpAGYAaQBjAGEAdABpAG8AbgAgAHIAZQBxAHUAaQByAGUAZAAgAGYAbwByACAAUQB1AGEAbABpAGYAeQBpAG4AZwAgAGEAcwBzAG8AYwBpAGEAdABpAG8AbgAgAGUAbgBkAHMAIAB3AGkAdABoACAAYQBzAHMAbwBjAGkAYQB0AGkAbwBuACAAbgBhAG0AZQBzAC4A Subject: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. Date: Fri, 9 Jul 2010 15:45:11 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. thread-index: Acsfnz4YzsLtHR8/S3yINf94WBBsEQ== From: To: X-OriginalArrivalTime: 09 Jul 2010 19:45:14.0629 (UTC) FILETIME=[401FFB50:01CB1F9F] X-EMM-EM: Active The text in the clause titled "Qualifying association ends with association names" points out that it is possible to qualify an accessed role name with the name of the association using the '::' separator. (In the example: aC1.A1::c2.) There is no issue with this as a means to access the associated instance. However, in doing so, the clause misses the opportunity to also say that it is also possible to reference the same associated instance using the '.' (dot) operator in place of the '..' separator, (for example: aC1.A1.c2). While this was also true prior to OCL 2.2, only the later technique was referenced in OCL 2.0. Clarification is needed with respect to whether or not there are any semantic differences between the uses of these two techniques. Where the functionality overlaps, is there a preferred technique? Nit: the last sentence of the example: "If a C1 is aC1 access, aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Should probably say: "If aC1 isa C1, then aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Juergen Boldt Director, Member Services Object Management Group 140 Kendrick St Building A Suite 300 Needham, MA 02494 USA tel: +1 781 444 0404 x 132 fax: +1 781 444 0320 email: juergen@omg.org www.omg.org Please consider the environment before printing a hard copy of this e-mail. The information contained in this e-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this e-mail. Such unauthorised use may be unlawful. If you have received this e-mail in error, please inform us immediately on +44 (0)118 986 8601 and delete it and all copies from your system. Thales Research and Technology (UK) Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 774298 Thales UK Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 868273 Subject: RE: issue 15368 -- OCL 2 RTF issue Date: Mon, 12 Jul 2010 07:58:20 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: issue 15368 -- OCL 2 RTF issue thread-index: AcshqUxuD7cSMPWYTZ6lCR9kKjXgoQADH2pQ From: To: , X-OriginalArrivalTime: 12 Jul 2010 11:58:20.0899 (UTC) FILETIME=[85E14330:01CB21B9] X-EMM-EM: Active Taking a leap, it seems that generally OCL doesn.t care where an association end is owned, but in the case where one does care, the .::. notation can be used. When ownership does not matter, the ... dot notation should be used to navigate across associations. In the case where the association end names might be ambiguous, the association name should be used to qualify the association end name, using either notation. [I think this only happens with associationclass.] I.ve included additional, more specific comments inline. Thanks, George From: Willink, Ed [mailto:Ed.Willink@thalesgroup.com] Sent: Monday, July 12, 2010 6:02 AM To: ocl2-rtf@omg.org Cc: Ericson, George Subject: RE: issue 15368 -- OCL 2 RTF issue Hi George In OCL 2.0 and 2.2, aC1.A1.c2 is not a valid way of accessing the association A1, since OCL specifies that the first letter be converted to lowercase. Issue 15235 identifies this lack of UML alignment. [George] The OCL requirement for the first letter of an Association name to be lowercase seems arbitrary to me. Is there a functional reason for that requirement? Your comment applies only to OCL 2.3 where we can try to accommodate your editorial suggestions. aC1.A1.c2 is a navigation via A1 that might be an association (class) or property end. aC1.A1::c2 is a navigation using A1::c2. A1 must be a property end 'owner'. I see your point w.r.t. property end owner. But note that the clause following seems to be at odds and somewhat misleading in the case where the association end name is ambiguous: .Ends owned by associations In a UML association, an end may be owned by the Classifier at that end, or by the association, itself. The ownership of the end is not significant to OCL. In either case, the association end is considered as a property of the Classifier and can be navigated from that end to the other.. so given a perverse situation in which A1:c2 and A2::A1 are visible associations for aC1, the two could be different. [George] I.m having trouble imagining how this comes about. Regards Ed Willink -------------------------------------------------------------------------------- From: Juergen Boldt [mailto:juergen@omg.org] Sent: 09 July 2010 21:17 To: issues@omg.org; ocl2-rtf@omg.org Subject: issue 15368 -- OCL 2 RTF issue x-cr-puzzleid: {2B71DCE6-927C-4733-8FCD-76992F80F557} x-cr-hashedpuzzle: A3gU BjIl BrjI DRTI Eo60 FCgh GHym GqFn G/kw HnR6 Iy8q KbeV KmEr K5+Y Lna2 L2J0;1;aQBzAHMAdQBlAHMAQABvAG0AZwAuAG8AcgBnAA==;Sosha1_v1;7;{2B71DCE6-927C-4733-8FCD-76992F80F557};ZQByAGkAYwBzAG8AbgBfAGcAZQBvAHIAZwBlAEAAZQBtAGMALgBjAG8AbQA=;Fri, 09 Jul 2010 19:45:11 GMT;TwBDAEwAIAAyAC4AMgA6ACAAUwBlAGMAdABpAG8AbgA6ACAANwAuADUALgAzACAAQwBsAGEAcgBpAGYAaQBjAGEAdABpAG8AbgAgAHIAZQBxAHUAaQByAGUAZAAgAGYAbwByACAAUQB1AGEAbABpAGYAeQBpAG4AZwAgAGEAcwBzAG8AYwBpAGEAdABpAG8AbgAgAGUAbgBkAHMAIAB3AGkAdABoACAAYQBzAHMAbwBjAGkAYQB0AGkAbwBuACAAbgBhAG0AZQBzAC4A Subject: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. Date: Fri, 9 Jul 2010 15:45:11 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. thread-index: Acsfnz4YzsLtHR8/S3yINf94WBBsEQ== From: To: X-OriginalArrivalTime: 09 Jul 2010 19:45:14.0629 (UTC) FILETIME=[401FFB50:01CB1F9F] X-EMM-EM: Active The text in the clause titled "Qualifying association ends with association names" points out that it is possible to qualify an accessed role name with the name of the association using the '::' separator. (In the example: aC1.A1::c2.) There is no issue with this as a means to access the associated instance. However, in doing so, the clause misses the opportunity to also say that it is also possible to reference the same associated instance using the '.' (dot) operator in place of the '..' separator, (for example: aC1.A1.c2). While this was also true prior to OCL 2.2, only the later technique was referenced in OCL 2.0. Clarification is needed with respect to whether or not there are any semantic differences between the uses of these two techniques. Where the functionality overlaps, is there a preferred technique? Nit: the last sentence of the example: "If a C1 is aC1 access, aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Should probably say: "If aC1 isa C1, then aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Juergen Boldt Director, Member Services Object Management Group 140 Kendrick St Building A Suite 300 Needham, MA 02494 USA tel: +1 781 444 0404 x 132 fax: +1 781 444 0320 email: juergen@omg.org www.omg.org Please consider the environment before printing a hard copy of this e-mail. The information contained in this e-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this e-mail. Such unauthorised use may be unlawful. If you have received this e-mail in error, please inform us immediately on +44 (0)118 986 8601 and delete it and all copies from your system. Thales Research and Technology (UK) Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 774298 Thales UK Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 868273 From: "Willink, Ed" To: "'ericson_george@emc.com'" , ocl2-rtf@omg.org Subject: RE: issue 15368 -- OCL 2 RTF issue Date: Mon, 12 Jul 2010 13:49:27 +0100 X-Mailer: Internet Mail Service (5.5.2657.72) Hi George I agree with your summary. The rationale for the lowercase first letter is probably derived from the same policy that UML applies for unnamed properties. My proposed resolution of Issue 15235 will be to align with UML. The OCL 2.0 specification was written before the UML 2.0 specification was fully stable/understood. OCL has adapted slightly to align with UML, but there are many places where this alignment was rather localized and so finding contradictory paragraphs is not that hard. Perhaps I should clarify the perverse situation: association class A1 { member c1 : C1; member c2 : C2; } class C1 { property A1 : D; } class C2 { } class D { property c2 : C2; } aC1.A1.c2 -- aC1.A1::c2 or aC1.A1.D::c2. Regards Ed Willink -------------------------------------------------------------------------------- From: ericson_george@emc.com [mailto:ericson_george@emc.com] Sent: 12 July 2010 12:58 To: Ed.Willink@thalesgroup.com; ocl2-rtf@omg.org Subject: RE: issue 15368 -- OCL 2 RTF issue Taking a leap, it seems that generally OCL doesn't care where an association end is owned, but in the case where one does care, the '::' notation can be used. When ownership does not matter, the '.' dot notation should be used to navigate across associations. In the case where the association end names might be ambiguous, the association name should be used to qualify the association end name, using either notation. [I think this only happens with associationclass.] I've included additional, more specific comments inline. Thanks, George From: Willink, Ed [mailto:Ed.Willink@thalesgroup.com] Sent: Monday, July 12, 2010 6:02 AM To: ocl2-rtf@omg.org Cc: Ericson, George Subject: RE: issue 15368 -- OCL 2 RTF issue Hi George In OCL 2.0 and 2.2, aC1.A1.c2 is not a valid way of accessing the association A1, since OCL specifies that the first letter be converted to lowercase. Issue 15235 identifies this lack of UML alignment. [George] The OCL requirement for the first letter of an Association name to be lowercase seems arbitrary to me. Is there a functional reason for that requirement? Your comment applies only to OCL 2.3 where we can try to accommodate your editorial suggestions. aC1.A1.c2 is a navigation via A1 that might be an association (class) or property end. aC1.A1::c2 is a navigation using A1::c2. A1 must be a property end 'owner'. I see your point w.r.t. property end owner. But note that the clause following seems to be at odds and somewhat misleading in the case where the association end name is ambiguous: "Ends owned by associations In a UML association, an end may be owned by the Classifier at that end, or by the association, itself. The ownership of the end is not significant to OCL. In either case, the association end is considered as a property of the Classifier and can be navigated from that end to the other." so given a perverse situation in which A1:c2 and A2::A1 are visible associations for aC1, the two could be different. [George] I'm having trouble imagining how this comes about. Regards Ed Willink -------------------------------------------------------------------------------- From: Juergen Boldt [mailto:juergen@omg.org] Sent: 09 July 2010 21:17 To: issues@omg.org; ocl2-rtf@omg.org Subject: issue 15368 -- OCL 2 RTF issue x-cr-puzzleid: {2B71DCE6-927C-4733-8FCD-76992F80F557} x-cr-hashedpuzzle: A3gU BjIl BrjI DRTI Eo60 FCgh GHym GqFn G/kw HnR6 Iy8q KbeV KmEr K5+Y Lna2 L2J0;1;aQBzAHMAdQBlAHMAQABvAG0AZwAuAG8AcgBnAA==;Sosha1_v1;7;{2B71DCE6-927C-4733-8FCD-76992F80F557};ZQByAGkAYwBzAG8AbgBfAGcAZQBvAHIAZwBlAEAAZQBtAGMALgBjAG8AbQA=;Fri, 09 Jul 2010 19:45:11 GMT;TwBDAEwAIAAyAC4AMgA6ACAAUwBlAGMAdABpAG8AbgA6ACAANwAuADUALgAzACAAQwBsAGEAcgBpAGYAaQBjAGEAdABpAG8AbgAgAHIAZQBxAHUAaQByAGUAZAAgAGYAbwByACAAUQB1AGEAbABpAGYAeQBpAG4AZwAgAGEAcwBzAG8AYwBpAGEAdABpAG8AbgAgAGUAbgBkAHMAIAB3AGkAdABoACAAYQBzAHMAbwBjAGkAYQB0AGkAbwBuACAAbgBhAG0AZQBzAC4A Subject: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. Date: Fri, 9 Jul 2010 15:45:11 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. thread-index: Acsfnz4YzsLtHR8/S3yINf94WBBsEQ== From: To: X-OriginalArrivalTime: 09 Jul 2010 19:45:14.0629 (UTC) FILETIME=[401FFB50:01CB1F9F] X-EMM-EM: Active The text in the clause titled "Qualifying association ends with association names" points out that it is possible to qualify an accessed role name with the name of the association using the '::' separator. (In the example: aC1.A1::c2.) There is no issue with this as a means to access the associated instance. However, in doing so, the clause misses the opportunity to also say that it is also possible to reference the same associated instance using the '.' (dot) operator in place of the '..' separator, (for example: aC1.A1.c2). While this was also true prior to OCL 2.2, only the later technique was referenced in OCL 2.0. Clarification is needed with respect to whether or not there are any semantic differences between the uses of these two techniques. Where the functionality overlaps, is there a preferred technique? Nit: the last sentence of the example: "If a C1 is aC1 access, aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Should probably say: "If aC1 isa C1, then aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Juergen Boldt Director, Member Services Object Management Group 140 Kendrick St Building A Suite 300 Needham, MA 02494 USA tel: +1 781 444 0404 x 132 fax: +1 781 444 0320 email: juergen@omg.org www.omg.org Please consider the environment before printing a hard copy of this e-mail. The information contained in this e-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this e-mail. Such unauthorised use may be unlawful. If you have received this e-mail in error, please inform us immediately on +44 (0)118 986 8601 and delete it and all copies from your system. Thales Research and Technology (UK) Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 774298 Thales UK Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 868273 Subject: RE: issue 15368 -- OCL 2 RTF issue Date: Mon, 12 Jul 2010 09:50:03 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: issue 15368 -- OCL 2 RTF issue thread-index: AcshwLGvBSS2vpZSTEKRxyBQRP3NIAACGJ9g From: To: , X-OriginalArrivalTime: 12 Jul 2010 13:50:03.0182 (UTC) FILETIME=[20C07CE0:01CB21C9] X-EMM-EM: Active Thanks, Looking forward to OCL 2.3 George From: Willink, Ed [mailto:Ed.Willink@thalesgroup.com] Sent: Monday, July 12, 2010 8:49 AM To: Ericson, George; ocl2-rtf@omg.org Subject: RE: issue 15368 -- OCL 2 RTF issue Hi George I agree with your summary. The rationale for the lowercase first letter is probably derived from the same policy that UML applies for unnamed properties. My proposed resolution of Issue 15235 will be to align with UML. The OCL 2.0 specification was written before the UML 2.0 specification was fully stable/understood. OCL has adapted slightly to align with UML, but there are many places where this alignment was rather localized and so finding contradictory paragraphs is not that hard. Perhaps I should clarify the perverse situation: association class A1 { member c1 : C1; member c2 : C2; } class C1 { property A1 : D; } class C2 { } class D { property c2 : C2; } aC1.A1.c2 -- aC1.A1::c2 or aC1.A1.D::c2. Regards Ed Willink -------------------------------------------------------------------------------- From: ericson_george@emc.com [mailto:ericson_george@emc.com] Sent: 12 July 2010 12:58 To: Ed.Willink@thalesgroup.com; ocl2-rtf@omg.org Subject: RE: issue 15368 -- OCL 2 RTF issue Taking a leap, it seems that generally OCL doesn't care where an association end is owned, but in the case where one does care, the '::' notation can be used. When ownership does not matter, the '.' dot notation should be used to navigate across associations. In the case where the association end names might be ambiguous, the association name should be used to qualify the association end name, using either notation. [I think this only happens with associationclass.] I've included additional, more specific comments inline. Thanks, George From: Willink, Ed [mailto:Ed.Willink@thalesgroup.com] Sent: Monday, July 12, 2010 6:02 AM To: ocl2-rtf@omg.org Cc: Ericson, George Subject: RE: issue 15368 -- OCL 2 RTF issue Hi George In OCL 2.0 and 2.2, aC1.A1.c2 is not a valid way of accessing the association A1, since OCL specifies that the first letter be converted to lowercase. Issue 15235 identifies this lack of UML alignment. [George] The OCL requirement for the first letter of an Association name to be lowercase seems arbitrary to me. Is there a functional reason for that requirement? Your comment applies only to OCL 2.3 where we can try to accommodate your editorial suggestions. aC1.A1.c2 is a navigation via A1 that might be an association (class) or property end. aC1.A1::c2 is a navigation using A1::c2. A1 must be a property end 'owner'. I see your point w.r.t. property end owner. But note that the clause following seems to be at odds and somewhat misleading in the case where the association end name is ambiguous: "Ends owned by associations In a UML association, an end may be owned by the Classifier at that end, or by the association, itself. The ownership of the end is not significant to OCL. In either case, the association end is considered as a property of the Classifier and can be navigated from that end to the other." so given a perverse situation in which A1:c2 and A2::A1 are visible associations for aC1, the two could be different. [George] I'm having trouble imagining how this comes about. Regards Ed Willink -------------------------------------------------------------------------------- From: Juergen Boldt [mailto:juergen@omg.org] Sent: 09 July 2010 21:17 To: issues@omg.org; ocl2-rtf@omg.org Subject: issue 15368 -- OCL 2 RTF issue x-cr-puzzleid: {2B71DCE6-927C-4733-8FCD-76992F80F557} x-cr-hashedpuzzle: A3gU BjIl BrjI DRTI Eo60 FCgh GHym GqFn G/kw HnR6 Iy8q KbeV KmEr K5+Y Lna2 L2J0;1;aQBzAHMAdQBlAHMAQABvAG0AZwAuAG8AcgBnAA==;Sosha1_v1;7;{2B71DCE6-927C-4733-8FCD-76992F80F557};ZQByAGkAYwBzAG8AbgBfAGcAZQBvAHIAZwBlAEAAZQBtAGMALgBjAG8AbQA=;Fri, 09 Jul 2010 19:45:11 GMT;TwBDAEwAIAAyAC4AMgA6ACAAUwBlAGMAdABpAG8AbgA6ACAANwAuADUALgAzACAAQwBsAGEAcgBpAGYAaQBjAGEAdABpAG8AbgAgAHIAZQBxAHUAaQByAGUAZAAgAGYAbwByACAAUQB1AGEAbABpAGYAeQBpAG4AZwAgAGEAcwBzAG8AYwBpAGEAdABpAG8AbgAgAGUAbgBkAHMAIAB3AGkAdABoACAAYQBzAHMAbwBjAGkAYQB0AGkAbwBuACAAbgBhAG0AZQBzAC4A Subject: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. Date: Fri, 9 Jul 2010 15:45:11 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. thread-index: Acsfnz4YzsLtHR8/S3yINf94WBBsEQ== From: To: X-OriginalArrivalTime: 09 Jul 2010 19:45:14.0629 (UTC) FILETIME=[401FFB50:01CB1F9F] X-EMM-EM: Active The text in the clause titled "Qualifying association ends with association names" points out that it is possible to qualify an accessed role name with the name of the association using the '::' separator. (In the example: aC1.A1::c2.) There is no issue with this as a means to access the associated instance. However, in doing so, the clause misses the opportunity to also say that it is also possible to reference the same associated instance using the '.' (dot) operator in place of the '..' separator, (for example: aC1.A1.c2). While this was also true prior to OCL 2.2, only the later technique was referenced in OCL 2.0. Clarification is needed with respect to whether or not there are any semantic differences between the uses of these two techniques. Where the functionality overlaps, is there a preferred technique? Nit: the last sentence of the example: "If a C1 is aC1 access, aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Should probably say: "If aC1 isa C1, then aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Juergen Boldt Director, Member Services Object Management Group 140 Kendrick St Building A Suite 300 Needham, MA 02494 USA tel: +1 781 444 0404 x 132 fax: +1 781 444 0320 email: juergen@omg.org www.omg.org Please consider the environment before printing a hard copy of this e-mail. The information contained in this e-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this e-mail. Such unauthorised use may be unlawful. If you have received this e-mail in error, please inform us immediately on +44 (0)118 986 8601 and delete it and all copies from your system. Thales Research and Technology (UK) Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 774298 Thales UK Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 868273 From: "Rouquette, Nicolas F (316A)" To: "Willink, Ed" CC: "ericson_george@emc.com" , "ocl2-rtf@omg.org" Date: Mon, 12 Jul 2010 10:30:21 -0700 Subject: Re: issue 15368 -- OCL 2 RTF issue Thread-Topic: issue 15368 -- OCL 2 RTF issue Thread-Index: Acsh5+em9LNN5+S3RoySCEzrLqQ8Eg== Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US X-Source-IP: altvirehtstap01.jpl.nasa.gov [128.149.137.72] X-Source-Sender: nicolas.f.rouquette@jpl.nasa.gov X-AUTH: Authorized Ed, I think we need to clarify one important thing in OCL: if x is a kind of classifier, then x.y means that y must be a feature defined in x' classifier or an association end for a binary association whose opposite association end is typed by x' classifier. In your context where aC1 is an instance of C1, aC1.A1.c2 = aC1.(C1::A1).(D::c2) Your alternative parse is invalid; that is: aC1.A1.D::c2 would require parsing this as aC1.A1.(D::C2), that is, aC1.(A1::(D::c2)) This is invalid because there is no classifier D nested in A1. However, aC1.c2 means navigating the association A1 from the c1 end to the c2 end. - Nicolas. aC1.A1.c2 could be parsed as: aC1.A1.(D::c2) because On Jul 12, 2010, at 5:49 AM, Willink, Ed wrote: Hi George I agree with your summary. The rationale for the lowercase first letter is probably derived from the same policy that UML applies for unnamed properties. My proposed resolution of Issue 15235 will be to align with UML. The OCL 2.0 specification was written before the UML 2.0 specification was fully stable/understood. OCL has adapted slightly to align with UML, but there are many places where this alignment was rather localized and so finding contradictory paragraphs is not that hard. Perhaps I should clarify the perverse situation: association class A1 { member c1 : C1; member c2 : C2; } class C1 { property A1 : D; } class C2 { } class D { property c2 : C2; } aC1.A1.c2 -- aC1.A1::c2 or aC1.A1.D::c2. Regards Ed Willink -------------------------------------------------------------------------------- From: ericson_george@emc.com [mailto:ericson_george@emc.com] Sent: 12 July 2010 12:58 To: Ed.Willink@thalesgroup.com; ocl2-rtf@omg.org Subject: RE: issue 15368 -- OCL 2 RTF issue Taking a leap, it seems that generally OCL doesn't care where an association end is owned, but in the case where one does care, the '::' notation can be used. When ownership does not matter, the '.' dot notation should be used to navigate across associations. In the case where the association end names might be ambiguous, the association name should be used to qualify the association end name, using either notation. [I think this only happens with associationclass.] I've included additional, more specific comments inline. Thanks, George From: Willink, Ed [mailto:Ed.Willink@thalesgroup.com] Sent: Monday, July 12, 2010 6:02 AM To: ocl2-rtf@omg.org Cc: Ericson, George Subject: RE: issue 15368 -- OCL 2 RTF issue Hi George In OCL 2.0 and 2.2, aC1.A1.c2 is not a valid way of accessing the association A1, since OCL specifies that the first letter be converted to lowercase. Issue 15235 identifies this lack of UML alignment. [George] The OCL requirement for the first letter of an Association name to be lowercase seems arbitrary to me. Is there a functional reason for that requirement? Your comment applies only to OCL 2.3 where we can try to accommodate your editorial suggestions. aC1.A1.c2 is a navigation via A1 that might be an association (class) or property end. aC1.A1::c2 is a navigation using A1::c2. A1 must be a property end 'owner'. I see your point w.r.t. property end owner. But note that the clause following seems to be at odds and somewhat misleading in the case where the association end name is ambiguous: "Ends owned by associations In a UML association, an end may be owned by the Classifier at that end, or by the association, itself. The ownership of the end is not significant to OCL. In either case, the association end is considered as a property of the Classifier and can be navigated from that end to the other." so given a perverse situation in which A1:c2 and A2::A1 are visible associations for aC1, the two could be different. [George] I'm having trouble imagining how this comes about. Regards Ed Willink -------------------------------------------------------------------------------- From: Juergen Boldt [mailto:juergen@omg.org] Sent: 09 July 2010 21:17 To: issues@omg.org; ocl2-rtf@omg.org Subject: issue 15368 -- OCL 2 RTF issue x-cr-puzzleid: {2B71DCE6-927C-4733-8FCD-76992F80F557} x-cr-hashedpuzzle: A3gU BjIl BrjI DRTI Eo60 FCgh GHym GqFn G/kw HnR6 Iy8q KbeV KmEr K5+Y Lna2 L2J0;1;aQBzAHMAdQBlAHMAQABvAG0AZwAuAG8AcgBnAA==;Sosha1_v1;7;{2B71DCE6-927C-4733-8FCD-76992F80F557};ZQByAGkAYwBzAG8AbgBfAGcAZQBvAHIAZwBlAEAAZQBtAGMALgBjAG8AbQA=;Fri, 09 Jul 2010 19:45:11 GMT;TwBDAEwAIAAyAC4AMgA6ACAAUwBlAGMAdABpAG8AbgA6ACAANwAuADUALgAzACAAQwBsAGEAcgBpAGYAaQBjAGEAdABpAG8AbgAgAHIAZQBxAHUAaQByAGUAZAAgAGYAbwByACAAUQB1AGEAbABpAGYAeQBpAG4AZwAgAGEAcwBzAG8AYwBpAGEAdABpAG8AbgAgAGUAbgBkAHMAIAB3AGkAdABoACAAYQBzAHMAbwBjAGkAYQB0AGkAbwBuACAAbgBhAG0AZQBzAC4A Subject: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. Date: Fri, 9 Jul 2010 15:45:11 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. thread-index: Acsfnz4YzsLtHR8/S3yINf94WBBsEQ== From: To: X-OriginalArrivalTime: 09 Jul 2010 19:45:14.0629 (UTC) FILETIME=[401FFB50:01CB1F9F] X-EMM-EM: Active The text in the clause titled "Qualifying association ends with association names" points out that it is possible to qualify an accessed role name with the name of the association using the '::' separator. (In the example: aC1.A1::c2.) There is no issue with this as a means to access the associated instance. However, in doing so, the clause misses the opportunity to also say that it is also possible to reference the same associated instance using the '.' (dot) operator in place of the '..' separator, (for example: aC1.A1.c2). While this was also true prior to OCL 2.2, only the later technique was referenced in OCL 2.0. Clarification is needed with respect to whether or not there are any semantic differences between the uses of these two techniques. Where the functionality overlaps, is there a preferred technique? Nit: the last sentence of the example: "If a C1 is aC1 access, aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Should probably say: "If aC1 isa C1, then aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Juergen Boldt Director, Member Services Object Management Group 140 Kendrick St Building A Suite 300 Needham, MA 02494 USA tel: +1 781 444 0404 x 132 fax: +1 781 444 0320 email: juergen@omg.org www.omg.org Please consider the environment before printing a hard copy of this e-mail. The information contained in this e-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this e-mail. Such unauthorised use may be unlawful. If you have received this e-mail in error, please inform us immediately on +44 (0)118 986 8601 and delete it and all copies from your system. Thales Research and Technology (UK) Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 774298 Thales UK Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 868273 Subject: RE: issue 15368 -- OCL 2 RTF issue Date: Mon, 12 Jul 2010 13:59:48 -0400 X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: issue 15368 -- OCL 2 RTF issue thread-index: Acsh5+em9LNN5+S3RoySCEzrLqQ8EgAAGN8Q From: To: , Cc: X-OriginalArrivalTime: 12 Jul 2010 17:59:49.0402 (UTC) FILETIME=[053C2FA0:01CB21EC] X-EMM-EM: Active All, I agree, but the primary point Ed made is still true. That is, if the association(class) name and a property within the associated class have the same name, then parsing is a problem. In Ed.s perverse (on purpose) example, class C1 has a property A1. If one also attempts to navigate via association A1, then this effectively puts a derived property into the namespace of C1. This is bad. See diagram enclosed. Within DMTF schemas, naming conventions minimize (but do not eliminate) the possibility of this case. OCL and UML should probably note this potential for ambiguity. Thanks, George From: Rouquette, Nicolas F (316A) [mailto:nicolas.f.rouquette@jpl.nasa.gov] Sent: Monday, July 12, 2010 1:30 PM To: Willink, Ed Cc: Ericson, George; ocl2-rtf@omg.org Subject: Re: issue 15368 -- OCL 2 RTF issue Ed, I think we need to clarify one important thing in OCL: if x is a kind of classifier, then x.y means that y must be a feature defined in x' classifier or an association end for a binary association whose opposite association end is typed by x' classifier. In your context where aC1 is an instance of C1, aC1.A1.c2 = aC1.(C1::A1).(D::c2) Your alternative parse is invalid; that is: aC1.A1.D::c2 would require parsing this as aC1.A1.(D::C2), that is, aC1.(A1::(D::c2)) This is invalid because there is no classifier D nested in A1. However, aC1.c2 means navigating the association A1 from the c1 end to the c2 end. - Nicolas. aC1.A1.c2 could be parsed as: aC1.A1.(D::c2) because On Jul 12, 2010, at 5:49 AM, Willink, Ed wrote: Hi George I agree with your summary. The rationale for the lowercase first letter is probably derived from the same policy that UML applies for unnamed properties. My proposed resolution of Issue 15235 will be to align with UML. The OCL 2.0 specification was written before the UML 2.0 specification was fully stable/understood. OCL has adapted slightly to align with UML, but there are many places where this alignment was rather localized and so finding contradictory paragraphs is not that hard. Perhaps I should clarify the perverse situation: association class A1 { member c1 : C1; member c2 : C2; } class C1 { property A1 : D; } class C2 { } class D { property c2 : C2; } aC1.A1.c2 -- aC1.A1::c2 or aC1.A1.D::c2. Regards Ed Willink -------------------------------------------------------------------------------- From: ericson_george@emc.com [mailto:ericson_george@emc.com] Sent: 12 July 2010 12:58 To: Ed.Willink@thalesgroup.com; ocl2-rtf@omg.org Subject: RE: issue 15368 -- OCL 2 RTF issue Taking a leap, it seems that generally OCL doesn't care where an association end is owned, but in the case where one does care, the '::' notation can be used. When ownership does not matter, the '.' dot notation should be used to navigate across associations. In the case where the association end names might be ambiguous, the association name should be used to qualify the association end name, using either notation. [I think this only happens with associationclass.] I've included additional, more specific comments inline. Thanks, George From: Willink, Ed [mailto:Ed.Willink@thalesgroup.com] Sent: Monday, July 12, 2010 6:02 AM To: ocl2-rtf@omg.org Cc: Ericson, George Subject: RE: issue 15368 -- OCL 2 RTF issue Hi George In OCL 2.0 and 2.2, aC1.A1.c2 is not a valid way of accessing the association A1, since OCL specifies that the first letter be converted to lowercase. Issue 15235 identifies this lack of UML alignment. [George] The OCL requirement for the first letter of an Association name to be lowercase seems arbitrary to me. Is there a functional reason for that requirement? Your comment applies only to OCL 2.3 where we can try to accommodate your editorial suggestions. aC1.A1.c2 is a navigation via A1 that might be an association (class) or property end. aC1.A1::c2 is a navigation using A1::c2. A1 must be a property end 'owner'. I see your point w.r.t. property end owner. But note that the clause following seems to be at odds and somewhat misleading in the case where the association end name is ambiguous: "Ends owned by associations In a UML association, an end may be owned by the Classifier at that end, or by the association, itself. The ownership of the end is not significant to OCL. In either case, the association end is considered as a property of the Classifier and can be navigated from that end to the other." so given a perverse situation in which A1:c2 and A2::A1 are visible associations for aC1, the two could be different. [George] I'm having trouble imagining how this comes about. Regards Ed Willink -------------------------------------------------------------------------------- From: Juergen Boldt [mailto:juergen@omg.org] Sent: 09 July 2010 21:17 To: issues@omg.org; ocl2-rtf@omg.org Subject: issue 15368 -- OCL 2 RTF issue x-cr-puzzleid: {2B71DCE6-927C-4733-8FCD-76992F80F557} x-cr-hashedpuzzle: A3gU BjIl BrjI DRTI Eo60 FCgh GHym GqFn G/kw HnR6 Iy8q KbeV KmEr K5+Y Lna2 L2J0;1;aQBzAHMAdQBlAHMAQABvAG0AZwAuAG8AcgBnAA==;Sosha1_v1;7;{2B71DCE6-927C-4733-8FCD-76992F80F557};ZQByAGkAYwBzAG8AbgBfAGcAZQBvAHIAZwBlAEAAZQBtAGMALgBjAG8AbQA=;Fri, 09 Jul 2010 19:45:11 GMT;TwBDAEwAIAAyAC4AMgA6ACAAUwBlAGMAdABpAG8AbgA6ACAANwAuADUALgAzACAAQwBsAGEAcgBpAGYAaQBjAGEAdABpAG8AbgAgAHIAZQBxAHUAaQByAGUAZAAgAGYAbwByACAAUQB1AGEAbABpAGYAeQBpAG4AZwAgAGEAcwBzAG8AYwBpAGEAdABpAG8AbgAgAGUAbgBkAHMAIAB3AGkAdABoACAAYQBzAHMAbwBjAGkAYQB0AGkAbwBuACAAbgBhAG0AZQBzAC4A Subject: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. Date: Fri, 9 Jul 2010 15:45:11 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: OCL 2.2: Section: 7.5.3 Clarification required for Qualifying association ends with association names. thread-index: Acsfnz4YzsLtHR8/S3yINf94WBBsEQ== From: To: X-OriginalArrivalTime: 09 Jul 2010 19:45:14.0629 (UTC) FILETIME=[401FFB50:01CB1F9F] X-EMM-EM: Active The text in the clause titled "Qualifying association ends with association names" points out that it is possible to qualify an accessed role name with the name of the association using the '::' separator. (In the example: aC1.A1::c2.) There is no issue with this as a means to access the associated instance. However, in doing so, the clause misses the opportunity to also say that it is also possible to reference the same associated instance using the '.' (dot) operator in place of the '..' separator, (for example: aC1.A1.c2). While this was also true prior to OCL 2.2, only the later technique was referenced in OCL 2.0. Clarification is needed with respect to whether or not there are any semantic differences between the uses of these two techniques. Where the functionality overlaps, is there a preferred technique? Nit: the last sentence of the example: "If a C1 is aC1 access, aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Should probably say: "If aC1 isa C1, then aC1.c2 will not be valid since it is ambiguous, whereas aC1.A1::c2 or aC1.A2::c2 will be valid." Juergen Boldt Director, Member Services Object Management Group 140 Kendrick St Building A Suite 300 Needham, MA 02494 USA tel: +1 781 444 0404 x 132 fax: +1 781 444 0320 email: juergen@omg.org www.omg.org Please consider the environment before printing a hard copy of this e-mail. The information contained in this e-mail is confidential. It is intended only for the stated addressee(s) and access to it by any other person is unauthorised. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this e-mail. Such unauthorised use may be unlawful. If you have received this e-mail in error, please inform us immediately on +44 (0)118 986 8601 and delete it and all copies from your system. Thales Research and Technology (UK) Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 774298 Thales UK Limited. A company registered in England and Wales. Registered Office: 2 Dashwood Lang Road, The Bourne Business Park, Addlestone, Weybridge, Surrey KT15 2NX. Registered Number: 868273