2014-09-30 58 views
1

下面我試圖找到在頂點上沒有使用過濾器的傳入邊的所有頂點。 fullyQualifiedName是一個唯一索引。我注意到一些頂點似乎有入射邊緣,所以我在下面添加了一個步驟,以便將它們打印出來,如果它們存在的話。因爲我認爲我已經過濾了上面的這些頂點,所以我期望沒有輸出;不過,我仍然看到顯示的傳入邊緣。如何找到所有沒有傳入邊的頂點?

def g = BerkeleyGraphFactory.create() 

def vertices = g.V.filter { 
    it.inE('depends').count() == 0 
} 

Set<String> u = [] 

u.addAll(vertices.collect {v-> 
    v.fullyQualifiedName 
}) 

u.each { 
    def focusIter = g.V('fullyQualifiedName', it) 
    def vertex = focusIter.next() 

    // this shouldn't print out anything since these vertices were filtered above 
    vertex.inE('depends').each { e-> 
     def classRefV = e.outV.next() 
     println it + " is used by " + classRefV.name + " " + e.toString() 
    } 
} 

回答

1

我似乎無法重新創建您的問題。在這裏你的代碼的粗略簡化似乎表明,事情按預期工作:

gremlin> g = TinkerGraphFactory.createTinkerGraph() 
==>tinkergraph[vertices:6 edges:6] 
gremlin> ids = g.V.filter{!it.inE('knows').hasNext()}.id.toList() 
==>1 
==>3 
==>5 
==>6 
gremlin> ids.collect{g.v(it).inE('knows').toList()}    
==>[] 
==>[] 
==>[] 
==>[] 

或許你可以嘗試轉換代碼,我走上看看是否有幫助的方法相匹配?我不確定還有什麼可以說你提供一些示例數據來處理你的問題可以重新創建的具體情況。

+0

嘗試了你的建議沒有運氣。即使在fullyQualifiedName上有一個唯一鍵,我正在瀏覽圖表並注意到重複的頂點。我現在正在調查我的提交,但仍不確定查詢的錯誤。 – tjg184 2014-10-01 14:22:18

+0

我想到了這一點,但無法弄清楚爲什麼它會影響 – 2014-10-01 15:33:05

相關問題