4

我一直在通过 Protege 查看和玩 OWL,我想知道我是否正确理解“工作流程”和它的想法(从头开始构建数据库:

  1. 使用 Protege 或同等工具为您的数据生成 OWL 本体
  2. 将此模式导出到 RDF
  3. 使用定义为三元组中某些元素的类以及目标数据
  4. 将您的三重存储导出到 RDF
  5. 使用 openRDF/sesame 或 Jena 加载定义的数据和本体
  6. 根据您的 OWL 本体验证您的 RDF 三元组以确保一切正常
  7. 使用 SPARQL 从 RDF 三元存储中获取数据
  8. 使用 OWL 推理器做某事(这里不太清楚)

我想了解其他人在做什么以及他们如何解决此类问题。

另外我有一个具体的问题:

似乎猫头鹰推理器仅用于确定本体的子类超类关系。但就数据而言,您如何在 SPARQL 中查询子类 - 超类关系。例如,如果我的三重商店定义 (pizzaID1 is-a marghareta) 并且我在 SPARQL 中查询素食披萨,我如何确保返回 PizzaID1。

我认为答案与生成“全图”有关,其中明确说明了每种关系。sparql 在查询三元组时是否会进行任何自动推理,或者是否需要生成这样一个完整的图?

4

1 回答 1

5

有许多可能的工作流程,但实际上不必那么复杂。

  1. 在某些编辑器中生成您的 OWL 本体
  2. 将本体导出为 RDF
  3. 将本体导入到 Triplestore
  4. 将数据导入三重存储
  5. 使用 SPARQL 查询数据

子/超类推理是推理器的用途,如果您使用带有内置推理器的存储,那么 SPARQL 将使用它的信息,所以如果您这样做:

SELECT ?pizza
WHERE {
  ?pizza a :VegitarianPizza .
}

您将取回属于 VegitarianPizza 类或其任何子类的所有比萨饼。

我猜 VegitarianPizza 类在您的本体中被定义为没有肉类成分的比萨饼?而不是手动将每个披萨分配到一个班级?否则真的不需要OWL,你可以只使用RDFS,这要简单得多。

于 2011-02-26T17:16:22.770 回答