Issue 15790: OCL 2.2 Missing definition of navigation (ocl2-rtf) Source: Model Driven Solutions (Dr. Edward Willink, ed(at)willink.me.uk) Nature: Uncategorized Issue Severity: Summary: Dot and arrow navigation have implied definitions in the non-normative clause 7, but nothing in the normative clauses. Implicit collect is missing from clause 9, save for the throwaway final sentence "The mapping is not formally defined in this document but should be obvious." This mapping is far from obvious; if it was obvious it would be easy to define. In particular it is important to define that a static syntax determination is made to ensure that: anObject . feature => object navigation anObject -> feature => implicit collection (of anObject's static ordering/uniqueness) containing a non-null anObject aCollection -> feature (or iterator) => collection navigation aCollection . feature (or iterator) => implicit collect = aCollection -> collect(feature or iterator) (implicit source object implicit .) feature => object navigation (implicit source collection implicit ->) feature (or iterator) => collection navigation with the object/collection discrimination performed statically, so that the navigation algorithm is statically determinate; only the dynamic dispatch on self is subject to dynamic determination. The conformance of a collection to OclAny must never used to allow object navigation on a collection. This avoids a syntax ambiguity for "aCollection . name" between implicit collect and object navigation of a collection feature, or between implicit collect and object navigation of an object feature. Resolution: Revised Text: Actions taken: October 31, 2010: received issue Discussion: End of Annotations:===== ronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhkFAPwizUxUXebj/2dsb2JhbACTTY18cbpahUQE Date: Sun, 31 Oct 2010 15:07:23 +0000 From: Ed Willink User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6 To: issues@omg.org Subject: OCL 2.2 Missing definition of navigation Hi Dot and arrow navigation have implied definitions in the non-normative clause 7, but nothing in the normative clauses. Implicit collect is missing from clause 9, save for the throwaway final sentence "The mapping is not formally defined in this document but should be obvious." This mapping is far from obvious; if it was obvious it would be easy to define. In particular it is important to define that a static syntax determination is made to ensure that: anObject . feature => object navigation anObject -> feature => implicit collection (of anObject's static ordering/uniqueness) containing a non-null anObject aCollection -> feature (or iterator) => collection navigation aCollection . feature (or iterator) => implicit collect = aCollection -> collect(feature or iterator) (implicit source object implicit .) feature => object navigation (implicit source collection implicit ->) feature (or iterator) => collection navigation with the object/collection discrimination performed statically, so that the navigation algorithm is statically determinate; only the dynamic dispatch on self is subject to dynamic determination. The conformance of a collection to OclAny must never used to allow object navigation on a collection. This avoids a syntax ambiguity for "aCollection . name" between implicit collect and object navigation of a collection feature, or between implicit collect and object navigation of an object feature. Regards Ed Willink