将owl文件映射到neo4j - getOrCreateNodeWithUniqueFactory方法

时间:2013-12-17 10:10:03

标签: java neo4j owl

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

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

我不知道“getOrCreateNodeWithUniqueFactory”属于哪个班级。这在某些图书馆中是否可用,或者我应该自己实施?

我在这里缺少什么?

2 个答案:

答案 0 :(得分: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);
    }

答案 1 :(得分:1)

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