SPARQL查询未返回深度
我有以下SPARQL查询:SPARQL查询未返回深度,sparql,owl,jena,ontology,rdflib,Sparql,Owl,Jena,Ontology,Rdflib,我有以下SPARQL查询: SELECT ?depthClass (count(?mid)-1 as ?depth) WHERE { { SELECT ?root WHERE { ?root a owl:Class FILTER NOT EXISTS { ?root rdfs:subClassOf ?superroot
SELECT ?depthClass (count(?mid)-1 as ?depth)
WHERE {
{
SELECT ?root WHERE {
?root a owl:Class
FILTER NOT EXISTS {
?root rdfs:subClassOf ?superroot
filter ( ?root != ?superroot )
}
}
}
?depthClass rdfs:subClassOf* ?mid .
?mid rdfs:subClassOf* ?root .
}
group by ?depthClass
order by ?depth
它应该返回类和给定类的深度
depthClass
。但是,它不会返回任何内容。我在查询中没有看到任何错误。调试后,我注意到,由于我使用的是owlready2 rdflib实现,它可能不支持?root a owl:Class
语法,在将其更改为?root rdf:type owl:Class
后,它开始工作了 考虑到你没有显示数据。。。我猜,您的错误是忘记了每个类都是owl:Thing
的子类。尝试filter(?root!=?superroot&?superroot!=owl:Thing)
-您还应该只使用部分查询来调试查询。比如SELECT?root WHERE{?root a owl:Class}
等等,如果同一对类之间有多条路径,那么计算深度就不起作用了