5

这是我第一次在这里写作,但我真的遇到了一个问题:是否可以在已经充满数据的 No-SQL 数据库(如 Neo4J)上使用 Jena 推理器?

我有一个 Neo4J 的图表,表示一堆三元组,我想在它们上使用 Jena API 和 Jena 推理器。我曾考虑过使用 Jena 的 SDB/TDB 组件,但我不知道如何将数据实际加载到我的模型中,因为 SDB 组件似乎只适用于 SQL 数据库,并且遍历整个 TDB javadoc 似乎有点太多了。我也应该为 TDB 模型定义某种配置文件吗?

非常感谢您的帮助。

4

3 回答 3

9

你应该看看这个链接,它描述了 neo4j 和三重存储之间的连接。或者至少可能的连接。

neo4j 模型与 Jena 使用的 RDF 模型非常不同。RDF 由三元组组成,分别表示主语、谓语和宾语。 这是一个由三元组组成的图的示例。请注意使用 URI 来标识资源,并注意节点通常是原子数据值。它们是一个 URI、一个简单的数字、一个字符串等等。

在 Neo4j 中,节点是“属性容器”。这意味着它们不仅仅是 URI,它们实际上是信息包。关系连接节点。所以 RDF “谓词”有点像 Neo4j 关系,但 neo4j 节点不像 RDF 资源和文字。

如果你想在 neo4j 数据库上使用推理器,你的主要任务是从 neo4j 中提取数据,并将其格式化为一组 RDF 三元组。然后,您可以将这些 RDF 三元组放入 Jena Model中。当您在内存中拥有该 jena 模型时,您可以使用现有的 jena API 来使用该模型的推理器。

于 2014-04-08T13:17:52.203 回答
0

我正在创建jena API 的neo4j 实现。为此,我将 ObjectProperty、Individual 和 OntClass 子类化,并实现对 neo4j 端点的查询。

主要问题是,为了使用 Jena 的内存推理,必须将整个数据库加载到内存中进行推理。我目前的解决方案是使用“推理”服务器来处理这个并将新结果写入主持久层。当然,这仅适用于长期推荐系统,不适用于 UI 交互。

在这里查看项目的当前状态:

https://github.com/uzuzjmd/Wissensmodellierung

路径:能力数据库\src\main\scala\uzuzjmd\competence\persistence\neo4j

任何有兴趣参与这个开源项目的人都可以随时与我联系。

于 2016-01-05T12:03:18.563 回答
0

我参加聚会有点晚了,但是您可以使用https://github.com/neo4j-labs/neosemantics将 Neo4J 数据输出为三元组并将其读入 Jena 模型

于 2021-03-22T22:01:39.180 回答