SPARQL带增量变量的空节点优化
我试图使用标识符的增量变量在图形上执行空节点skolemization,但是,urn:count对象没有被更新 到目前为止,我有以下代码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
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
三元组的值,我想在每个插入/删除操作上更新该值,如问题中所述。谢谢