gpt4 book ai didi

entity - SPARQL:获取某个类的子类的所有实体

转载 作者:行者123 更新时间:2023-12-04 01:24:03 27 4
gpt4 key购买 nike

我必须在SPARQL中获得类C的所有实例和C的子类(直接或间接)。

我可以这样获得C的所有直接子类:

SELECT ?entity
WHERE {
?subclass rdfs:subClassOf :C .
?entity rdf:type ?subclass .
}


但是我无法获得间接子类的实例,也无法获得C的任何实例。

据我所知(我已经预先计算了它们)所有子类(C的直接和间接),并且我可以构建一个动态查询,是否可以像下面这样构建一个查询?

SELECT ?entity
WHERE {
?entity rdf:type in <list>.
}


谢谢大家。

编辑:

我已经解决了,即使不是很优雅。

SELECT ?entity
WHERE {
{ ?entity rdf:type :C }
UNION { ?entity rdf:type :SubClass1 }
UNION { ?entity rdf:type :SubClass2 }
UNION { ?entity rdf:type :SubClass3 }
}

最佳答案

更好的解决方案是在SPARQL 1.1中使用属性路径表达式

它将被重写为:

SELECT ?entity
WHERE {
?entity rdf:type ?type.
?type rdfs:subClassOf* :C.
}

关于entity - SPARQL:获取某个类的子类的所有实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9209577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com