PartyRelationship models relationship of party roles.
PartyRelationship is directional ie. has a 'from' and 'to' side.
Each PartyRelationship has a PartyRelationshipType. PartyRelationshipType has a valid from and to role that is used to constrain what roles can be associated. PartyRelationshipType has a parent type that is used to create relationship type hierarchy (e.g. Family, Parent-Child).