如何在SPARQL查询中引用不同的存储库(联合)?

时间:2018-03-01 18:38:32

标签: sparql semantic-web triplestore allegrograph federated-queries

我想知道存储库中的三元组是什么,但未包含在其他存储库中。

但是为了做到这一点,我需要在联合查询中引用这两个存储库。

我正在使用Allegrograph。

2 个答案:

答案 0 :(得分:2)

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的联合商店似乎无法帮助完成这种减法任务。可能你应该将你的三元组划分为命名图形,而不是分开存储。

答案 1 :(得分:1)

使用AllegroGraph,有两种方法可以实现:

(1)AllegroGraph允许您将federate个多个本地和/或远程三重存储放入一个虚拟商店,然后可以将其作为单个三重存储进行查询。

(2)您可以使用使用SERVICE关键字的SPARQL 1.1联合查询。以下是Learning SPARQL book

中的示例
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 .
  }
}