2016-03-28 95 views
2

我在學習和使用GAS API來實現一個隨機遍歷我的數據庫,將每個訪問過的頂點與起始頂點相關聯。GAS API的實現和使用

我有一些問題了解如何設法做到這一點;我一直在評論PATHS,BFS,PR和其他GAS課程,但我不太清楚如何開始。

我認爲我的實現應該擴展BaseGASProgram並實現所需的方法。此外,作爲迭代,邊界包含當前迭代的所有頂點。 的前身的概念對我來說也很清楚。

但我不認爲我很瞭解Gather,Apply,Scatter哲學以及如何在這三個概念上分發Random Walk。

另外,一旦我執行我的代碼,我該如何調用它?我如何在代碼中調用已經實現的算法(PR,SSSP,BFS等)?我應該實例化一個SSSP對象,然後呢?或者GASContextGASRunnerBase

回答

1

在bigdata氣包TestBFS類請看:

final IGASEngine gasEngine = getGraphFixture() 
     .newGASEngine(1/* nthreads */); 

try { 

    final SailConnection cxn = getGraphFixture().getSail() 
      .getConnection(); 

    try { 

     final IGraphAccessor graphAccessor = getGraphFixture() 
       .newGraphAccessor(cxn); 

     final IGASContext<BFS.VS, BFS.ES, Void> gasContext = gasEngine 
       .newGASContext(graphAccessor, new BFS()); 

     final IGASState<BFS.VS, BFS.ES, Void> gasState = gasContext 
       .getGASState(); 

     // Initialize the froniter. 
     gasState.setFrontier(gasContext, p.getMike()); 

     // Converge. 
     gasContext.call(); 

[snip] 

要使用它的測試案例背景之外,你需要建立某種形式的SailConnection。示例請參閱blazegraph-samples GitHub項目。然後你需要創建一個SAILGASEngine。這應該讓你開始直接在Java層調用GASEngine

+0

謝謝布拉德,我只是檢查這些類;我會嘗試一下並讓你知道。當我知道了(有點),我會標記你的答案。謝謝! – antorqs

+0

嗨布拉德,很抱歉打擾你。我設法使用本地示例文件運行TestBFS程序。但我真正想要做的是運行GAS程序(測試BFS可能)對我的Blazegraph遠程服務器。我已經連接到我的服務器並使用RemoteRepository執行查詢(用於選擇和插入)。但是,對於使用GAS API並運行GASProgram,我是否還需要使用SailConnection?還是隻是爲了與「內存中」即時加載的rdf數據集一起工作? 再次感謝您的幫助。 – antorqs

+0

@aquiros:如果這個答案對你有些幫助,那麼請考慮接受和/或upvoting它。如果您有大量後續問題,請提出一個新問題。如果你在評論中不斷提出許多問題,那麼你可能會被視爲幫助吸血鬼,繼續提問,但不接受或提出答案。 – honk