![](/img/trans.png)
[英]Cayley: How do insert vertices and edges into graph using Cayley-Gremlin code?
[英]Gremlin Cayley query: How to have a multi leveled query
新的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))
})
這只會返回
{
“結果”:[
{
“全部”:{},
“和”:{},
“作為”:{},
“背部”: {},
......以及所有其他路徑選擇
我也試過了
return g.V(x).As("source").Out("likes").As("target).All()
而不是第二行代碼。 剛剛在末尾添加了.All()來完成查詢。 這將返回查詢結果,但可視化工具不顯示任何內容。 任何有關如何顯示此圖形的指導將非常感謝!
我不確定你是否仍然需要這個,但我還是要寫,因為我必須從Cayley上幾乎不存在的基於示例的文檔中學到同樣的東西。
為了遍歷圖形,Cayley在API中定義了.FollowRecursive()方法。 方法.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
})
})
我希望宇宙中有人發現它有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.