plays
|
This documentation is not current - it is for TypeDB 2.x, which is no longer supported. View the documentation for TypeDB 3.x: |
The plays keyword is used in TypeQL schema to define a valid player of a role in a relation type.
Syntax
The syntax of a plays statement includes:
-
Subject — type label of a type to play the role
-
Predicate — the
playskeyword -
Object — scoped type label of a role
<type> plays <relation-type:role> [as overridden-type];
An optional override can be added at the end.
Behavior
TypeQL statements with the plays keyword can be used only in Define and Undefine queries.
The plays keyword adds an ability to play a role to a schema.
Usage in a schema definition
For this example, use a database with the IAM schema and sample data loaded.
Since in Define and Undefine queries you can’t use variables, both subject and object can only be type labels. The object is always a scoped type label that consists of a relation type and a role separated by a colon.
For example, to define the subject type to be able to play the subject role in the permission relation type, use:
define
subject plays permission:subject;
To remove the new role, use:
undefine
subject plays permission:subject;
Usage with override
For this example, use a database with the IAM schema and sample data loaded.
By default, a subtype of a relation type inherits all roles that were defined for its supertype.
To override an inherited role, use the as keyword.
The overridden new role must be a subtype of the inherited role.
Let’s see an example, of a schema, where the owned role of the ownership relation type gets overridden by
the object role:
define
subject plays permission:manager as subject;