使用Tinkerpop Frames,如何获得Vertex的所有传入或传出边缘,无论其标签如何?

时间:2012-05-29 20:24:25

标签: neo4j gremlin

Tinkerpop Frames wiki说,顶点可以给出下面的注释,以便让给定人“知道”的所有人。但是,无论连接边缘的标签是什么,我怎么能找到与给定人相关的所有人?这可能吗?

 @Adjacency(label="knows")
 public Iterable<Person> getKnowsPeople();

谢谢!

1 个答案:

答案 0 :(得分:1)

你不能不修改底层框架。在 AdjacencyAnnotationHandler.processVertex 方法中,您会发现Frames只是调用目标Blueprints Vertex的getVertices()方法:

if (ClassUtilities.isGetMethod(method)) {
   final FramedVertexIterable r = new FramedVertexIterable(framedGraph, 

   vertex.getVertices(
      adjacency.direction(), adjacency.label()), 
      ClassUtilities.getGenericClass(method));


    if (ClassUtilities.returnsIterable(method)) {
      return r;
    } else {
      return r.iterator().hasNext() ? r.iterator().next() : null;
    }
} 

如果您需要所请求的功能,请修改此语句以返回所有顶点或使用某些约定(如标签值中的星号)来执行基于表达式的绑定。

https://github.com/tinkerpop/frames/blob/master/src/main/java/com/tinkerpop/frames/annotations/AdjacencyAnnotationHandler.java