我有一个披萨本体,它定义了不同类型的比萨饼,成分和它们之间的关系。 我只是想了解几个基本的东西:
答案 0 :(得分:2)
SPARQL是一种查询语言,即用于制定问题的语言。另一方面,推理是进程从现有数据中获取新信息。这是两个不同的互补过程。
要从您的本体检索信息,请使用SPARQL,是的。您可以无需推理或与推理器结合使用。如果您有一个激活的推理器,则意味着您的查询可以更简单,并且在某些情况下,reasoners可以使用 查询来获取根本无法检索的信息。
像Pellet这样的Reasoners并不真正回答查询,他们只是理由:他们弄清楚可以从原始事实中得出什么隐含信息,并且可以做一些事情,例如验证事情是否一致(即没有数据中的逻辑矛盾)。 Pellet可以弄清楚,如果你拥有一辆Car类型的丰田汽车,你拥有一辆汽车(因为汽车是一种类型的汽车)。或者它可以弄清楚,如果你定义一个比萨饼有“Parmesan”成分,你就会得到一个“Cheesy”类型的披萨(因为它知道Parmesan是一种奶酪)。因此,您使用像Pellet这样的推理器来获取这种隐含信息,然后您使用像SPARQL这样的查询语言来实际问:“好的,请给我一个概述所有也有凤尾鱼的Cheesy比萨饼”。
像Jena这样的API是将RDF视为抽象模型的工具包。保存文件的语法格式无关紧要,几乎可以读取任何RDF语法。只要您在Jena模型中读取它就可以在其上执行Pellet推理器 - 原始文件所使用的语法无关紧要。有关如何执行此操作的详细信息,请参阅Jena文档。