1

Tinkerpop Frames用来创建一组顶点和边。添加新顶点很简单,但根据类型检索顶点似乎有点困难。

假设我有一个班级AB并且我想添加一个新班级:

framedGraph.addVertex(null, A.class);
framedGraph.addVertex(null, B.class);

这是直截了当的。但是,如果我想检索所有具有 type 的顶点A怎么办?

这样做失败了,因为它返回了所有顶点(AB)。

framedGraph.query().vertices(A.class);

有没有可能的方法来做到这一点。我试图检查文档和测试用例,但没有成功。如何A仅检索类型的顶点列表

4

1 回答 1

0

这个问题看起来像是 -如何使用 Tinkerpop Frames 查找特定类的顶点(今天也被问到)的副本。

据我了解,Tinkerpop Frame 框架充当顶点周围的包装类。顶点实际上并未存储为接口类。因此,我们需要一种方法来将顶点识别为特定的type.

我的解决方案是在我的 Frame 类中添加@TypeField@TypeValue注释。然后我使用这些值来查询我的FramedGraph.

这些注释的文档可以在这里找到:https ://github.com/tinkerpop/frames/wiki/Typed-Graph

示例代码

@TypeField("type")
@TypeValue("person")
interface Person extends VertexFrame { /* ... */ }

然后通过像这样FramedGraphFactory添加来定义。TypedGraphModuleBuilder

static final FramedGraphFactory FACTORY = new FramedGraphFactory(
    new TypedGraphModuleBuilder()
        .withClass(Person.class)
        //add any more classes that use the above annotations. 
        .build()
);

然后检索类型的顶点Person

Iterable<Person> people = framedGraph.getVertices('type', 'person', Person.class);

我不确定这是最有效/最简洁的解决方案(我想看看@stephen mallette 的建议)。它目前不可用,但能够执行以下操作是合乎逻辑的:

// framedGraph.getVertices(Person.class)
于 2015-04-15T00:35:27.960 回答