Browsing the Metamodel
You can concatenate successive MetaAssociationEnds to define a path in the metamodel.
Reminder on MetaAssociationEnd names
In the metamodel, objects are connected as follows:
MetaAssociationEnd names follow this rule: seen from an object type, the link is indicated by the name of the opposite MetaAssociationEnd (in this diagram, seen from “Object Type 1”, the link has the name of “MetaAssociationEnd 2”).
When the link is explicit (for example, Source-Message between Org-Unit and Message) both MetaAssociationEnds have names (Source-Org-Unit and Message-Sent). When the link is implicit, the MetaAssociationEnds have the same name as the MetaClass to which they are connected.
When the link is generic, that is when it reaches several different MetaClasses, it is possible to specify a particular MetaClass, separating it with character ':'.
select Message where [Message Recipient]:[Operation] = &Operation
The MetaAssociationEnds of reflexive links have their own specific names (for example, Component and Aggregation-Of for Compositions, Previous and Next for Sequences.
The object type attached to the last MetaAssociationEnd is called the “source object".
Example:
Using the following query, you can obtain the list of Messages Sent by Org-Units in Diagrams of a Project:
select Message where Source-Org-Unit.Diagram.Project = &PROJ
The query below gives the same result (see Conditions on Object Characteristics):
select Message where Source-Org-Unit in Org-Unit where Diagram in Diagram where Project = &PROJ