Neo4j,显示具有某些节点属性和关系名称的路径

时间:2014-03-19 09:31:01

标签: java iterator neo4j

在Neo4J代码示例(http://docs.neo4j.org/chunked/stable/tutorial-traversal-java-api.html)中,以下输出函数用于打印图形:

for ( Path position : db.traversalDescription()
        .depthFirst()
        .relationships( Rels.KNOWS )
        .relationships( Rels.LIKES, Direction.INCOMING )
        .evaluator( Evaluators.toDepth( 5 ) )
        .traverse( node ) )
{
    output += position + "\n";
}

输出功能显示节点和关系ID,包括。关系名称:

(6)
(6)<--[LIKES,1]--(3)
(6)<--[LIKES,1]--(3)--[KNOWS,6]-->(0)

如何显示某些节点​​和关系属性(在此示例中仅显示名称和关系类型)?我想有以下输出:

Joe
Joe – [likes] – Lisa
Joe – [likes] – Lisa – [knows] Lars

提前致谢

1 个答案:

答案 0 :(得分:0)

您必须编写自己的格式化程序,并使用您要显示的属性进行配置:

toString(Node n, String prop) { return "("+node.getProperty(prop)+")"; }
toString(Relationship r) { return "-["+r.getType().name()+"]->"; }

并在路径上迭代,选择一个或另一个

public String render(Path path, String prop) {
   StringBuilder result=new StringBuilder();
   for (PropertyContainer pc : path) {
      if (pc instanceof Node) sb.append(toString((Node)pc,prop));
      else sb.append(toString((Relationship)pc));
   }
   return sb.toString();
}