我正在开发一个 Virtuoso 存储过程。我想对 SPARQL 查询的结果执行循环到图表。当查询包含对虚拟图的引用(不在三元存储中的物理图,是 R2RML 映射操作的结果)时,就会出现问题。在我所有的尝试中,我都没有收到错误,但结果集也是空的。我尝试了以下
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");
}
};
还有以下
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 端点中执行相同的查询,但在这两种情况下都不会执行迭代,但会返回结果。
如果我删除对图的引用,则会执行迭代:
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");
}
};
有人知道我做错了什么吗?