Path Queries in WOQL
To use this HowTo, first clone the Star Wars demo into your team on DFRNT TerminusDB cloud. You will then have full access to the data needed for this tutorial.
How to use path
TerminusDB gives us path queries which allow us to succinctly express chains of relationships.
The path
keyword allows you to find a path through the graph traversing intermediate edges. An example would be finding a group of individuals who have at some point shared a vehicle as a pilot or piloted another vehicle that in turn was shared with someone. This is a transitive relationship and will explore the entire graph.
For instance
let v = Vars("person1", "person2");
path(v.person1, "(<pilot,pilot>)+", v.person2)
This path
means we follow the pilot
field backwards (because of the <
arrow), to the vehicle of which the person is a pilot and then follow it forwards pilot>
any number of times but at least once which is what the +
means.
The path itself can also be returned by adding another field, as so:
let v = Vars("person1", "person2", "path");
path(v.person1, "(<pilot,pilot>)+", v.person2, v.path)
This can be inspected to understand the manner in which we got from person1
to person2
.