public class AtlasRelationshipDef extends AtlasStructDef
AtlasRelationshipDef describes a relationship between two entities.

As with other typeDefs the AtlasRelationshipDef has a name. Once created the RelationshipDef has a guid. The name and the guid are the 2 ways that the RelationshipDef is identified.

RelationshipDefs have 2 ends, each of which specify cardinality, an EntityDef type name and name and optionally whether the end is a container.

RelationshipDefs can have AttributeDefs - though only primitive types are allowed.
RelationshipDefs have an AtlasRelationshipCategory specifying the UML type of relationship required
RelationshipDefs also have an AtlasPropagateTag - indicating which way tags could flow over the relationships.

The way EntityDefs and RelationshipDefs are intended to be used is that EntityDefs will define AttributeDefs these AttributeDefs will not specify an EntityDef type name as their types.

RelationshipDefs introduce new attributes to the entity instances. For example

EntityDef A might have attributes attr1,attr2,attr3
EntityDef B might have attributes attr4,attr5,attr6
RelationshipDef AtoB might define 2 ends

   end1:  type A, name attr7
   end2:  type B, name attr8  

When an instance of EntityDef A is created, it will have attributes attr1,attr2,attr3,attr7
When an instance of EntityDef B is created, it will have attributes attr4,attr5,attr6,attr8

In this way relationshipDefs can be authored separately from entityDefs and can inject relationship attributes into the entity instances.