对于cayley来说是新的,并且无法知道如何以未知的级别显示多个级别的查询。
例如,让我们说节点之间的所有谓词/关系都是“喜欢”的。如果我有这样的图形。
A --> BB --> CC --> DD --> E..。
我想跟着火车,展示整个喜欢的图表。我会使用什么查询?这就是我尝试过的。
function getLikes(x) {
return g.V(x).As("source").Out("likes").As("target)
}
getLikes("A").ForEach( function(d) {
g.Emit(getLikes(d))
})这只会回来
{ “结果”:[ { “全部”:{}, “和”:{}, "As":{}, “后退”:{}, ..。以及所有其他路径选项
我也试过
return g.V(x).As("source").Out("likes").As("target).All()而不是第二行代码。刚在最后添加了.All()来完成查询。这将返回查询结果,但是可视化工具没有显示任何内容。任何关于如何显示这类图表的指导都将不胜感激!
发布于 2017-06-15 15:13:26
我不确定你是否还需要这个,但我还是要写,因为我必须从几乎不存在的基于Cayley的例子文档中学到同样的东西。
为了遍历一个图,Cayley在.FollowRecursive()中定义了一个API接口方法。.FollowRecursive方法使用一种叫做Morphism的方法来确定如何递归地遵循路径。据我理解,它似乎是一个抽象的path对象,它编码递归情况(类似于您的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
})
})我希望宇宙中的某个人会发现这有帮助
https://stackoverflow.com/questions/31299240
复制相似问题