我现在相信的是真实的:
问题:
是否有可能运行跨多个异构RDF三元组的查询?
示例:
发布于 2013-10-31 14:28:18
是的,这是很有可能的,这就是SPARQL 1.1联邦查询 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
关键字说,应该从<http://people.example.org/sparql>
中检索三元?person foaf:name ?name
。在您的例子中,您可能会得到如下的结果:
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 }
}
不过,您必须在某个地方运行这个查询。如果您在本地运行它,那么所有三个triplestores都可以指定为service
s,但是如果您直接针对其中一个运行查询,那么其他两个就可以作为service
运行。当然,这将取决于是否有一些支持联邦查询的SPARQL引擎。现在,我希望大多数人都这么做,但我只有使用Jena的经验(Jena确实支持联合查询)。
https://stackoverflow.com/questions/19708858
复制相似问题