gpt4 book ai didi

graph-databases - Gremlin Cayley 查询 : How to have a multi leveled query

转载 作者:行者123 更新时间:2023-12-04 07:15:46 25 4
gpt4 key购买 nike

cayley 的新手,无法弄清楚如何显示级别数量未知的多级别查询。

例如,假设节点之间的所有谓词/关系都是“喜欢”。如果我有这样的图形。

A --> B

B --> C

C --> D

D --> E

...

我想跟随火车并显示整个点赞图。我会使用什么查询?这是我试过的。

function getLikes(x) { 
return g.V(x).As("source").Out("likes").As("target)
}

getLikes("A").ForEach( function(d) {
g.Emit(getLikes(d))
})

这只会返回

{

"result": [

{

"All": {},

"And": {},

"As": {},

"Back": {},

... And all other path options

我也试过

return g.V(x).As("source").Out("likes").As("target).All()

代替第二行代码。刚刚在末尾添加了 .All() 以完成查询。这将返回查询结果,但可视化工具什么也没有显示。非常感谢任何有关如何显示类似图表的指导!

最佳答案

我不确定你是否还需要这个,但我还是要写,因为我必须从 Cayley 上几乎不存在的基于示例的文档中学习同样的东西。

为了遍历一个图,Cayley 有一个 .FollowRecursive() API 中定义的方法. .FollowRecursive 方法使用一种称为态射的东西来弄清楚如何递归地遵循路径。据我了解,它似乎是一个对递归情况进行编码的抽象路径对象(有点像您的 getLikes 函数(但不完全是))。下面是 Gizmo 查询的示例,它应该适用于完整的图形/链遍历。

var path = g.M().Out("edge_name_here");
var start_node = "begin";

//Path query
//Note that FollowRecursive expects a Morphism path
g.V(start_node).FollowRecursive(path).All() //That's all.

要可视化整个遍历或对每个顶点做一些进一步的查询,请使用 .ForEach() 构造(请参阅 API)

g.V(start_node).FollowRecursive(path).ForEach( function(v){
//In here we can do further querying or more vaguely put "stuff"
g.V(v.id).Out(chain_pred).ForEach( function(t){
var node = { //This source, target formulation works for visualization for eg.
source: v.id,
target: t.id
}

g.Emit(node) //This throws the output into the final result bucket
})
})

我希望宇宙中的某个人发现它有帮助

关于graph-databases - Gremlin Cayley 查询 : How to have a multi leveled query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299240/

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