GAS API 实现和使用

GAS API implementation and usage

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

我在理解如何设法做到这一点时遇到了一些问题;我一直在审查 PATHS、BFS、PR 和其他 GAS 类 作为示例,但我不太确定如何开始。

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

但我认为我不太了解收集、应用、分散哲学以及如何在这三个概念上分布随机游走。

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

看看bigdata-gas包中的TestBFS class:

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