是否存在一种良好的SPARQL查询,如果两个给定节点连接在单个/多个SPARQL端点上,我们可以回答这个问题吗?
假设我想检查两个节点
<http://wiktionary.dbpedia.org/resource/dog>
Run Code Online (Sandbox Code Playgroud)
和
<http://dbpedia.org/resource/Dog>
Run Code Online (Sandbox Code Playgroud)
连接了.如果是的话,我会对这条路感兴趣.
通过猜测我已经知道它们是通过标签连接的,所以像这样的查询返回长度为3的路径:
SELECT * WHERE {
<http://wiktionary.dbpedia.org/resource/dog> ?p1 ?n1.
# SERVICE <http://dbpedia.org/sparql> {
<http://dbpedia.org/resource/Dog> ?p2 ?n1 .
# }
}
Run Code Online (Sandbox Code Playgroud)
现在如果我还没有想法并希望自动完成并且任意长度和方向怎么办?
我知道SPARQL 1.1的属性路径,但它们似乎只适用于已知属性(http://www.w3.org/TR/sparql11-query/#propertypaths):
变量不能用作路径本身的一部分,只能用作结尾.
此外,我想要允许任何路径,因此路径上的谓词可能会改变.
我当前(因为我觉得很荒谬)的方法是查询所有可能的长度k达到极限的路径n.
倾倒不是我的选择,因为它有数十亿的三元组...我想使用SPARQL!
sparql ×1