Kind

Definition

A «Kind» is construct you are going to use in most of your models. It is used to represent rigid concepts that provide an identity principle for their instances and do not require a relational dependency. A «Kind» represent a Functional Complex, i.e., a whole that has parts contributing in different ways for its functionality (see the ComponentOf relation for more details about functional parts). Let’s see some examples:

Kind examples

Constraints

C1: A «Kind» cannot have an identity provider («Kind», «Collective», «Quantity», «Relator», «Mode» and «Quantity») as its direct or indirect super-type.

Kind forbidden 1

C2: A «Kind» cannot have types that inherit identitySubkind», «Role» and «Phase») as its direct or indirect super-type.

Kind forbidden 2

C3: A «Kind» cannot have types that aggregate individuals with different identity principlesCategory», «RoleMixin» and «Mixin») as its direct or indirect subtypes.

C4: As a rigid type, a «Kind» cannot have any anti-rigid type («Role», «RoleMixin» and «Phase») as its direct or indirect super-type.

Common questions

Q1: If a «Kind» is relationally independent, does that mean we cannot define relations for theses types?

A1: No! When we say that a «Kind» is relationally independent, we mean that it does not necessarily require a relation to be defined, like a «Role» does. Here is an example in which a «Kind» has a dependency.

Example O1

This example was extracted from the Software Requirements Reference Ontology (SRRO). Click here to take a look at it.

Examples

EX1: Fragment from the Configuration Management Task Ontology (see more):

Example MTO

EX2: Fragment from the OntoUML Org Ontology (O3) (see more):

Example O3