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