合并重叠路径
Merge overlapping paths
我有一个查询 returns 多条路径。每条路径包含类型为 t
属性 的节点。目标是合并路径的所有 'overlapping'(相同类型的节点)部分,从头开始直到它们第一次分叉。
所以我的查询当前 returns 路径如下:
(t: 1)->(t: 2)->(t: 3)
(t: 1)->(t: 5)->(t: 3)
(t: 2)]->(t: 4)->(t: 3)->(t: 5)
(t: 2)->(t: 3)->(t: 3)->(t: 5)
然后会导致:
(2)->(3)
/
(1)
\
(5)->(3)
(4)->(3)->(5)
/
(2)
\
(3)->(3)->(5)
我很难找到执行此类查询的示例。如果有人能想出一个例子或者能给我指出一个很好的资源来学习这些类型的查询,那就太好了。
tree
步骤可以将路径历史结果转换为更像树的结构。使用 air-routes 数据集:
gremlin> g.V().where(out().count().is(3)).
out().
where(out().count().is(lt(4))).
out().
limit(5).
path().
by('code')
==>[TUP,GLH,TUP]
==>[TUP,GLH,DFW]
==>[GCC,RKS,SLC]
==>[GCC,RKS,DEN]
==>[GCC,RKS,GCC]
使用tree
gremlin> g.V().where(out().count().is(3)).
out().
where(out().count().is(lt(4))).
out().
limit(5).
tree().
by('code')
==>[GCC:[RKS:[GCC:[],SLC:[],DEN:[]]],TUP:[GLH:[DFW:[],TUP:[]]]]
我有一个查询 returns 多条路径。每条路径包含类型为 t
属性 的节点。目标是合并路径的所有 'overlapping'(相同类型的节点)部分,从头开始直到它们第一次分叉。
所以我的查询当前 returns 路径如下:
(t: 1)->(t: 2)->(t: 3)
(t: 1)->(t: 5)->(t: 3)
(t: 2)]->(t: 4)->(t: 3)->(t: 5)
(t: 2)->(t: 3)->(t: 3)->(t: 5)
然后会导致:
(2)->(3)
/
(1)
\
(5)->(3)
(4)->(3)->(5)
/
(2)
\
(3)->(3)->(5)
我很难找到执行此类查询的示例。如果有人能想出一个例子或者能给我指出一个很好的资源来学习这些类型的查询,那就太好了。
tree
步骤可以将路径历史结果转换为更像树的结构。使用 air-routes 数据集:
gremlin> g.V().where(out().count().is(3)).
out().
where(out().count().is(lt(4))).
out().
limit(5).
path().
by('code')
==>[TUP,GLH,TUP]
==>[TUP,GLH,DFW]
==>[GCC,RKS,SLC]
==>[GCC,RKS,DEN]
==>[GCC,RKS,GCC]
使用tree
gremlin> g.V().where(out().count().is(3)).
out().
where(out().count().is(lt(4))).
out().
limit(5).
tree().
by('code')
==>[GCC:[RKS:[GCC:[],SLC:[],DEN:[]]],TUP:[GLH:[DFW:[],TUP:[]]]]