0

我想问一下,如何对 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 端点吗?

非常感谢你的帮助。

4

1 回答 1

0

您可以使用图形而不是 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
于 2018-02-06T14:04:44.337 回答