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.