Legacy Issue Number: 7366
Source: Simula Research Laboratory ( Bran Selic)
Currently, the UML 2 specification defines Operation properties precondition, postcondition, and bodyCondition that are owned constraints. However, these properties do not subset the Namespace::ownedRule property, but rather the Namespace::ownedMember property.
The opposites of these properties are preConstraint, postConstraint, and bodyConstraint, all of which are non-navigable and subset Constraint::context and Constraint::namespace.
Also, the Constraint::namespace property, which is non-navigable, subsets Constraint::context, which is navigable. This is inconsistent, and in fact violates the UML's own constraint on property subsetting which stipulates that a navigable property can only be subsetted by a navigable property (constraint  of metaclass Property).
The consequence of all this is that a Constraint that is the precondition (for example) of an Operation does not have a context . This means that a constraint such as an OCL expressions in pre-conditions cannot be parsed against the context namespace.
There are (at least) two ways to solve this problem:
let Operation::precondition and its cohorts subset Namespace::ownedRule instead of Namespace::ownedMember (which would leverage the eContainer() "cheat" that EMF offers to get the owner of an element that doesn't have a navigable owner property)
let Constraint::namespace redefine NamedElement::namespace and make it navigable, thus making the subset relationship with Constraint::context valid
The first option seems preferred, for two reasons:
It makes sense that all constraints that a namespace owns should be included in the ownedRule property
This would be consistent with the Behavior metaclass, whose precondition and postcondition properties do subset ownedRule
Reported: XMI 2.0 — Thu, 20 May 2004 04:00 GMT
Disposition: Resolved — UML 1.4.2
Updated: Fri, 6 Mar 2015 20:58 GMT