Conjunction
|
This documentation is not current - it is for TypeDB 2.x, which is no longer supported. View the documentation for TypeDB 3.x: |
A conjunction of patterns requires all its patterns to be true simultaneously. A conjunction is itself a pattern.
Syntax
There is no specific syntax to apply conjunctions: conjunctions are applied implicitly to all patterns delineated by a semicolon ;. A conjunction of two or more patterns is of the form
<pattern>; <pattern>; [ <pattern>; ... ]
where each <pattern> is any valid pattern and we added ; to emphasize that patterns always end with ;. Note, each <pattern> itself may be a conjunction of smaller patterns or individual statements: see patterns for more information.
Behavior
Conjunction is used in all TypeQL patterns by default: it is implicitly applied between all statements separated with a semicolon.
All patterns in a conjunction must be true for the conjunction itself to be true. Thus, if any statement in a conjunction is false, then the whole pattern is false.
The ordering of statements in a conjunction is irrelevant, as every statement is equaly important for the whole pattern.
Usage in a match clause
For this example, use a database with the IAM schema and sample data loaded.
Let’s fetch a path attribute for every file that a user with full-name "Kevin Morrison" has a permission to modify.
There are multiple statements we need to combine with a conjunction for them all to be matched by every solution:
match
$user isa user, has full-name 'Kevin Morrison';
($user, $access) isa permission;
$obj isa object, has path $path;
$access($obj, $act) isa access;
$act isa action, has name 'modify_file';
fetch $path;
In the above example, all statements in a match clause must be True for the solution to be found.
See example output
{ "path": { "value": "iopvu.java", "type": { "label": "path", "root": "attribute", "value_type": "string" } } }
{ "path": { "value": "README.md", "type": { "label": "path", "root": "attribute", "value_type": "string" } } }
{ "path": { "value": "budget_2021-08-01.xlsx", "type": { "label": "path", "root": "attribute", "value_type": "string" } } }