【问题标题】:How to reference different repositories in a SPARQL query (federated)?如何在 SPARQL 查询(联合)中引用不同的存储库?
【发布时间】:2018-03-01 18:38:32
【问题描述】:

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

但为此,我需要在联合查询中引用这两个存储库。

我正在使用 Allegrograph。

【问题讨论】:

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


    【解决方案1】:

    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 的联合商店无法完成这样的减法任务。可能您应该将三元组划分为命名图,而不是单独的存储。

    【讨论】:

      【解决方案2】:

      使用 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 .
        }
      } 
      

      【讨论】:

      • 是的,但是 OP 询问类似 MINUS { SERVICE &lt;... 的问题。
      • 嗯,我认为这是关于联邦问题的动机,而不是实际问题。我可能误解了这个问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      相关资源
      最近更新 更多