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))
})
这只会返回
{
"结果":[
{
"所有":{},
"和":{},
" As":{},
"返回":{},
... 以及所有其他路径选项
我也试过
return g.V(x).As("source").Out("likes").As("target).All()
而不是第二行代码。刚刚在末尾添加了.All()来完成查询。这将返回查询结果,但可视化工具不显示任何内容。任何有关如何显示此图形的指导都将非常感谢!
答案 0 :(得分:2)
我不确定你是否仍然需要这个,但我还是要去写,因为我必须从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
})
})
我希望宇宙中有人发现它有用