6.1.7 All types
All types of a given metatype (Object, Property, Role or
Relationship) can be denoted by () instead of a type name. This is especially
useful when you want to loop over, say, all objects, regardless of their type,
e.g.
.()
The brackets can also contain one or more type
name strings, separated by |. A type name can contain wildcards, e.g.
.(Class* | Package)
will run for all Classes,
Class-&-Objects, and Packages.
If a type name string is immediately preceded by a caret
^, instances matching that type string are disallowed, e.g.
.(St* | ^State [UML])
will run for instances of
Start or Stop, but not State [UML] or Note.
Please note that for Properties only the generic
:() clause is allowed: content inside
the parentheses (e.g.
:(Name*)) is not
supported.