2016-03-28 39 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