Gremlin 获取具有特定开始和结束节点的边
Gremlin get Edge with specific start and end node
我正在使用 Gremlin 来处理 Titan Graph。
我正在努力寻找一种方法来建立非常具体的关系。
我有标签、属性和可能的开始和结束节点列表。
我想要所有的关系都符合这个。
我已经有了这个来获取所有匹配标签的关系 属性:
GraphTraversal<Edge, Edge> tempOutput = g.E().hasLabel(relationshipStorage.getId());
if(relationshipStorage.getProperties() != null)
{
for (Map.Entry<String, Object> entry : relationshipStorage.getProperties().entrySet())
{
if (tempOutput == null)
{
break;
}
tempOutput = tempOutput.has(entry.getKey(), entry.getValue());
}
}
但我没有找到一种方法来获取它的特定开始和结束节点。
我不想在两个节点之间获得多条边。
我只想要一个具有特定顶点的边。
查看 Between Vertices 配方并从那里扩展。例如,假设您想要找到 ID 为 1 和 2 的两个顶点之间的边。进一步假设您只想要 "knows" 具有 "weight" 属性 大于 0.0.[=12 的边=]
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V(1).bothE().where(otherV().hasId(2)).hasLabel('knows').has('weight',gt(0.0))
==>e[7][1-knows->2]
gremlin> g.V(1,2).bothE().where(inV().has(id, within(2,3))).hasLabel('created')
==>e[9][1-created->3]
gremlin> vStarts = g.V(1,2).toList().toArray()
==>v[1]
==>v[2]
gremlin> vEnds = g.V(2,3).toList().toArray()
==>v[2]
==>v[3]
gremlin> g.V(vStarts).bothE().where(inV().is(within(vEnds))).hasLabel('created')
==>e[9][1-created->3]
我正在使用 Gremlin 来处理 Titan Graph。 我正在努力寻找一种方法来建立非常具体的关系。
我有标签、属性和可能的开始和结束节点列表。
我想要所有的关系都符合这个。
我已经有了这个来获取所有匹配标签的关系 属性:
GraphTraversal<Edge, Edge> tempOutput = g.E().hasLabel(relationshipStorage.getId());
if(relationshipStorage.getProperties() != null)
{
for (Map.Entry<String, Object> entry : relationshipStorage.getProperties().entrySet())
{
if (tempOutput == null)
{
break;
}
tempOutput = tempOutput.has(entry.getKey(), entry.getValue());
}
}
但我没有找到一种方法来获取它的特定开始和结束节点。 我不想在两个节点之间获得多条边。 我只想要一个具有特定顶点的边。
查看 Between Vertices 配方并从那里扩展。例如,假设您想要找到 ID 为 1 和 2 的两个顶点之间的边。进一步假设您只想要 "knows" 具有 "weight" 属性 大于 0.0.[=12 的边=]
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V(1).bothE().where(otherV().hasId(2)).hasLabel('knows').has('weight',gt(0.0))
==>e[7][1-knows->2]
gremlin> g.V(1,2).bothE().where(inV().has(id, within(2,3))).hasLabel('created')
==>e[9][1-created->3]
gremlin> vStarts = g.V(1,2).toList().toArray()
==>v[1]
==>v[2]
gremlin> vEnds = g.V(2,3).toList().toArray()
==>v[2]
==>v[3]
gremlin> g.V(vStarts).bothE().where(inV().is(within(vEnds))).hasLabel('created')
==>e[9][1-created->3]