在“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,但这确实是您在构造查询期间的任务。