可以將TraversalDescription配置爲接收沒有一對路徑作爲另一路徑的子路徑(尤其是前綴)的路徑的集合嗎?TraversalDescription中沒有包含彼此的路徑
1
A
回答
2
有,使用評估者。
給出的示例圖表:
A->B->C
A(反向,在這個例子中)穿越由C沒有評估將返回三個路徑:
{C, B->C, A->B->C}
比方說,我感興趣的遍歷到圖的輸入(在這種情況下,'A')。如果路徑中的最後一個節點是輸入,我可以通過終止並返回一個路徑來實現。我創建評估器對象(像下面):
public class TerminalEvaluator implements Evaluator {
@Override
public Evaluation evaluate(Path path) {
if (path.endNode().hasRelationship(Direction.INCOMING)) {
return Evaluation.EXCLUDE_AND_CONTINUE;
}
return Evaluation.INCLUDE_AND_CONTINUE;
}
}
這會檢查路徑的端末節點是否爲輸入(即,不具有輸入的關係/邊緣)。如果它不是輸入,則它將從遍歷返回的集合中排除該路徑,並繼續返回Evaluation.EXCLUDE_AND_CONTINUE。如果該節點是輸入,則它會在返回的集合中包含該路徑(使用Evaluation.INCLUDE_AND_CONTINUE)。
您將需要設置評價者 - ,在我的玩具例子給出了一個名爲「graphDb」 GraphDatabaseService(我已經排除驅動反向這個穿越的代碼):
graphDb.traversalDescription().depthFirst().evaluator(new TerminalEvaluator())
運行此遍歷返回一個路徑:
A->B->C
修改評估方法,並且還改變遍歷順序(例如,以深度優先的後序遍歷)將允許更復雜的行爲,其可以是或可以不是使用的給你。
相關問題
- 1. 兩個Eclipse項目在構建路徑中包含彼此
- 2. 簡單的Makefile沒有包含路徑
- 3. 找到彼此最近的路徑?
- 4. 兩個類包含彼此的成員
- 5. 在包含GET路徑中包含GET變量(路徑)
- 6. 在沒有指定構建的類路徑中包含Java 1.8
- 7. CMake包含路徑
- 8. ZF包含路徑
- 9. 當路徑包含#
- 10. VS15包含路徑
- 11. 此模板中的正確包含路徑是什麼?
- 12. 使用TraversalDescription查找所有最短路徑
- 13. 包含的makefile的路徑
- 14. gfortran包含具有空間的路徑
- 15. 包含路徑 - 相對路徑
- 16. jni.h:沒有這樣的文件或目錄,包含路徑
- 17. Zend Framework包含Application.ini中的princexml路徑
- 18. 在JAR中包含JAR的類路徑
- 19. mustache.js中的部分包含路徑
- 20. 矩形中包含的XNA Vector2路徑
- 21. PHPUnit包含路徑問題
- 22. C++庫路徑包含
- 23. MSVC-10包含路徑
- 24. 概括包含路徑
- 25. 函數Netbeans包含路徑
- 26. xcode包含路徑衝突
- 27. Zend工具包含路徑
- 28. Zend Framework php.ini包含路徑
- 29. asp包含絕對路徑
- 30. PHP包含子類路徑
請澄清你的問題,例如通過一個示例圖形顯示你想要做什麼。 –
這實際上意味着你永遠不會走出一條路,但總是隻遵循一種關係,那麼你的「RelationshipExpander」就會照顧到這一點。否則,對於每個分支你都會得到你不想要的共享前綴。 –