这是我第一次在这里写作,但我真的遇到了一个问题: 是否可以在No-SQL数据库上使用Jena推理器,如Neo4J,已经填充了数据?
我有一个Neo4J的图表,表示一堆三元组,我想在它们上使用Jena API和Jena推理器。我想过使用Jena的SDB / TDB组件,但我不知道如何将数据实际加载到我的模型中,因为SDB组件似乎只适用于SQL数据库而且整个TDB javadoc似乎有点太多了。 我是否应该为TDB模型定义某种配置文件?
非常感谢你的帮助。
答案 0 :(得分:9)
你应该看看this link,它描述了neo4j和triplestores之间的联系。或至少可能的连接。
neo4j模型与Jena使用的RDF模型非常不同。 RDF由三元组组成,意思是主语,谓语和对象。 Here is an example of a graph composed of triples。请注意使用URI来标识资源,并注意节点通常是原子数据值。它们是URI,简单数字,字符串等等。
在Neo4j中,节点是“属性容器”。这意味着它们不仅仅是URI,而且实际上是捆绑的信息。关系连接节点。所以RDF“谓词”有点像Neo4j关系,但neo4j节点不像RDF资源和文字。
如果你想在neo4j数据库上使用reasoners,那么你的主要任务就是从neo4j中吸取数据,并将其格式化为一组RDF三元组。然后,您可以将这些RDF三元组放入Jena Model。当你在内存中有jena模型时,你可以使用现有的jena API来使用该模型的reasoners。
答案 1 :(得分:0)
我正在创建jena API的neo4j实现。为此,我将继承ObjectProperty,Individual和OntClass,并对neo4j端点实现查询。
主要问题是,为了推理整个数据库必须加载到内存中才能使用Jena的内存推理。我现在的解决方案是使用“推理”-server来处理它并将新结果写入主持久层。当然,这仅适用于长期推荐系统,而不适用于UI交互。
在这里查看项目的当前状态:
https://github.com/uzuzjmd/Wissensmodellierung
路径: 权限数据库\ SRC \主\阶\ uzuzjmd \能力\持久\ Neo4j的
任何有兴趣参与此开源项目的人都可以随时与我联系。
答案 2 :(得分:0)
我参加聚会有点晚了,但您可以使用 https://github.com/neo4j-labs/neosemantics 将 Neo4J 数据输出为三元组并将其读入 Jena 模型