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

我有以下SPARQL查询:

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}
等等,如果同一对类之间有多条路径,那么计算深度就不起作用了