[英]How to reference different repositories in a SPARQL query (federated)?
我想知道存储库中有哪些三元组,但其他存储库中未包含三元组。
但是,为此,我需要在联合查询中引用两个存储库。
我正在使用Allegrograph。
FactForge上的示例 (即,使用SPARQL 1.1联合查询,而不是Allegrograph的联合存储):
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
CONSTRUCT { ?s ?p ?o }
{
VALUES (?s) {(dbr:Yekaterinburg)}
?s ?p ?o.
MINUS
{
SERVICE <http://dbpedia.org/sparql>
{
VALUES (?s) {(dbr:Yekaterinburg)}
?s ?p ?o
}
}
}
显然,不能以这种方式从DBpedia Live中减去DBpedia,至少一个结果集应该相对较小。 似乎Allegrograph的联合商店无法完成这种减法任务。 可能您应该将三元组划分为命名图,而不是单独的存储。
使用AllegroGraph,有两种方法可以实现:
(1)AllegroGraph允许您将多个本地和/或远程三重存储联盟到一个虚拟存储中,然后可以作为单个三重存储查询。
(2)您可以使用使用SERVICE
关键字的SPARQL 1.1联合查询。 这是《 学习SPARQL》一书中的一个示例:
PREFIX gp: <http://wifo5-04.informatik.uni-mannheim.de/gutendata/resource/people/>
SELECT ?dbpProperty ?dbpValue ?gutenProperty ?gutenValue
WHERE
{
SERVICE <http://DBpedia.org/sparql>
{
<http://dbpedia.org/resource/Joseph_Hocking> ?dbpProperty ?dbpValue .
}
SERVICE <http://wifo5-04.informatik.uni-mannheim.de/gutendata/sparql>
{
gp:Hocking_Joseph ?gutenProperty ?gutenValue .
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.