MixRig anti-pattern

Full name

Mixin With Same Rigidity


Classification; Scope


Hierarchy; Mixin


A class stereotyped as «Mixin» specialized only by other classes that have the same rigidity property, i.e., are all rigid or all anti-rigid.


As all non-sortals, mixins aggregated individuals that follow different identity principles. Its distinguishing characteristic, though, is that is semi-rigid, i.e., it behaves as a rigid type for some individuals as an anti-rigid for others. This anti-pattern analyzes mixins that, despite their capabilities, only generalize types with the same rigidity.

  1. All sortals are rigid («Subkind», «Kind», «Quantity», «Collective» and «Category») or all sortals are anti-rigid («Role», «Phase» or «RoleMixin»)



Refactoring Plans
  1. [conditional] [Mod] Change mixin to category: if all subtypes are rigid, and no anti-rigid subtype is expected to specialize «Mixin», change the stereotype to «Category».

  2. [conditional] [Mod] Change mixin to roleMixin: if all subtypes are anti-rigid, and no rigid subtype is expected to specialize «Mixin», change the stereotype to «RoleMixin».

  3. [Mod] Change subtypes stereotypes: this solution is a recognition that the semi-rigidity of «Mixin» is correct and consists in changing the stereotype of one or more subtypes of «Mixin» to properly characterize the semi-rigidity.

  4. [New/Mod] Add subtypes: set new or existing types as direct children of «Mixin» in order to properly characterize the semi-rigidity.


Prince Sales, Tiago. (2014). Ontology Validation for Managers.