【问题标题】:map owl file into neo4j - getOrCreateNodeWithUniqueFactory method将 owl 文件映射到 neo4j - getOrCreateNodeWithUniqueFactory 方法
【发布时间】:2014-01-05 01:03:39
【问题描述】:

我尝试将本体(*.owl 文件)移动到neo4j 以对其进行查询。我找到了一些有用的信息here,但我遇到了这一行的问题:

Node thingNode = getOrCreateNodeWithUniqueFactory("owl:Thing");

我不知道“getOrCreateNodeWithUniqueFactory”属于哪个类。这在某些库中可用还是我应该自己实现?

我在这里错过了什么?

【问题讨论】:

  • 这看起来像是 neo4j 类中的私有方法:(链接在这里)[grepcode.com/file/repo1.maven.org/maven2/com.impetus.client/….我不确定您是否应该依赖此代码,它是私有代码,要使用它,您的代码应该位于 GraphDatabaseService 中。请显示更多您的代码,否则很难提供建议。
  • 我认为这不是来自链接的方法——它需要很多参数。请给我您的电子邮件,我会向您发送存储库的邀请。我几乎可以肯定我必须自己创建这个方法。
  • 在 GitHub 上吗?我在那里 ignazio1977

标签: java neo4j owl


【解决方案1】:

有几种方法可以创建唯一节点。可能最简单的方法是使用UniqueFactory,如http://docs.neo4j.org/chunked/milestone/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-unique-get-or-create-with-factory 下的 Neo4j 文档中所示。 另一种是使用密码约束(参见:http://components.neo4j.org/neo4j/2.0.0/apidocs/org/neo4j/graphdb/event/TransactionEventHandler.html)。 最后,可以将您创建的节点存储在地图中(通过TransactionEventHandler)并在创建新节点之前在那里查找它。使用 owl 输入 IRI 作为键和创建节点的 id 作为值是有意义的。这种方式会比独特的工厂更快,但更明智。

【讨论】:

  • 第一个包含教程的链接现在失效了。我能得到任何其他帮助吗?
【解决方案2】:

我实现了方法:getOrCreateNodeWithUniqueFactory

private static Node getOrCreateNodeWithUniqueFactory(String nodeName,
            GraphDatabaseService graphDb) {
        UniqueFactory<Node> factory = new UniqueFactory.UniqueNodeFactory(
                graphDb, "index") {
            @Override
            protected void initialize(Node created,
                    Map<String, Object> properties) {
                created.setProperty("name", properties.get("name"));
            }
        };

        return factory.getOrCreate("name", nodeName);
    }

【讨论】:

    猜你喜欢
    • 2013-05-25
    • 2023-02-14
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多