SPARQL带增量变量的空节点优化

SPARQL带增量变量的空节点优化,sparql,rdf,turtle-rdf,blank-nodes,Sparql,Rdf,Turtle Rdf,Blank Nodes,我试图使用标识符的增量变量在图形上执行空节点skolemization,但是,urn:count对象没有被更新 到目前为止,我有以下代码 PREFIX : <http://example.com/> PREFIX owl: <http://www.w3.org/2002/07/owl#> #################### # Create Counter Graph # #################### INSERT DATA { gr

我试图使用标识符的增量变量在图形上执行空节点skolemization,但是,urn:count对象没有被更新

到目前为止,我有以下代码

PREFIX :    <http://example.com/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>


####################
# Create Counter Graph #
####################

INSERT DATA {
    graph <urn:counters> {<urn:Example> <urn:count> 1 }
}
;


####################
# Rewrite objects #
####################

DELETE {
    #remove the old value of the counter
    graph <urn:counters> {<urn:Example> <urn:count> ?old}
  ?s ?p ?bnode .
}
INSERT {
    #update the new value of the counter
    graph <urn:counters> {<urn:Example> <urn:count> ?new}
  
  ?s ?p ?iri .
  GRAPH :aliases {
    ?bnode owl:sameAs ?iri .
  }
}
WHERE {
  {
    SELECT ?bnode ?iri ?new ?old
    WHERE {

      {        
        SELECT DISTINCT ?bnode
        WHERE {
          [] ?p ?bnode .
          FILTER isBlank(?bnode)
        }
      } 
                # retrieve the counter
    graph <urn:counters> {<urn:Example> <urn:count> ?old}
    
    
    # compute the new value
    bind(?old+1 as ?new)  
    
    
    #construct the IRI
    bind(IRI(concat("http://example.org/item/", str(?old))) as ?iri) 
    }
  }
    ?s ?p ?bnode .
}
;
前缀:
前缀owl:
####################
#创建计数器图#
####################
插入数据{
图{1}
}
;
####################
#重写对象#
####################
删除{
#删除计数器的旧值
图{?old}
?s?p?B节点。
}
插入{
#更新计数器的新值
图{?新}
s?p?iri。
图形:别名{
?B节点猫头鹰:sameAs?iri。
}
}
在哪里{
{
选择?bnode?iri?新建?旧
在哪里{
{        
选择不同的B节点
在哪里{
[]?p?bnode。
过滤器为空白(?bnode)
}
} 
#取回柜台
图{?old}
#计算新值
绑定(?旧+1为新)
#构建IRI
绑定(IRI(concat)(“http://example.org/item/,str(?old))as?iri)
}
}
?s?p?B节点。
}
;
它将生成以下输出

<#TripleMap1>
        rr:logicalTable        <http://example.org/item/1> ;
        rr:predicateObjectMap  <http://example.org/item/1> ;
        rr:subjectMap          <http://example.org/item/1> .

rr:逻辑可调;
rr:谓词对象映射;
rr:主题图。
然而,我希望输出如下

<#TripleMap1>
        rr:logicalTable        <http://example.org/item/1> ;
        rr:predicateObjectMap  <http://example.org/item/2> ;
        rr:subjectMap          <http://example.org/item/3> .
@prefix rr:    <http://www.w3.org/ns/r2rml#> .
<#TripleMap1>
        rr:logicalTable        [] ;
        rr:predicateObjectMap  [];
        rr:subjectMap []; 

rr:逻辑可调;
rr:谓词对象映射;
rr:主题图。
输入图如下所示

<#TripleMap1>
        rr:logicalTable        <http://example.org/item/1> ;
        rr:predicateObjectMap  <http://example.org/item/2> ;
        rr:subjectMap          <http://example.org/item/3> .
@prefix rr:    <http://www.w3.org/ns/r2rml#> .
<#TripleMap1>
        rr:logicalTable        [] ;
        rr:predicateObjectMap  [];
        rr:subjectMap []; 
@前缀rr:。
rr:可逻辑[];
rr:谓词对象映射[];
rr:subjectMap[];
任何帮助都将不胜感激。

哪个“柜台”?SPARQL不是一种编程语言,计算不会迭代进行
1
三元组的值,我想在每个插入/删除操作上更新该值,如问题中所述。谢谢