see also: Graph queries in XL
In the following a set queries is listed and the results of them applied on the graph in the image. This graph is created by the turtle query: A[F A][R F A] F A ;
Query | Result | Description |
Basic | ||
A or a:A | {a1,a2,a3,a4} | addresses all instances of module A |
a:A,a.len==1 or A(1) | all A with len==1 | unary predicates |
Node based path pattern | ||
(* A F *) A | {a3} | direct combination of nodes |
(* F *) A | {a2,a3,a4} | other example |
Edge based path pattern | ||
ANY_EDGE | ||
(* A --> *) F | {f1,f2} | next node |
A (*<-- F*) | {a2,a3,a4} | prev node |
(* F -- *) A | {a1,a2,a3,a4} | undirected |
SUCCESSOR_EDGE | ||
(* A > *) F | {f2} | next node |
A (* < F *) | {a2,a3,a4} | prev node |
(* F --- *) A | {a1,a2,a3,a4} | undirected |
BRANCH_EDGE | ||
(*A +>*) F | {f1} | next node |
A (* <+ F *) | {} | prev node |
(*F -+- *) A | {a1} | undirected |
Single Match, Late Match and Optional Patterns | ||
A (: --> F) | {f1} | find first pattern |
A (& --> F) | {f1} | find last pattern |
A (? +> F) | {Null} | changes nothing to NULL |
Transitive closures | ||
(* A > > *) A | {a3} | Path described by single edges |
(* A +> > *) A | {a2} | other example |
(* A (-->)* *) A | {a1,a2,a3,a4} | (0-to-n edges possible) |
(* A (-->)+ *) A | {a2,a3,a4} | (1-to-n edges possible) |
(* A (-->)? *) F | {f1,f2} | (0-to-1 edges possible) |
(* A (-->){2} *)F | {f2} | min 2 edges |
(* A (-->){1,2} *) A | {a2,a3} | min 1 max 2 edges |
Combined | ||
f:F, A +> f, A < f | {f1} | patterns combined by comma |