我的问题是关于超类继承的。我的理解是,如果我有属于 B 类的实例,那么作为 B 类母类的 A 类也会有这些实例。例如:假设我有一个名为 Car 的超类,以及两个子类 Sedan 和 SUV。轿车和SUV类的实例也是汽车类的实例,对吗?如果是这种情况,那么当我说给我类 Car 的所有实例时,我看不到我的 sparql 查询的任何返回。我在这里错过了什么吗?
我正在使用Topbraid编辑器。
这是超类/子类的定义,---子类的所有实例都是超类的实例。
不知道为什么 sparql 查询不起作用。不过,我认为,只有当引擎在推理时,它才会起作用。
如果您希望 SPARQL 查询的子类包含,而无需运行推理引擎,则可以使用标准 SPARQL 属性路径,特别是传递运算符:
SELECT *
WHERE {
?cls rdfs:subClassOf* :ClassA .
?inst a ?cls .
}
第一个三重模式将 :ClassA 的所有子类都归根。 第二个三重模式获取所有这些类的实例,有效地为您提供与推理器执行的相同的包含操作。