当前位置: 首页 > 知识库问答 >
问题:

Gremlin:使用给定的标签和属性值计算出站边缘

巢海
2023-03-14

我有一个图,其中顶点有几个出站边类型,每个边类型都有属性。我想从每个顶点获得出站边的计数,但将计数限制为具有特定标签和属性值的边。

到目前为止,我有:

g.V().hasLabel("vertexLabel").as("source")
    .outE("edgeLabel").has("edgeProp", "propValue").as("edge")
    .select("source", "edge")

这给了我一个具有正确标签和属性的每个源vertext和每个传出边的列表。我想做的是将其减少到每个源顶点的单个条目和出站边的数量。但是,我似乎无法让groupCountoutE结合使用。我得到的最接近的是:

g.V().hasLabel("vertexLabel").as("source").out("edgeLabel").groupCount()

这使我可以按源顶点计数,但包括带有该标签的所有边,而不管它们具有什么特性值。

我知道这可能需要一个组()。通过()步骤,但我不确定如何形成它。

提前谢谢。

共有1个答案

张嘉
2023-03-14

使用TinkerPop中的“现代”玩具图,我认为您可以通过使用project()来最好地表达这一点:

gremlin> g.V().hasLabel('person').
......1>   project('source','count').
......2>     by().
......3>     by(outE('created').has('weight',gt(0.5)).count())
==>[source:v[1],count:0]
==>[source:v[2],count:0]
==>[source:v[4],count:1]
==>[source:v[6],count:0]

您也可以使用groupCount()执行此操作,但对我来说感觉有点尴尬:

gremlin> g.V().hasLabel('person').
......1>   outE('created').
......2>   has('weight',gt(0.5)).
......3>   groupCount().
......4>     by(inV())
==>[v[5]:1]

注意,在这种情况下,您会丢失“0”值,因为边在groupCount()之前被过滤掉。你也可以选择group(),但我认为它读起来不如project():

gremlin> g.V().hasLabel('person').
......1>   group().
......2>     by().
......3>     by(outE('created').
......4>        has('weight',gt(0.5)).count())
==>[v[1]:0,v[2]:0,v[4]:1,v[6]:0]

 类似资料:
  • 我只是在玩Cosmos DB中的Graph API,它使用Gremlin语法进行查询。 我在图中有许多用户(顶点),每个用户对其他用户都有“知道”的属性。其中一些是外边缘(outE),另一些是内边缘(inE),具体取决于关系的创建方式。我现在尝试创建一个查询,该查询将返回给定用户(顶点)的所有“已知”关系。我可以通过以下方式轻松获取inE或outE的ID: 其中是我正在查询的用户的ID,但我无法提

  • 我试图使用Gremlin从一个起始节点向外遍历到连接X度内的所有连接节点。连接的方向无关紧要,所以我使用了函数。我还希望能够防止遍历与特定标签相交。这是一个示例图。 到目前为止,我进行的遍历如下所示: 然而,这并不是我所寻找的。我想要一些实际上可以防止遍历者在必须跨越指定边缘时触及顶点的东西。我当前的实现过滤具有传入边缘的顶点,但在某些情况下,如果遍历者跨越不同的边缘到达那里,我可能仍然希望该顶点

  • 我试图找到一个高效的gremlin查询,它返回顶点和输出边数的遍历。或者更好的是,如果存在或不存在传出边,则使用布尔值代替传出边的数量。 我的第一次尝试是: 第二个想法是: 两者似乎都有效,但是否有更好的解决方案,不需要底层图实现来获取或计数所有边? (我们目前在Postgresql中使用Tinkerpop/Gremlin的sqlg实现,这两个查询似乎都从Postgresql中获取所有传出的边缘。

  • 问题内容: 我想使用PHP DOMDocument更改标签属性的值。 例如,假设我们有以下这行HTML: 我将上述代码加载到PHP中,如下所示: 我想使用PHP的DOMDocument扩展名将“ href”值更改为“ http://google.com/”。这可能吗? 与往常一样感谢您的帮助! 问题答案:

  • 本文向大家介绍Vue计算属性的使用,包括了Vue计算属性的使用的使用技巧和注意事项,需要的朋友参考一下 我们都知道在Vue构造函数的参数对象中有一个【data】属性,该属性值是一个对象,该对象是对数据的代理,是一个键值对并且时刻与页面表现是一致的,但是这里面只能是简单的键值对,不能拥有业务逻辑,并且由于【data】中的属性属于同一个生命周期,所以如果我们需要某一个属性是依赖于另外一个属性时,在【d

  • 我想像下面这样建模合作伙伴关系,我用标记属性图的格式表示。 我想用RDF语言来表达上面的图形,尤其是我想了解我是否能表达“loves”边的标签(这是文章/字母的URI)。 我不熟悉RDF,我知道RDF可以很容易地表达LPG中的节点属性,但是可以方便地表达边缘属性吗? 这个问题的背景是:我想使用RDF(而不是Gremlin)的原因是,从长远来看,我想添加一些推理能力。 进一步添加的问题:如果我们选择