是的,这很有可能,这就是SPARQL 1.1 Federated Query W3C 推荐的内容。在 SPARQL 查询中,您使用SERVICE
关键字来指定要查询的不同 SPARQL 端点。链接推荐的一个例子是
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name
FROM <http://example.org/myfoaf.rdf>
WHERE
{
<http://example.org/myfoaf/I> foaf:knows ?person .
SERVICE <http://people.example.org/sparql> {
?person foaf:name ?name . }
}
那里的service
关键字说?person foaf:name ?name
应该从 检索 三元组<http://people.example.org/sparql>
。在您的情况下,您最终可能会得到以下结果:
PREFIX ex: <http://example.org/>
SELECT ?person ?age ?weight ?resume WHERE {
values ?person { ex:Bill ex:John }
SERVICE <http://jobs.example.org/sparql> { ?person ex:resume ?resume }
SERVICE <http://age.example.org/sparql> { ?person ex:age ?age }
SERVICE <http://weight.example.org/sparql> { ?person ex:weight ?weight }
}
不过,您必须在某处运行此查询。如果您在本地运行它,那么所有三个三元组都可以指定为service
s,但如果您直接针对其中一个运行查询,那么您可以只将另外两个指定为service
s。当然,这一切都取决于拥有一些支持联合查询的 SPARQL 引擎。我希望现在大多数人都这样做,但我只有 Jena 的经验(它确实支持联合查询)。