v2 = graph.addVertex(id, 2, la-6ren">
gpt4 book ai didi

graph-databases - 如何选择具有相同属性值的边

转载 作者:行者123 更新时间:2023-12-01 03:28:49 25 4
gpt4 key购买 nike

这是一个示例图

gremlin> v1 = graph.addVertex(id, 1, label,"cell_1")
gremlin> v2 = graph.addVertex(id, 2, label,"cell_2")
gremlin> v1.addEdge("test",v2,id,3,"srving_rsrp",20,"nbr_rsrp",30)
gremlin> v1.addEdge("test",v2,id,4,"srving_rsrp",30,"nbr_rsrp",30)
gremlin> v1.addEdge("test",v2,id,5,"srving_rsrp",10,"nbr_rsrp",40)

我需要获得“srving_rsrp”和“nbr_rsrp”具有相同值(value)的边缘。我找不到适合它的好例子

这是我到达的地方;我想使用过滤器来创建一个只有符合条件的边的图形,而不是每个。我正在使用 Titan (1.0.0-hadoop) 附带的 Germlin shell
g.V(1).outE('test').each{  it.property('srving_rsrp').value == it.property('nbr_rsrp').value}

我可以使用 Python 中的 NetworK 轻松完成此操作;这是我想使用 Germlin 实现的代码
G = nx.MultiDiGraph()  # Create a network Graph

G.add_edge(2,3, time=10,srvingcell=20,neighbourcell=50)
G.add_edge(2,3, time=20,srvingcell=30,neighbourcell=30)
G.add_edge(2,3, time=30,srvingcell=28,neighbourcell=40)
G.add_edge(2,3, time=5,srvingcell=27,neighbourcell=85)
G.edges(data=True)

cutoff = 25

SG=nx.Graph( [ (u,v,d) for u,v,d in G.edges(data=True) if d['srvingcell'] == d['neighbourcell']] )

SG.edges(data=True)

nx.write_gml(SG, "test.gml")

最佳答案

一个简单的答案是将您的 each 更改为 filter :

gremlin> g.V(1).outE('test').filter{  it.get().property('srving_rsrp').value == it.get().property('nbr_rsrp').value}
==>e[4][1-test->2]

但这使用了 lambda,如果可能,最好避免使用 lambda。我不确定以下是否适用于 Gremlin 3.0.x(这是 Titan 1.0.0 所基于的),但是您可以通过以下方式摆脱 labmda:
gremlin> g.V(1).outE('test').as('x','y').
filter(select('x','y').
by('srving_rsrp').by('nbr_rsrp').
where('x',eq('y')))
==>e[4][1-test->2]

您基本上为边缘提供两个标签“x”和“y”,然后应用过滤器。在过滤器中,您选择“x”和“y”标签,对于“x”,您获取“srving_rsrp”属性值,对于“y”,您获取“nbr_rsrp”属性值并过滤它们为 eq(平等的)。

这是 TinkerPop 的食谱中讨论的 Traversal Induced Values 模式的示例。

更新:遍历诱导值在 3.2.3 中甚至更好(在撰写本文时尚未发布):
gremlin> g.V(1).outE('test').as('x','y').
where('x',eq('y')).
by('srving_rsrp').by('nbr_rsrp')
==>e[4][1-test->2]

不再讨厌 select()

关于graph-databases - 如何选择具有相同属性值的边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39488161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com