I don't understand the purpose of the as keyword


#1

I can use the as keyword to relabel roles:

define
person sub entity plays parent plays child;
grandparentship sub relationship relates grandparent as parent relates grandchild as child;

But if I try to create a grandparentship, I just get the error:

insert $p isa person; $c isa person; (grandparent: $p, grandchild: $c) isa grandparentship;

The type [person] of role player [V73728] is not allowed to play Role [grandparent] 

I don’t understand the purpose of the as keyword. I thought it’s purpose was to give roles more appropriate names in different relationships, without declaring dozens of roles for an entity


#2

The as keyword acts like sub for roles in relationships.

The definition:

grandparentship sub relationship 
    relates grandparent as parent 
    relates grandchild as child;

is a less verbose version of:

grandparentship sub relationship 
    relates grandparent  
    relates grandchild;
grandparent sub parent;
grandchild sub child;

You still have to quantify which types are allowed to play these roles.


#3

I find it counter-intuitive that everything that can play the role of child can’t also play the role of grandchild, since grandchild is a subrole of child