如何在一个SPARQL查询中,在三个不同的SPARQL端点上进行三个独立的查询



有没有一种方法可以在一个SPARQL查询中对三个不同的SPARQL端点执行三个独立的查询?例如,我有三个SPARQL端点(即url1、url2和url3)和三个我想要进行的独立查询,即url1上的query1、url2上的query2以及url3上的query3。我是否可以在一个SPARQL查询中执行一次这三个查询?

我试过类似的模式

SELECT * WHERE {
SERVICE <url1> {query1} 
SERVICE <url2> {query2} 
SERVICE <url3> {query3} 
}

查询似乎试图连接三个查询的结果,因为这三个查询是独立的,所以最终结果为空。如果我一个端点接一个端点地查询三次,那么每个查询都会返回结果。

非常感谢你的帮助!

您可以使用UNION进行3个单独的调用:这与进行3个查询大致相同。

SELECT * WHERE {
{ SERVICE <url1> {query1} }
UNION
{ SERVICE <url2> {query2} }
UNION
{ SERVICE <url3> {query3} }
}

该应用程序可能需要知道哪些行来自哪个调用,因此标记结果可能很有用:

SELECT * WHERE {
{ SERVICE <url1> { query1 } BIND (<url1> AS ?serviceLabel) }
UNION
{ SERVICE <url2> { query2 } BIND (<url2> AS ?serviceLabel) }
UNION
{ SERVICE <url3> { query3 } BIND (<url2> AS ?serviceLabel) }
}

最新更新