Search code examples
vaticle-typedbvaticle-typeql

How to query role types in a TypeDB relation?


Suppose I have the following in the schema:

define

person sub entity, plays employment:employee;
company sub entity, plays employment:employer;
employment sub relation, relates employee, relates employer;

Then it imposes the restriction that employer must be of type company and employee must be of type person.

How do I find about this restriction through a query?

So far the best that I know is:

match $x sub relation; get $x;

It does show that employment is a relation. But it doesn't show the role types that are allowed/ permitted. How to query that?


Solution

  • match $x sub relation; 
    $x relates $y;
    get $x, $y;
    

    You can use the same constructs for querying the schema (or data) as you did to write it. So you can also find which types play the roles through the query:

    match $x sub relation; 
    $x relates $y;
    $z plays $y;
    get $x, $y, $z;