簡體   English   中英

如何使用Tinkerpop框架限制解析深度

[英]How to limit parsing depth using Tinkerpop Frames

嗨,我有一個接口和一個相應的實現類,例如:

public interface IActor extends VertexFrame {

    @Property(ActorProps.nodeClass)
    public String getNodeClass();

    @Property(ActorProps.nodeClass)
    public void setNodeClass(String str);

    @Property(ActorProps.id)
    public String getId();

    @Property(ActorProps.id)
    public void setId(String id);

    @Property(ActorProps.name)
    public String getName();

    @Property(ActorProps.name)
    public void setText(String text);

    @Property(ActorProps.uuid)
    public String getUuid();

    @Property(ActorProps.uuid)
    public void setUuid(String uuid);

    @Adjacency(label = RelClasses.CoActors, direction = Direction.OUT)
    public Iterable<IActor> getCoactors();
}

我將OrientDB與之類似。 我對Neo4j也有類似的實現:

Graph graph = new OrientGraph("remote:localhost/actordb");
FramedGraph<Graph> manager = new FramedGraphFactory().create(graph);
IActor actor = manager.frame(((OrientGraph)graph).getVertexByKey("Actor.uuid",uuid), IActor.class);

上面的作品,但問題是,在這種情況下或類似的情況下,由於Actor類的兩個頂點之間存在關系,因此可能存在圖循環。 有沒有一種方法可以通過注釋或其他方式(例如通過管理器)來定義,以在特定@Adjacency的x步后停止,從而不會永遠消失? 如果@GremlinGroovy( https://github.com/tinkerpop/frames/wiki/Gremlin-Groovy )注釋是答案,您可以舉個例子嗎?

我不確定我是否了解問題/問題。 (您說“可能”,但實際上尚未證明存在問題!)

  • 是否存在“頂點/框架”中存在循環以及(您認為)加載對象會導致無限循環的問題?
  • 您是否能夠證明通過循環加載頂點/框架存在問題? (告訴我代碼/問題)

據我了解,管道將lazy-load對象(僅在需要時才加載)。 幀(我想)僅在請求時加載相鄰幀。 就我所知,基本上沒有問題。

示例(Groovy)

// create some framed vertices
Person nick = createPerson(name: 'Nick')
Person michail = createPerson(name: 'Michail')

// create a recursive loop
nick.addKnows(michail)
michail.addKnows(nick)

// handles recursion = true!
Person nick2 = framedGraph.getVertex(nick.asVertex().id, Person)
assert nick2.knows.knows.knows.knows.knows.name == 'Michail'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM