如何查询SPARQL中的所有直接子类? [英] How to query for all direct subclasses in SPARQL?
本文介绍了如何查询SPARQL中的所有直接子类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
A
、B
和C
作为通过传递性质isSubClassOf
相关的类。
所以A isSuclassOF B
和B isSubClassOf C
。因此,根据推断,我们有A isSubClassOf C
。
我的问题是:如何编写一个SPARQL查询来只为每个类返回其直接唯一的子类编号。例如
A 0
B 1
C 1
推荐答案
在标准SPARQL语言中,您可以通过查询其中不存在其他子类的子类来实现这一点,如下所示:
SELECT ?directSub ?super
WHERE { ?directSub rdfs:subClassOf ?super .
FILTER NOT EXISTS { ?otherSub rdfs:subClassOf ?super.
?directSub rdfs:subClassOf ?otherSub .
FILTER (?otherSub != ?directSub)
}
}
如果要计算子类的数量,则需要使用COUNT
和GROUP BY
运算符调整上面的查询。
Query
对象上的布尔属性设置为false
来在查询期间禁用推理。它还提供了一个附加的推理器,该推理器可以配置在数据存储之上,并允许您使用"虚拟"属性sesame:directSubClassOf
(以及sesame:directType
和sesame:directSubPropertyOf
)进行查询。
其他SPARQL引擎也有类似的机制。
这篇关于如何查询SPARQL中的所有直接子类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文