GAS API实现和使用

时间:2016-03-28 11:21:07

标签: graph-databases blazegraph bigdata

我正在尝试学习并使用GAS API在我的数据库上实现随机漫游,将每个访问过的顶点与起始顶点相关联。

我有一些问题需要了解如何才能做到这一点;我一直在审查PATHS,BFS,PR和其他GAS课程,但我不太清楚如何开始。

我认为我的实现应该扩展BaseGASProgram并实现所需的方法。此外,作为迭代,前沿包含当前迭代的所有顶点。 前身的概念对我来说也很清楚。

但我认为我不太了解Gather,Apply,Scatter哲学以及如何在这三个概念上分布随机漫步。

此外,一旦我实现了我的代码,我该怎么称呼它?如何在我的代码中调用已经实现的算法(PR,SSSP,BFS等)?我应该实例化一个SSSP对象,然后呢?还是GASContextGASRunnerBase

1 个答案:

答案 0 :(得分:1)

看看bigdata-gas包中的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