java - 如何将节点 id 替换为其各自的属性?

标签 java neo4j graph-traversal

我使用 Neo4j 作为图形数据库,并使用 Java 从中提取路径。 我的路径如下:

[(3)--[KNOWS,5]-->(4)--[KNOWS,6]-->(5)--[KNOWS,9]-->(6)--[KNOWS,10]-->(7)--[KNOWS,12]-->(9)]

我想用它们的属性替换路径中的节点 ID。 前任。对于具有属性 "name=ABC" 的节点 id 3,输出应类似于 "[(ABC)--[KNOWS,5]....]" 如何做到?

最佳答案

我假设我们显示的输出是 Path.toString() 。没有直接的方法来配置不同的输出方式。但是,您可以轻松地迭代路径并创建您自己的路径字符串表示形式:

String myCustomPathToString(Path path) {
    StringBuilder sb = new StringBuilder();
    Node lastNode = null;
    for (PropertyContainer propertyContainer: path) {
       if (propertyContainer instanceof Node) {
          lastNode = (Node)propertyContainer
          Object default = lastNode.getId(); // as fallback
          sb.append("(").append(propertyContainer.getProperty("name", default).append(")");
       }
       if (propertyContainer instanceof Relationship) {
          Relationship rel = (Relationship)propertyContainer ;
          Object id = rel.getId();
          if (rel.getEndNode().equals(lastNode)) sb.append("<");
          sb.append("--[").append(rel.getType().name()).append(",").append(id).append("]--");
          if (rel.getStartNode().equals(lastNode)) sb.append(">");              
       }
    }
    return sb.toString();
}

免责声明:我没有测试上面的代码片段,所以它更像是一个指导方针,而不是一个工作示例。

关于java - 如何将节点 id 替换为其各自的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15522999/

相关文章:

java - 这可以用java中的图像来做吗?

java - 删除 ArrayList 中 int[] 指定索引处的值

java - Neo4j : Traverser only get first and last node

algorithm - 需要类似DFS的图算法

algorithm - 何时终止在无限网格中搜索路径

Java 按钮布局和显示

java - 如何在 Java Selenium 驱动程序中单击 Canvas 的中心?

python - 使用 PySpark 从 Neo4j 中提取数据

r - 将批量节点与属性合并时的重复

c++ - 如何仅使用邻接表在无向图中找到存在的循环(顶点也没有)?