Class RelationshipChain

java.lang.Object
org.neo4j.cypherdsl.core.RelationshipChain
All Implemented Interfaces:
Visitable, ExposesPatternLengthAccessors<RelationshipChain>, ExposesRelationships<RelationshipChain>, PatternElement, RelationshipPattern

@API(status=STABLE, since="1.0") public final class RelationshipChain extends Object implements RelationshipPattern, ExposesPatternLengthAccessors<RelationshipChain>
Represents a chain of relationships. The chain is meant to be in order and the right node of an element is related to the left node of the next element.
Since:
1.0
Author:
Michael J. Simons
  • Method Details

    • relationshipTo

      @NotNull public @NotNull RelationshipChain relationshipTo(Node other, String... types)
      Description copied from interface: ExposesRelationships
      Starts building an outgoing relationship to the other node.
      Specified by:
      relationshipTo in interface ExposesRelationships<RelationshipChain>
      Parameters:
      other - The other end of the outgoing relationship
      types - The types to match
      Returns:
      An ongoing relationship definition, that can be used to specify the type
    • relationshipFrom

      @NotNull public @NotNull RelationshipChain relationshipFrom(Node other, String... types)
      Description copied from interface: ExposesRelationships
      Starts building an incoming relationship starting at the other node.
      Specified by:
      relationshipFrom in interface ExposesRelationships<RelationshipChain>
      Parameters:
      other - The source of the incoming relationship
      types - The types to match
      Returns:
      An ongoing relationship definition, that can be used to specify the type
    • relationshipBetween

      @NotNull public @NotNull RelationshipChain relationshipBetween(Node other, String... types)
      Description copied from interface: ExposesRelationships
      Starts building an undirected relationship between this node and the other.
      Specified by:
      relationshipBetween in interface ExposesRelationships<RelationshipChain>
      Parameters:
      other - The other end of the relationship
      types - The types to match
      Returns:
      An ongoing relationship definition, that can be used to specify the type
    • named

      @NotNull public @NotNull RelationshipChain named(String newSymbolicName)
      Replaces the last element of this chains with a copy of the relationship with the new symbolic name.
      Specified by:
      named in interface RelationshipPattern
      Parameters:
      newSymbolicName - The new symbolic name to use
      Returns:
      A new chain
    • named

      @NotNull public @NotNull RelationshipChain named(SymbolicName newSymbolicName)
      Replaces the last element of this chains with a copy of the relationship with the new symbolic name.
      Specified by:
      named in interface RelationshipPattern
      Parameters:
      newSymbolicName - The new symbolic name to use
      Returns:
      A new chain
      Since:
      2021.1.1
    • where

      @NotNull public @NotNull RelationshipChain where(@Nullable @Nullable Expression predicate)
      Description copied from interface: PatternElement
      Creates a new PatternElement which including an additional filter. Returns this pattern. when predicate is literal null.

      The pattern might be a node pattern or a relationship pattern.

      A WHERE on a pattern is only supported from Neo4j 5.0 onwards.

      Specified by:
      where in interface PatternElement
      Parameters:
      predicate - the predicate to filter on
      Returns:
      a new pattern element or this instance if the predicate to this method was literal null
    • quantifyRelationship

      @NotNull public @NotNull RelationshipPattern quantifyRelationship(@Nullable QuantifiedPathPattern.Quantifier quantifier)
      Description copied from interface: RelationshipPattern
      Quantifies the relationship.
      Specified by:
      quantifyRelationship in interface RelationshipPattern
      Parameters:
      quantifier - the quantifier to use
      Returns:
      a quantified relationship
    • quantify

      @NotNull public @NotNull QuantifiedPathPattern quantify(@Nullable QuantifiedPathPattern.Quantifier newQuantifier)
      Description copied from interface: RelationshipPattern
      Quantifies the pattern.
      Specified by:
      quantify in interface RelationshipPattern
      Parameters:
      newQuantifier - the quantifier to use
      Returns:
      a quantified path pattern
    • unbounded

      @NotNull @Contract(pure=true) public @NotNull RelationshipChain unbounded()
      Changes the length of the last element of this chain to an unbounded pattern.
      Specified by:
      unbounded in interface ExposesPatternLengthAccessors<RelationshipChain>
      Returns:
      A new chain
      Since:
      1.1.1
    • min

      @NotNull @Contract(pure=true) public @NotNull RelationshipChain min(Integer minimum)
      Changes the length of the last element of this chain to a new minimum length
      Specified by:
      min in interface ExposesPatternLengthAccessors<RelationshipChain>
      Parameters:
      minimum - the new minimum
      Returns:
      A new chain
    • max

      @NotNull @Contract(pure=true) public @NotNull RelationshipChain max(Integer maximum)
      Changes the length of the last element of this chain to a new maximum length
      Specified by:
      max in interface ExposesPatternLengthAccessors<RelationshipChain>
      Parameters:
      maximum - the new maximum
      Returns:
      A new chain
    • length

      @NotNull @Contract(pure=true) public @NotNull RelationshipChain length(Integer minimum, Integer maximum)
      Changes the length of the last element of this chain
      Specified by:
      length in interface ExposesPatternLengthAccessors<RelationshipChain>
      Parameters:
      minimum - the new minimum
      maximum - the new maximum
      Returns:
      A new chain
    • properties

      @NotNull @Contract(pure=true) public @NotNull RelationshipChain properties(MapExpression newProperties)
      Adds properties to the last element of this chain.
      Parameters:
      newProperties - the new properties (can be null to remove exiting properties).
      Returns:
      A new chain
    • properties

      @NotNull @Contract(pure=true) public @NotNull RelationshipChain properties(Object... keysAndValues)
      Adds properties to the last element of this chain.
      Parameters:
      keysAndValues - A list of key and values. Must be an even number, with alternating String and Expression.
      Returns:
      A new chain
    • asCondition

      @NotNull public @NotNull Condition asCondition()
      Description copied from interface: RelationshipPattern
      Transform this pattern into a condition. All names of the patterns must be known upfront in the final statement, as PatternExpressions are not allowed to introduce new variables.
      Specified by:
      asCondition in interface RelationshipPattern
      Returns:
      A condition based on this pattern.
    • accept

      public void accept(Visitor visitor)
      Description copied from interface: Visitable
      Accept a Visitor visiting this Visitable and its nested Visitables if applicable.
      Specified by:
      accept in interface Visitable
      Parameters:
      visitor - the visitor to notify, must not be null.
    • toString

      public String toString()
      Description copied from interface: Visitable
      Most visitables will render themselves into a Cypher fragment preceded with the actual classname. The representation however is not cached - in contrast to the ones for full statements. Using toString is recommended for debugging purposes mainly, and not for production use.

      The concrete classname has been prepended to help debugging and actually to discourage using fragments to build queries without explicitly rendering them, either as statement or going through the renderer on purpose.

      Specified by:
      toString in interface Visitable
      Overrides:
      toString in class Object
      Returns:
      A string representation of this visitable formatted as Classname{cypher=value}