如何使用neo4j和gremlin存储树结构

发布于 2024-11-27 10:51:07 字数 440 浏览 1 评论 0原文

我想使用 Java 中的 Neo4j 本地数据库和 Gremlin 存储以下目录树结构。

           (ROOT)
        /          \
    Dir2           Dir3
    /    \             \
  Dir4   Dir5        Dir6
  /
Dir7 

我定义了一个方法 StorePath(String path)。
我想要的:当我使用 path = "Root\Dir2\Dir4\Dir7" 调用 StorePath(path) 时,数据应按如下方式存储

         Root
         /
       Dir2
       /
     Dir4
     /
   Dir7 

,其中 Root 和 Dir* 是具有空白边缘的顶点。 请帮我写一下java代码。

I want to store following directory tree structure using neo4j local database and Gremlin in Java.

           (ROOT)
        /          \
    Dir2           Dir3
    /    \             \
  Dir4   Dir5        Dir6
  /
Dir7 

I have defined a method StorePath(String path).
What i want : When i call StorePath(path) with path = "Root\Dir2\Dir4\Dir7" then data should be stored as follows

         Root
         /
       Dir2
       /
     Dir4
     /
   Dir7 

where Root and Dir* are vertices with blank edges.
Please help me with the java code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

狼性发作 2024-12-04 10:51:07
private static final RelationshipType SUB_DIR = DynamicRelationshipType.withName("SUB_DIR");

public void storePath(String path) {
    Node dir = graphDb.getReferenceNode();
    for (String name : path.split(File.separator)) {
        dir = obtainSubDir(dir, name);
    }
}

private Node obtainSubDir(Node dir, String name) {
    Node subDir = getSubDir(dir,name);
    if (subDir!=null) return subDir;
    return createSubDir(dir, name);
}

private Node getSubDir(Node dir, String name) {
    for (Relationship rel : dir.getRelationships(SUB_DIR, Direction.OUTGOING)) {
        final Node subDir = rel.getEndNode();
        if (subDir.getProperty("name", "").equals(name)) return subDir;
    }
    return null;
}

private Node createSubDir(Node dir, String name) {
    Node subDir = dir.getGraphDatabase().createNode();
    subDir.setProperty("name", name);
    dir.createRelationshipTo(subDir, SUB_DIR);
    return subDir;
}
private static final RelationshipType SUB_DIR = DynamicRelationshipType.withName("SUB_DIR");

public void storePath(String path) {
    Node dir = graphDb.getReferenceNode();
    for (String name : path.split(File.separator)) {
        dir = obtainSubDir(dir, name);
    }
}

private Node obtainSubDir(Node dir, String name) {
    Node subDir = getSubDir(dir,name);
    if (subDir!=null) return subDir;
    return createSubDir(dir, name);
}

private Node getSubDir(Node dir, String name) {
    for (Relationship rel : dir.getRelationships(SUB_DIR, Direction.OUTGOING)) {
        final Node subDir = rel.getEndNode();
        if (subDir.getProperty("name", "").equals(name)) return subDir;
    }
    return null;
}

private Node createSubDir(Node dir, String name) {
    Node subDir = dir.getGraphDatabase().createNode();
    subDir.setProperty("name", name);
    dir.createRelationshipTo(subDir, SUB_DIR);
    return subDir;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文