Relations can be defined between from a
CloudObject to another, for example between two data types.
Relations are directed and have two types: the origin type, the destination type.
Defining a relation between two data types means that instances of these data types can be related with that relation.
direction of the relation, whether it points to origin or destination
Returns Relation<D, O>
inverse relation where newOrigin = oldDestination, newDestination = oldOrigin
tag of the relation
class type for the origin of the relation
class type for the destination of the relation