Titan 接收连接两组任意节点的边
Titan receive edge which connects any nodes of two sets
我正在尝试检索连接集合 A 中的任何节点和集合 B 中的一个节点的所有边。
当前方法:
ArrayList<Vertex> nodeStartList = getVertexList(relationshipStorage.getStartNode(), g, snapshotId);
ArrayList<Vertex> nodeEndList = getVertexList(relationshipStorage.getEndNode(), g, snapshotId);
顶点列表已正确填充(已检查)
GraphTraversal<Vertex, Edge> tempOutput = g.V(nodeStartList.toArray()).bothE().where(__.is(P.within(nodeEndList.toArray()))).hasLabel(relationshipStorage.getId());
但我总是从输出中检索到一个空列表。
而且我确定我的边与我的查询相匹配。
这是有效的方法:
gremlin> graph = TinkerGraph.open();
==>tinkergraph[vertices:0 edges:0]
gremlin> v1 = graph.addVertex();
gremlin> v2 = graph.addVertex();
gremlin> v3 = graph.addVertex();
gremlin> v4 = graph.addVertex();
gremlin> v5 = graph.addVertex();
gremlin> v6 = graph.addVertex();
gremlin> v1.addEdge("edgeLabel", v4);
gremlin> v2.addEdge("edgeLabel", v5);
gremlin> v3.addEdge("edgeLabel", v6);
上面创建了 6 个顶点,它们之间有 3 条边。然后我可以找到那些边缘:
gremlin> graph.traversal().V(v1, v2, v3).bothE().filter(otherV().is(within(v4, v5, v6)))
==>e[6][0-edgeLabel->3]
==>e[7][1-edgeLabel->4]
==>e[8][2-edgeLabel->5]
我正在尝试检索连接集合 A 中的任何节点和集合 B 中的一个节点的所有边。 当前方法:
ArrayList<Vertex> nodeStartList = getVertexList(relationshipStorage.getStartNode(), g, snapshotId);
ArrayList<Vertex> nodeEndList = getVertexList(relationshipStorage.getEndNode(), g, snapshotId);
顶点列表已正确填充(已检查)
GraphTraversal<Vertex, Edge> tempOutput = g.V(nodeStartList.toArray()).bothE().where(__.is(P.within(nodeEndList.toArray()))).hasLabel(relationshipStorage.getId());
但我总是从输出中检索到一个空列表。 而且我确定我的边与我的查询相匹配。
这是有效的方法:
gremlin> graph = TinkerGraph.open();
==>tinkergraph[vertices:0 edges:0]
gremlin> v1 = graph.addVertex();
gremlin> v2 = graph.addVertex();
gremlin> v3 = graph.addVertex();
gremlin> v4 = graph.addVertex();
gremlin> v5 = graph.addVertex();
gremlin> v6 = graph.addVertex();
gremlin> v1.addEdge("edgeLabel", v4);
gremlin> v2.addEdge("edgeLabel", v5);
gremlin> v3.addEdge("edgeLabel", v6);
上面创建了 6 个顶点,它们之间有 3 条边。然后我可以找到那些边缘:
gremlin> graph.traversal().V(v1, v2, v3).bothE().filter(otherV().is(within(v4, v5, v6)))
==>e[6][0-edgeLabel->3]
==>e[7][1-edgeLabel->4]
==>e[8][2-edgeLabel->5]