Interface TraversalDescription


public interface TraversalDescription
Represents a description of a traversal. This interface describes the rules and behavior of a traversal. A traversal description is immutable and each method which adds or modifies the behavior returns a new instances that includes the new modification, leaving the instance which returns the new instance intact. For instance,
 TraversalDescription td = new TraversalDescriptionImpl();
 td.depthFirst();
 
is not going to modify td. you will need to reassign td, like
 td = td.depthFirst();
 

When all the rules and behaviors have been described the traversal is started by using traverse(Node) where a starting node is supplied. The Traverser that is returned is then used to step through the graph, and return the positions that matches the rules.

  • Method Details

    • uniqueness

      TraversalDescription uniqueness(UniquenessFactory uniqueness)
      Sets the UniquenessFactory for creating the UniquenessFilter to use.
      Parameters:
      uniqueness - the UniquenessFactory the creator of the desired UniquenessFilter to use.
      Returns:
      a new traversal description with the new modifications.
    • uniqueness

      TraversalDescription uniqueness(UniquenessFactory uniqueness, Object parameter)
      Sets the UniquenessFactory for creating the UniquenessFilter to use. It also accepts an extra parameter which is mandatory for certain uniquenesses.
      Parameters:
      uniqueness - the UniquenessFactory the creator of the desired UniquenessFilter to use.
      parameter - an extra parameter which is mandatory for certain uniquenesses.
      Returns:
      a new traversal description with the new modifications.
    • evaluator

      TraversalDescription evaluator(Evaluator evaluator)
      Adds evaluator to the list of evaluators which will control the behavior of the traversal. Each Evaluator can decide whether or not to include a position in the traverser result, i.e. return it from the Traverser iterator and also whether to continue down that path or to prune, so that the traverser won't continue further down that path. Multiple Evaluators can be added. For a path to be included in the result, all evaluators must agree to include it, i.e. returning either Evaluation.INCLUDE_AND_CONTINUE or Evaluation.INCLUDE_AND_PRUNE. For making the traversal continue down that path all evaluators must agree to continue from that path, i.e. returning either Evaluation.INCLUDE_AND_CONTINUE or Evaluation.EXCLUDE_AND_CONTINUE.
      Parameters:
      evaluator - the Evaluator to add to the traversal
      Returns:
      a new traversal description with the new modifications.
    • evaluator

      TraversalDescription evaluator(PathEvaluator evaluator)
      Adds evaluator to the list of evaluators which will control the behavior of the traversal. Each PathEvaluator can decide whether or not to include a position in the traverser result, i.e. return it from the Traverser iterator and also whether to continue down that path or to prune, so that the traverser won't continue further down that path. Multiple PathEvaluators can be added. For a path to be included in the result, all evaluators must agree to include it, i.e. returning either Evaluation.INCLUDE_AND_CONTINUE or Evaluation.INCLUDE_AND_PRUNE. For making the traversal continue down that path all evaluators must agree to continue from that path, i.e. returning either Evaluation.INCLUDE_AND_CONTINUE or Evaluation.EXCLUDE_AND_CONTINUE.
      Parameters:
      evaluator - the PathEvaluator to add to the traversal
      Returns:
      a new traversal description with the new modifications.
    • order

      Sets the BranchOrderingPolicy to use. A BranchSelector is the basic decisions in the traversal of "where to go next". Examples of default implementations are "breadth first" and "depth first", which can be set with convenience methods breadthFirst() and depthFirst().
      Parameters:
      selector - the factory which creates the BranchSelector to use with the traversal.
      Returns:
      a new traversal description with the new modifications.
    • depthFirst

      TraversalDescription depthFirst()
      A convenience method for order(BranchOrderingPolicy) where a "preorder depth first" selector is used. Positions which are deeper than the current position will be returned before positions on the same depth. See http://en.wikipedia.org/wiki/Depth-first_search
      Returns:
      a new traversal description with the new modifications.
    • breadthFirst

      TraversalDescription breadthFirst()
      A convenience method for order(BranchOrderingPolicy) where a "preorder breadth first" selector is used. All positions with the same depth will be returned before advancing to the next depth. See http://en.wikipedia.org/wiki/Breadth-first_search
      Returns:
      a new traversal description with the new modifications.
    • relationships

      Adds type to the list of relationship types to traverse. There's no priority or order in which types to traverse.
      Parameters:
      type - the RelationshipType to add to the list of types to traverse.
      Returns:
      a new traversal description with the new modifications.
    • relationships

      TraversalDescription relationships(RelationshipType type, Direction direction)
      Adds type to the list of relationship types to traverse in the given direction. There's no priority or order in which types to traverse.
      Parameters:
      type - the RelationshipType to add to the list of types to traverse.
      direction - the Direction to traverse this type of relationship in.
      Returns:
      a new traversal description with the new modifications.
    • expand

      TraversalDescription expand(PathExpander<?> expander)
      Sets the PathExpander as the expander of relationships, discarding all previous calls to relationships(RelationshipType) and relationships(RelationshipType, Direction) or any other expand method.
      Parameters:
      expander - the PathExpander to use.
      Returns:
      a new traversal description with the new modifications.
    • expand

      <STATE> TraversalDescription expand(PathExpander<STATE> expander, InitialBranchState<STATE> initialState)
      Sets the PathExpander as the expander of relationships, discarding all previous calls to relationships(RelationshipType) and relationships(RelationshipType, Direction) or any other expand method. The supplied InitialBranchState will provide the initial traversal branches with state values which flows down throughout the traversal and can be changed for child branches by the PathExpander at any level.
      Type Parameters:
      STATE - the type of the state object
      Parameters:
      expander - the PathExpander to use.
      initialState - factory for supplying the initial traversal branches with state values potentially used by the PathExpander.
      Returns:
      a new traversal description with the new modifications.
    • sort

      TraversalDescription sort(Comparator<? super Path> comparator)
      Parameters:
      comparator - the Comparator to use for sorting the paths.
      Returns:
      the paths from this traversal sorted according to comparator.
    • reverse

      Creates an identical TraversalDescription, although reversed in how it traverses the graph.
      Returns:
      a new traversal description with the new modifications.
    • traverse

      Traverser traverse(Node startNode)
      Traverse from a single start node based on all the rules and behavior in this description. A Traverser is returned which is used to step through the graph and getting results back. The traversal is not guaranteed to start before the Traverser is used.
      Parameters:
      startNode - Node to start traversing from.
      Returns:
      a Traverser used to step through the graph and to get results from.
    • traverse

      Traverser traverse(Node... startNodes)
      Traverse from a set of start nodes based on all the rules and behavior in this description. A Traverser is returned which is used to step through the graph and getting results back. The traversal is not guaranteed to start before the Traverser is used.
      Parameters:
      startNodes - Nodes to start traversing from.
      Returns:
      a Traverser used to step through the graph and to get results from.
    • traverse

      Traverser traverse(Iterable<Node> iterableStartNodes)
      Traverse from a iterable of start nodes based on all the rules and behavior in this description. A Traverser is returned which is used to step through the graph and getting results back. The traversal is not guaranteed to start before the Traverser is used.
      Parameters:
      iterableStartNodes - Nodes to start traversing from.
      Returns:
      a Traverser used to step through the graph and to get results from.