使用 Pellet 了解 SPARQL 和语义推理之间的区别

Posted

技术标签:

【中文标题】使用 Pellet 了解 SPARQL 和语义推理之间的区别【英文标题】:Understanding the difference between SPARQL and semantic reasoning using Pellet 【发布时间】:2016-08-17 00:30:32 【问题描述】:

我有一个比萨本体,它定义了不同类型的比萨、配料和它们之间的关系。 我只是想了解几个基本的东西:

    如果我想在不获取信息的情况下应用 SPARQL 是否正确? 推理?例如。哪些比萨饼含有洋葱? SPARQL 和推理算法有什么区别 喜欢佩莱? SPARQL 不能回答哪些查询,而可以 由佩莱回答?披萨本体的一些查询示例(类似问题)会有所帮助。 据我了解,将 Java 中的 SPARQL 与 Jena 一起使用,我 应该以 RDF/XML 格式保存我的本体。但是,要使用 Pellet 使用 Jena,我需要选择哪种格式? Pellet 使用 OWL2...

【问题讨论】:

【参考方案1】:

SPARQL 是一种查询语言,即一种用于制定问题的语言。另一方面,推理是过程从现有数据中获取新信息。这是两个不同的互补过程。

    要从您的本体中检索信息,您可以使用 SPARQL,是的。您可以在没有推理的情况下执行此操作,也可以与推理器结合使用。如果您有一个激活的推理器,则意味着您的查询可以更简单,并且在某些情况下,推理器可以导出根本无法通过只是一个查询来检索的信息。

    像 Pellet 这样的推理者并不真正回答查询,他们只是推理:他们找出可以从原始事实中得出哪些隐含信息,并且可以做一些事情,例如验证事情是否一致(即没有数据中的逻辑矛盾)。 Pellet 可以计算出,如果您拥有一辆属于 Car 类型的 Toyota,那么您就拥有了 Vehicle(因为 Car 是 Vehicle 的一种)。或者它可以计算出,如果您将披萨定义为具有“帕尔马干酪”成分,那么您将拥有“芝士”类型的披萨(因为它知道帕尔马干酪是一种芝士)。所以你使用像 Pellet 这样的推理器来推导这种隐含信息,然后使用像 SPARQL 这样的查询语言来实际询问:“好的,给我一个关于所有也有凤尾鱼的 Cheesy Pizza 的概述”。

    像 Jena 这样的 API 是将 RDF 视为抽象模型的工具包。保存文件的语法格式无关紧要,它几乎可以读取任何 RDF 语法。一旦您在 Jena 模型中读取它,您就可以在其上执行 Pellet 推理器 - 原始文件的语法无关紧要。有关如何执行此操作的详细信息可以在 Jena 文档中找到。

【讨论】:

感谢您的精彩回答。顺便说一句,本体概念之间相似性的计算与推理过程有关吗?例如。比萨 A 与比萨 B 有 30% 的相似度,因为这两种比萨都含有“帕尔马干酪”和“洋葱”成分。

以上是关于使用 Pellet 了解 SPARQL 和语义推理之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

java 处理rdf,sparql和语义Web的实用方法

GraphQL 和 SPARQL 有啥区别?

自然语言转为SPARQL查询

如何在 MarkLogic 中处理不区分大小写的 SPARQL 数据

使用本体从原始数据中生成语义完整信息

推理机和语义推理机有啥区别?