【问题标题】:Federated SPARQL Query on a subgraph of a SPARQL endpointSPARQL 端点的子图上的联合 SPARQL 查询
【发布时间】:2017-10-30 16:03:31
【问题描述】:

我想问一下,如何在 SPARQL 端点(不是整个远程 SPARQL 端点)的子图上执行联合 SPARQL 查询。

我在 Virtuoso v7 中获取了我的数据,而 SPARQL 端点是“http://localhost:8890/sparql”,我想对该端点的子图“http://localhost:8890/TC”进行远程查询,我尝试了

SELECT  *
WHERE
   { SERVICE <http://localhost:8890/sparql>
       { SELECT  ?subject ?predicate ?object
         FROM <http://localhost:8890/TC>
         WHERE
           { ?subject  ?predicate  ?object }
       }
   } LIMIT 50

我得到了“FROM”没有正确使用的错误,所以我有两个问题:

1) 我可以对 SPARQL 端点的子图进行远程查询吗?

2) 我可以为 Virtuoso v7 中的每个图形设置一个 SPARQL 端点吗?

非常感谢您的帮助。

【问题讨论】:

  • 1.) 不,你不能 - 请参阅 grammar
  • 添加 ?default-graph-uri=... 其中... 是 SERVICE 调用的 % 编码 URI。试试 DBedpia 的 UI 看看它的实际效果。

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


【解决方案1】:

你可以用graph代替from。

在你的例子中:

SELECT  *
WHERE
{ 
  SERVICE <http://localhost:8890/sparql>
  { 
    SELECT  ?subject ?predicate ?object
    WHERE
     { graph <http://localhost:8890/TC> { ?subject  ?predicate  ?object } }
  }
} LIMIT 50

在与 dbpedia (Virtuoso) 联合时,我在 Uniprot SPARQL 端点 (Virtuoso) 中使用以下查询测试了此语法:

SELECT  *
WHERE
   { SERVICE <http://dbpedia.org/sparql>
       {select distinct ?activity where { graph <http://dbpedia.org> {?activity a <http://www.ontologydesignpatterns.org/ont/d0.owl#Activity>} } LIMIT 10
       }
   } LIMIT 50

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多