是否有任何免费的猫头鹰推理器可以在不将所有数据加载到内存的情况下进行推理?

Posted

技术标签:

【中文标题】是否有任何免费的猫头鹰推理器可以在不将所有数据加载到内存的情况下进行推理?【英文标题】:Is there any free owl reasoner that can reason without load all data into memory? 【发布时间】:2012-05-06 09:29:26 【问题描述】:

我使用 Jena 和 TDB 来存储 RDF,我想对它做一些推断。但是 RDF 数据很大,Jena 的猫头鹰推理器必须将所有数据加载到内存中。 所以我想找一个不用把所有数据都加载到内存中就能推理的推理器,有吗?

【问题讨论】:

您的数据有多大?只是好奇... 【参考方案1】:

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

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

因此,如果您不需要使用深度学习,那么我会使用支持其中一个配置文件的工具,您应该可以从中获得相当不错的效果。

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

【讨论】:

其实RDF的数据是skos,不知道能不能用QL推理【参考方案2】:

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

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

http://incubator.apache.org/jena/documentation/io/riot.html#inference

源码在这里:

https://svn.apache.org/repos/asf/incubator/jena/Jena2/ARQ/tags/jena-arq-2.9.0-incubating/src/main/java/riotcmd/infer.java https://svn.apache.org/repos/asf/incubator/jena/Jena2/ARQ/tags/jena-arq-2.9.0-incubating/src/main/java/org/openjena/riot/pipeline/inf/InferenceProcessorRDFS.java https://svn.apache.org/repos/asf/incubator/jena/Jena2/ARQ/tags/jena-arq-2.9.0-incubating/src/main/java/org/openjena/riot/pipeline/inf/InferenceSetupRDFS.java

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

https://github.com/castagna/tdbloader4/blob/f5363fa49d16a04a362898c1a5084ade620ee81b/src/main/java/org/apache/jena/tdbloader4/InferDriver.java

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

http://www.few.vu.nl/~jui200/webpie.html

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

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

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

https://svn.apache.org/repos/asf/incubator/jena/Import/Jena-SVN/Ymris/trunk/

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于是否有任何免费的猫头鹰推理器可以在不将所有数据加载到内存的情况下进行推理?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不将鉴别器传递给构造函数的情况下映射 Enumeration 类?

如何在不将 nib 名称指定为字符串的情况下使用 nib 加载 View Controller 子类?

有没有办法在不将完整文件加载到内存的情况下将 tiff 图像转换为 Base64

如何在不将其注册为机器人的情况下创建不和谐机器人?

猫头鹰轮播:不将 data-src 值拉为 Vimeo 视频的 CSS 中的背景图像

是否可以从一个字符串本地保存数据,然后在不将其移动到其他地方的情况下进行破坏?