假设我要查找通过属性路径与对象连接的所有主题。连接可以表示为:
Subject - prop 1 -> A - prop 2 -> B - prop 3 -> Object
这可以通过非常简单的SPARQL查询来实现:
SELECT ?s WHERE {
?s prop1/prop2/prop3 ?o .
VALUES ?o { <uri1> ... <urin> }
}
但是我也想包含使用A和/或B子类的路径:
Subject - prop 1 -> subclassOfA - prop 2 -> subclassOfB - prop 3 -> Object
为此,我在路径中添加了中间的“ sublassOf”属性:
SELECT ?s WHERE {
?s prop1/<subclassOf>*/prop2/<subclassOf>*/prop3 ?o .
VALUES ?o { <uri1> ... <urin> }
}
这对我在Sesame 2.7.2中的数据集非常有效,但是在迁移到rdf4j 2.5.2之后,此查询只是挂起。问题是这是查询这种方法的正确方法还是效率更高?在新版本中造成如此大幅度性能下降的原因是什么?