本体 - 超类是否获取其子类的实例?

时间:2015-02-03 14:06:01

标签: superclass ontology topbraid-composer

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

我正在使用Topbraid编辑器。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

如果您希望SPARQL查询的子类蕴涵没有运行推理引擎的负担,您可以使用标准SPARQL属性路径,特别是传递运算符:

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

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