5

我使用 Jena 和 TDB 来存储 RDF,我想对它做一些推断。但是 RDF 数据很大,Jena 的猫头鹰推理器必须将所有数据加载到内存中。所以我想找到一个推理器,可以在不将所有数据加载到内存的情况下进行推理,有没有一个?

4

3 回答 3

3

并不真地。DL 推理即使在小规模下也难以计算。有大量数据,这不适用于现有方法。在二级存储上做这件事仍然是一个开放的研究问题。

但是,存在各种 OWL 配置文件来解决这个问题。它们都有不同的计算复杂性,这些都比深度学习“更容易”,这使得它们更适合大规模推理。特别是,QL 专为查询时间推理而设计,根据我的经验,它往往具有非常小的内存占用,而 RL 可以使用标准规则推理器来实现。

因此,如果您不需要使用 DL,那么我会使用支持其中一个配置文件的工具,并且您应该从中获得相当不错的收益。

作为参考,您可能会发现这份关于各种 OWL 方言的计算复杂性的文档很有趣

于 2012-04-25T17:29:25.210 回答
2

如果您准备采用 OWL 的一个子集,您可以以流处理方式执行某些操作,而无需将所有 RDF 数据加载到内存中,这将实现所有推断的三元组。

举个例子,看看 RIOT 的 infer 命令:

源代码在这里:

使用 RIOT 的推断并将其与 MapReduce 之类的东西并行运行是微不足道的,示例如下:

另一种使用 MapReduce 应用 RDFS 和 OWL ter Horst 规则并实现所有派生语句的不同方法在这里:

也许,您可以查看您感兴趣的 OWL 部分,并检查您是否可以以流媒体方式进行操作。如果是这样,您可以使用 RIOT 的推断并对其进行扩展,添加您感兴趣的 OWL 部分。这将是对 Apache Jena 的一个很好的贡献(如果您想这样做,请与 jena-dev 邮件列表联系) .

WebPIE 是一个聪明而有趣的项目,但正如您所见,它有点复杂,而且它是一个研究项目(从长期支持和维护的角度来看,这意味着)。但是,如果您想要/需要的是 OWL ter Horst,WebPIE 就可以了。如果其他人有兴趣使用它,您甚至可以付出努力,分叉 WebPIE 并将其贡献给开源项目。

您可能也有兴趣查看 Ymris(但这目前正在睡觉...... zzzzz):

于 2012-04-26T08:19:27.003 回答
0

您可能想尝试 GRAKN.AI,它们对分布式系统中的持久数据进行实时推理。

于 2018-04-27T01:36:56.427 回答