Role
- Category
AntiRigidSortal
- Provides identity
- Identity principle
- Rigidity
- Dependency
mandatory
- Allowed supertypes
Kind, Subkind, Collective, Phase, Quantity, Relator, Role, RoleMixin, Mixin, Mode, Quality, Category, PhaseMixin
- Allowed subtypes
- Forbidden associations
- Abstract
undefined
Definition
A «Role» is a construct used to represent anti-rigid specializations of identity providers («Kind», «Collective», «Quantity», «Relator», «Mode» and «Quantity») that are instantiated in relational contexts. All instances of a particular «Role» must follow the same identity principle. Here are some examples of roles:
Constraints
C1: A «Role» must always have exactly one identity provider («Kind», «Collective», «Quantity», «Relator», «Mode», «Quantity») as an ancestor (a direct or indirect super-type). To model our list of roles presented above, we should given them identity providers:
C2: Every «Role» must be connected, directly or indirectly, to a «Mediation» relation, since it is a relationally dependent construct. Continuing our example above, we should do the following:
Remember that you can’t defined a relational dependency with a minimum cardinality of zero. Therefore, the fragment below is wrong!
C3: A «Role» cannot be a supertype of a rigid type («Kind», «Subkind», «Collective», «Quantity», «Relator», «Category»).
C4: A «Role» cannot be a supertype of a mixin types («Category», «RoleMixin», «Mixin»).
Common questions
Q1: Can I define multiples dependencies for a «Role»?
A1: Yes, there is no restriction in the number of dependencies one can define for a «Role». However, think carefully before doing so. You might be adding some unwanted instantiations to your ontology. This is an Ontological Anti-Pattern, called Multiple Dependency (read more about it here)
Q2: Can a «Role» be used to specialize another «Role»?
A2: Yes, there is no restriction regarding it. Again, take care when doing so. Since the language only require at least one indirect dependency for a «Role», you might forget to define additional dependencies for the sub-types.
Examples
EX1: Conceptual model about roles in the Catholic clergy (see more):
EX2: Fragment from an ontological analysis of a Human Genome scheme (see more):
Errata: No material derivation, bad material multiplicity, bad memberOf multiplicity
EX3: Fragment of the OntoUML Org Ontology (O3) (see more):
Errata: Relator cannot be subtype of Relator, Category not abstract and no subtypes (or just one), no material relation