org.neo4j.graphdb.Path.length()方法的使用及代码示例

x33g5p2x  于2022-01-26 转载在 其他  
字(6.4k)|赞(0)|评价(0)|浏览(139)

本文整理了Java中org.neo4j.graphdb.Path.length()方法的一些代码示例,展示了Path.length()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Path.length()方法的具体详情如下:
包路径:org.neo4j.graphdb.Path
类名称:Path
方法名:length

Path.length介绍

[英]Returns the length of this path. That is the number of relationships (which is the same as the number of nodes minus one). The shortest path possible is of length 0.
[中]返回此路径的长度。这是关系的数量(与节点数量减1相同)。可能的最短路径长度为0。

代码示例

代码示例来源:origin: neo4j/neo4j

@Override
public int length()
{
  return path.length();
}

代码示例来源:origin: neo4j/neo4j

@Override
public int length()
{
  return start.length() + 1;
}

代码示例来源:origin: neo4j/neo4j

@Override
  protected boolean includePath( Path path, TraversalBranch startBranch, TraversalBranch endBranch )
  {
    if ( !super.includePath( path, startBranch, endBranch ) )
    {
      return false;
    }

    if ( depth == -1 )
    {
      depth = path.length();
      return true;
    }
    return path.length() == depth;
  }
}

代码示例来源:origin: neo4j/neo4j

@Mapping( "length" )
public ValueRepresentation length()
{
  return ValueRepresentation.number( path.length() );
}

代码示例来源:origin: neo4j/neo4j

@Override
public NodeValue[] nodes()
{
  int length = path.length() + 1;
  NodeValue[] values = new NodeValue[length];
  int i = 0;
  for ( Node node : path.nodes() )
  {
    values[i++] = ValueUtils.fromNodeProxy( node );
  }
  return values;
}

代码示例来源:origin: neo4j/neo4j

@Override
public RelationshipValue[] relationships()
{
  int length = path.length();
  RelationshipValue[] values = new RelationshipValue[length];
  int i = 0;
  for ( Relationship relationship : path.relationships() )
  {
    values[i++] = ValueUtils.fromRelationshipProxy( relationship );
  }
  return values;
}

代码示例来源:origin: neo4j/neo4j

private Direction getDirectionOfLastRelationship( Path path )
  {
    assert path.length() > 0;
    Direction direction = Direction.INCOMING;
    if ( path.endNode().equals( path.lastRelationship().getEndNode() ) )
    {
      direction = Direction.OUTGOING;
    }
    return direction;
  }
};

代码示例来源:origin: neo4j/neo4j

private Path[] splitPathsOnePerLevel( Traverser traverser )
  {
    Path[] paths = new Path[10];
    for ( Path path : traverser )
    {
      int depth = path.length();
      if ( paths[depth] != null )
      {
        fail( "More than one path one depth " + depth );
      }
      paths[depth] = path;
    }
    return paths;
  }
}

代码示例来源:origin: neo4j/neo4j

@Override
  public Evaluation evaluate( Path path, BranchState<Double> state )
  {
    double nextState = state.getState();
    if ( path.length() > 0 )
    {
      nextState += costEvaluator.getCost( path.lastRelationship(), OUTGOING );
      state.setState( nextState );
    }
    return Evaluation.EXCLUDE_AND_CONTINUE;
  }
}

代码示例来源:origin: neo4j/neo4j

@Override
  public Evaluation evaluate( Path path, BranchState<Double> state )
  {
    double nextState = state.getState();
    if ( path.length() > 0 )
    {
      nextState += costEvaluator.getCost( path.lastRelationship(), OUTGOING );
      state.setState( nextState );
    }
    if ( path.endNode().equals( endNode ) )
    {
      shortestSoFar.setValue( Math.min( shortestSoFar.doubleValue(), nextState ) );
      return Evaluation.INCLUDE_AND_PRUNE;
    }
    return Evaluation.EXCLUDE_AND_CONTINUE;
  }
}

代码示例来源:origin: neo4j/neo4j

@Override
public Iterable<Relationship> expand( Path path, BranchState<STATE> state )
{
  if ( path.length() == 0 )
  {
    return path.endNode().getRelationships( types );
  }
  else
  {
    Direction direction = getDirectionOfLastRelationship( path );
    return path.endNode().getRelationships( direction, types );
  }
}

代码示例来源:origin: neo4j/neo4j

@Override
@SuppressWarnings( "unchecked" )
public Iterable<Relationship> expand( Path path, BranchState<Object> state )
{
  if ( path.startNode().equals( path.endNode() ) )
  {
    assertEquals( "Path length must be zero", 0, path.length() );
  }
  else
  {
    assertTrue( "Path length must be positive", path.length() > 0 );
  }
  return expander.expand( path, state );
}

代码示例来源:origin: neo4j/neo4j

@Override
public Iterable<Relationship> expand( Path path, BranchState<Integer> state )
{
  assertEquals( path.length() / 2, state.getState().intValue() );
  if ( path.length() % 2 == 1 )
  {
    state.setState( state.getState() + 1 );
  }
  return path.endNode().getRelationships( Direction.OUTGOING );
}

代码示例来源:origin: neo4j/neo4j

@Override
public Iterable<Relationship> expand( Path path, BranchState<Integer> state )
{
  if ( path.length() > 0 )
  {
    int newState = state.getState() + ((Number)path.lastRelationship().getProperty( "weight" )).intValue();
    state.setState( newState );
    encounteredState.put( path.endNode(), newState );
  }
  return path.endNode().getRelationships();
}

代码示例来源:origin: neo4j/neo4j

@Test
public void shouldHandlePaths()
{
  // Given
  NodeValue n1 = nodeValue( 42L, stringArray( "L" ), EMPTY_MAP );
  NodeValue n2 = nodeValue( 43L, stringArray( "L" ), EMPTY_MAP );
  PathValue p = path(
      new NodeValue[]{n1, n2},
      new RelationshipValue[]{relationshipValue( 1L, n1, n2, stringValue( "T" ), EMPTY_MAP )} );
  // When
  p.writeTo( converter );
  // Then
  Object value = converter.value();
  assertThat( value, instanceOf( Path.class ) );
  Path path = (Path) value;
  assertThat( path.length(), equalTo( 1 ) );
  assertThat( path.startNode().getId(), equalTo( 42L ) );
  assertThat( path.endNode().getId(), equalTo( 43L ) );
  assertThat( path.relationships().iterator().next().getId(), equalTo( 1L ) );
}

代码示例来源:origin: neo4j/neo4j

@Override
public Iterable<Relationship> expand( Path path, BranchState<Integer> state )
{
  assertEquals( path.length(), state.getState().intValue() );
  state.setState( state.getState() + 1 );
  return path.endNode().getRelationships( Direction.OUTGOING );
}

代码示例来源:origin: neo4j/neo4j

@Override
public Iterable<Relationship> expand( Path path, BranchState<Double> state )
{
  double newState = state.getState();
  if ( path.length() > 0 )
  {
    newState += (Double) path.lastRelationship().getProperty( "length" );
    state.setState( newState );
  }
  seenBranchStates.put( path.endNode(), newState );
  return path.endNode().getRelationships( OUTGOING );
}

代码示例来源:origin: neo4j/neo4j

private void testCIsReturnedOnDepthTwo( TraversalDescription description )
  {
    try ( Transaction transaction = beginTx() )
    {
      description = description.expand( PathExpanders.forTypeAndDirection( ONE, OUTGOING ) );
      int i = 0;
      for ( Path position : description.traverse( node( "A" ) ) )
      {
        assertEquals( i++, position.length() );
      }
    }
  }
}

代码示例来源:origin: neo4j/neo4j

private Traverser traverseToDepth( GraphDatabaseService graphDb, final Node startNode, final int depth )
{
  TraversalDescription traversalDescription = graphDb.traversalDescription()
      .expand( PathExpanders.allTypesAndDirections() )
      .depthFirst()
      .evaluator( path ->
      {
        if ( path.length() < depth )
        {
          return Evaluation.INCLUDE_AND_CONTINUE;
        }
        else
        {
          return Evaluation.INCLUDE_AND_PRUNE;
        }
      } );
  return traversalDescription.traverse( startNode );
}

代码示例来源:origin: neo4j/neo4j

@Test
public void testDepthFirstTraversalReturnsNodesOnCorrectDepths()
{
  try ( Transaction transaction = beginTx() )
  {
    Traverser traverser = getGraphDb().traversalDescription().depthFirst().traverse( node( "1" ) );
    int i = 0;
    for ( Path pos : traverser )
    {
      assertEquals( expectedDepth( i++ ), pos.length() );
    }
    assertEquals( 13, i );
  }
}

相关文章