- Provides identity
- Identity principle
- Allowed supertypes
- Category, Mixin
- Allowed subtypes
- Subkind, Phase, Role
- Forbidden associations
- Derivation, Structuration, SubCollectionOf, SubQuantityOf
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:
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.
This example was extracted from the Software Requirements Reference Ontology (SRRO). Click here to take a look at it.