Role

Category

AntiRigidSortal

Provides identity

no

Identity principle

simple

Rigidity

antirigid

Dependency

mandatory

Allowed supertypes

Kind, Subkind, Collective, Phase, Quantity, Relator, Role, RoleMixin, Mixin, Mode, Quality, Category, PhaseMixin

Allowed subtypes

Role

Forbidden associations

Structuration

Abstract

undefined

Definition

A «Role» is a construct used to represent anti-rigid specializations of identity providersKind», «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:

Examples 0

Constraints

C1: A «Role» must always have exactly one identity providerKind», «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:

Role application 1

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:

Role application 2

Remember that you can’t defined a relational dependency with a minimum cardinality of zero. Therefore, the fragment below is wrong!

Role forbidden 1

C3: A «Role» cannot be a supertype of a rigid type («Kind», «Subkind», «Collective», «Quantity», «Relator», «Category»).

Role forbidden 2

C4: A «Role» cannot be a supertype of a mixin types («Category», «RoleMixin», «Mixin»).

Role forbidden 3

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):

Example Catholic Clergy

EX2: Fragment from an ontological analysis of a Human Genome scheme (see more):

Example Human Genome

Errata: No material derivation, bad material multiplicity, bad memberOf multiplicity

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

Example O3

Errata: Relator cannot be subtype of Relator, Category not abstract and no subtypes (or just one), no material relation