在“values”块中包含大量值的SPARQL查询
我有一个节点列表,我想检索包含这些节点之间所有关系的三元组 这就是我到目前为止所做的:在“values”块中包含大量值的SPARQL查询,sparql,rdf,subgraph,Sparql,Rdf,Subgraph,我有一个节点列表,我想检索包含这些节点之间所有关系的三元组 这就是我到目前为止所做的: PREFIX myPrefix: <http://example.org/myPrefix/> SELECT ?a ?relation ?b WHERE{ values ?a { myPrefix:id_00083184 myPrefix:id_00083187 myPrefix:id_00083189 myPrefix:id_00083182 m
PREFIX myPrefix: <http://example.org/myPrefix/>
SELECT ?a ?relation ?b
WHERE{
values ?a { myPrefix:id_00083184 myPrefix:id_00083187
myPrefix:id_00083189 myPrefix:id_00083182
myPrefix:id_09463313 myPrefix:id_00000790
myPrefix:id_00073965 myPrefix:id_00073966
myPrefix:id_00016990 myPrefix:id_08380001
myPrefix:id_00019131 myPrefix:id_03739215
myPrefix:id_00019129 myPrefix:id_00034482
myPrefix:id_00098617
}
values ?b { myPrefix:id_00083184 myPrefix:id_00083187
myPrefix:id_00083189 myPrefix:id_00083182
myPrefix:id_09463313 myPrefix:id_00000790
myPrefix:id_00073965 myPrefix:id_00073966
myPrefix:id_00016990 myPrefix:id_08380001
myPrefix:id_00019131 myPrefix:id_03739215
myPrefix:id_00019129 myPrefix:id_00034482
myPrefix:id_00098617
}
?a ?relation ?b .
}
有了这个,我得到了我想要的,也就是说,我的外部列表中节点之间的所有关系;使用值并重复a和b的节点。但问题是,我的节点列表可能非常大;有时它可以有多达1000个节点,这只是一个小例子;而且该查询执行时间太长
有没有更好的方法来满足我的需求?这是我发现的唯一方法,但我对SPARQL不是很流利,所以,有没有正确的方法
PS:我从外部从另一个数据库的查询中获取节点列表,并使用Java构造附加到列表上每个节点的查询
这对我来说听起来很像穴居人,但正如我所说的,我开始使用SPARQL
非常感谢。您现在所做的可能是最常用的方法
单独的API(例如Jena)可能支持其他方法来指定一组初始绑定,这些初始绑定在功能上相当于一个值块,但可以使实际查询更短。例如,请注意。的答案还有一个Jena中的初始绑定示例。您现在所做的可能是最常用的方法
单独的API(例如Jena)可能支持其他方法来指定一组初始绑定,这些初始绑定在功能上相当于一个值块,但可以使实际查询更短。例如,请注意。的答案还有一个Jena中的初始绑定示例。我确实认为可以提高查询的性能,因为这是一个非常简单的查询。如果您有n个节点,那么简单解决方案的复杂性显然取决于²。您认为我可以如何提高查询的性能?我的意思是,这是我的问题@AKSWEhm抱歉,我的意思是我不这么认为。当然,如果关系是对称的,您可以尝试避免同时检查a r b和b r a,但这确实是您在构造查询时的任务。我确实认为您可以提高查询的性能,因为这是一个非常简单的查询。如果您有n个节点,那么简单解决方案的复杂性显然取决于²。您认为我可以如何提高查询的性能?我的意思是,这是我的问题@AKSWEhm抱歉,我的意思是我不这么认为。当然,如果关系是对称的,您可以尝试避免同时检查a r b和b r a,但这确实是您在构造查询期间的任务。