I am trying to understand Neo4J java traversal API but after a thorough reading I am stuck on certain points.
What I seem to know:
Difference between PathExpander and BranchOrderingPolicy. As per my understanding, the former tells what relationships are eligible to be explored from a particular position and the latter specifies the ordering in which they should be evaluated.
I would like to know the following things:
Whether or to what extent this understanding is correct or if it can be altered to give the correct understanding.
If correct, how is
PathExpanderdifferent fromEvaluator.How does
PathExpanderandBranchOrderingPolicywork. What I intend to ask is, isPathExpanderconsulted everytime a relationship is added to the traversal and what does it do with the iterable of relationships returned. Similarly with branch ordering.During traversal how and when do the components
Expander,BranchOrdering,Evaluator,Uniquenesscome into picture. Basically I wish to know the template algorithm where one would say like first expander is asked for a collection of relationships to expand and then ordering policy is consulted to select one of the eligibles....If correct, does the ordering policy specified by
BranchOrderingPolicyapply on the eligible relationships only(after expander has done). Perhaps it must be.
Please include anything else that might be helpful in understanding the API.