A «RoleMixin» is the equivalent of «Role» for types that aggregate instances with different identity principles. A class stereotyped as «RoleMixin» is also an anti-rigid type whose instantiation depends on a relational property. Here are some examples:

RoleMixin examples

RoleMixins usually occur in one of the two patterns:

RoleMixin application 1
RoleMixin application 2

The second pattern is a more concise form of the first. They are semantically equivalent.


C1: A «RoleMixin» is always abstract. Notice that abstract classes are represented with an italic label.

RoleMixin application 3

C2: A «RoleMixin» aggregate individuals that follow different identity principles, therefore it may not have as ancestor the following constructs: «Kind», «Quantity», «Collective», «Subkind», «Role», «Phase», «Relator», «Mode», «Quality».

C3: A «RoleMixin» is a anti-rigid construct, therefore it cannot have as descendent any rigid or semi-rigid type, as: «Kind», «Quantity», «Collective», «Subkind», «Category», «Mixin», «Relator», «Mode», «Quality».

RoleMixin forbidden 1

Common questions

Ask us some question if something is not clear …


EX1: Fragment of the OntoUML Org Ontology (O3) (see more):

Example O3

EX2: Fragment of a conceptual model about Brazilian Public Tenders (see more):

Example BPT