首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何遍历引用虚拟图的SPARQL查询?

如何遍历引用虚拟图的SPARQL查询?
EN

Stack Overflow用户
提问于 2017-02-24 17:24:51
回答 1查看 662关注 0票数 4

我正在开发一个Virtuoso存储过程。我想对图的SPARQL查询结果执行一次循环。当查询包含对虚拟图(物理上不在三元组中的图,这是R2RML映射操作的结果)的引用时,问题就出现了。在我的所有尝试中,我没有得到任何错误,但也得到了一个空的结果集。我尝试了以下几种方法

代码语言:javascript
复制
create procedure R2RML.DBA.try() returns integer
{
  for (sparql define input:storage ""
       select ?s ?p
       from <http://example.com/resource>
       where {
         ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?o .
       }  LIMIT 5 ) do
    {
      use_the_value("s");
    }
};

此外,还有以下内容

代码语言:javascript
复制
create procedure R2RML.DBA.try() returns integer
{
  declare srcgraph varchar;
  srcgraph := 'http://ec.example.com/resource';
  for (sparql define input:storage ""
        select ?s ?p
        where {
        GRAPH `iri(?:srcgraph)` 
          {
            ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?o .
          }
        }  LIMIT 5 ) do
    {
      use_the_value("s");
    }
};

在这两种情况下都不会执行迭代,尽管查询相同,但在SPARQL端点中执行时会返回一个结果。

如果我删除对该图的引用,则会执行迭代:

代码语言:javascript
复制
create procedure R2RML.DBA.try() returns integer
{
  for (sparql define input:storage ""
        select ?s ?p
        where {
          ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?o .
        }  LIMIT 5 ) do
    {
      use_the_value("s");
    }
};

有人知道我哪里搞错了吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-18 15:23:14

因为图是虚拟的,所以诀窍是在SPARQL语句的define指令中添加四元存储的名称。例如,如果使用Virtuoso四元地图存储,则define指令将变为以下内容。

代码语言:javascript
复制
sparql define input:storage "http://www.openlinksw.com/schemas/virtrdf#DefaultQuadStorage"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42434965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档