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

Understanding the difference between SPARQL and semantic reasoning using Pellet

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

  1. 如果我想获取信息而不需要使用 SPARQL 是否正确? 推理?例如。哪些比萨含有洋葱?
  2. SPARQL和推理算法有什么区别 像球团? SPARQL 不能回答哪些查询,而可以 由佩莱回答?披萨 ontology 的一些查询示例(类似问题)会有所帮助。
  3. 据我所知,在 Jena 中使用 Java 中的 SPARQL,我 应该以 RDF/XML 格式保存我的 ontology。但是,要使用 Pellet 使用 Jena,我需要哪种格式 select?颗粒使用 OWL2...

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

  1. 要从您的 ontology 检索信息,您使用 SPARQL,是的。您可以在没有推理的情况下执行此操作,也可以结合推理器执行此操作。如果你有一个 reasoner 活动,这意味着你的查询可以更简单,并且在某些情况下,reasoner 可以导出根本无法通过 just 查询检索的信息。

  2. 像 Pellet 这样的推理者并不真正回答问题,他们只是推理:他们弄清楚可以从原始事实中得出哪些隐含信息,并且可以做一些事情,比如验证事物是否一致(即您的数据中没有逻辑矛盾)。 Pellet 可以计算出,如果您拥有一辆类型为 Car 的 Toyota,那么您就拥有了一辆 Vehicle(因为 Car 是 Vehicle 的一种)。或者它可以计算出,如果您将比萨定义为具有 "Parmesan" 成分,则您将得到类型为 "Cheesy" 的比萨(因为它知道 Parmesan 是一种奶酪)。所以你使用像 Pellet 这样的推理机来推导这种隐式信息,然后你使用像 SPARQL 这样的查询语言来实际询问:"Ok, give me an overview of all Cheesy pizzas that also have anchovies"。

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