我目前认为是真的:
问题:
是否可以运行跨多个异构RDF三重存储的查询?
示例:
答案 0 :(得分:3)
是的,这很有可能,这就是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的经验(它确实支持联合查询)。