1

我的问题是关于超类继承。我的理解是,如果我有属于 B 类的实例,那么作为 B 类的母类的 A 类也将具有这些实例。例如:假设我有一个名为 Car 的超类,以及两个子类 Sedan 和 SUV。Sedan 和 SUV 类的实例也是 Car 类的实例,对吗?如果是这种情况,那么当我说给我类 Car 的所有实例时,我看不到我的 sparql 查询的任何返回。我在这里错过了什么吗?

我正在使用 Topbraid 编辑器。

4

2 回答 2

3

实际上这是超类/子类的定义——子类的所有实例都是超类的实例。

不知道为什么 sparql 查询不起作用。不过,我认为,只有在引擎进行推理时,它才会起作用。

于 2015-02-03T16:19:41.440 回答
0

如果您想要 SPARQL 查询的子类蕴涵而不需要运行推理引擎,您可以使用标准 SPARQL 属性路径,特别是传递运算符:

SELECT *
WHERE {
   ?cls rdfs:subClassOf* :ClassA .
   ?inst a ?cls .
}

第一个三元组模式将 :ClassA 的所有子类都下到根。第二个三元组模式获取所有这些类的实例,有效地为您提供与推理器执行的相同的包含操作。

于 2016-03-17T16:27:52.337 回答