2013-03-26 36 views
0

我有依賴關係圖:不能使模式匹配與一個小鬼聲明

dep1 -> dep2 -> ... -> dep3 -> ... 
    |     ^
    +-> dep4   | 
    |     | 
    +-------------------+ 

我在尋找不必要的依賴,這是那些直接鏈接存在,但也有鏈接通過一個子依賴。在上面的例子中,鏈接「dep1 - > dep3」是不必要的。

的暗號語句來找出那些是:

start n = node(*) 
match n -[:dependency]-> n2, 
     n -[:dependency*2..]-> n2 
with n, n2 
return distinct id(n), n.name, id(n2), n2.name 

我試圖解決一個小鬼聲明這個問題(與「表」 - 工序),但我就是不能使它工作。這甚至可能或者我必須用多個語句來解決這個問題嗎?

任何提示,技巧,想法將不勝感激。

在此先感謝

回答

0

感謝馬爾科和斯蒂芬我們想出了這個解決方案:

g.V.transform{ 
    s-> singleStep = []; 
     s.as('origin') 
      .out('dependency').aggregate(singleStep) 
      .out('dependency') 
       .loop(1){ true }{ true } 
      .retain(singleStep).as('redundant') 
      .dedup() 
      .table(new Table(), ['origin', 'redundant']){ it.name + '(' + it.id + ')' } 
      .cap().next() 
}.filter{ it.size() > 0 }