我的问题类似于在这个线程上提出的问题是否可以将这两个SPARQL INSERT合并为一个?
我想在查询中有多个INSERT WHERE语句,但是对于不同的主题.我想测试一个特定的值("testValueN"),如果存在,则希望为该主题插入一个新的三元组.
一个例子是,
PREFIX Sensor: <http://example.com/Equipment.owl#>
{
INSERT {
?subject1 Sensor:test2 'newValue1' .
}
WHERE {
?subject1 Sensor:test1 'testValue1' .
}
};
{
INSERT {
?subject2 Sensor:test2 'newValue2' .
}
WHERE {
?subject2 Sensor:test1 'testValue2' .
}
};
Run Code Online (Sandbox Code Playgroud)
我知道上面的查询是错误的.我想知道SPARQL中是否有类似的东西.
我正在使用BIND()从4store中选择和插入三元组.
以下SELECT工作,
PREFIX Sensor: <http://cei.usc.edu/Equipment.owl#>
SELECT *
WHERE {
?subject100 Sensor:test1 "100"
BIND("1000" as ?x) .
} LIMIT 10
Run Code Online (Sandbox Code Playgroud)
但是当我尝试执行INSERT WHERE时,它会失败
PREFIX Sensor: <http://cei.usc.edu/Equipment.owl#>
INSERT {
?subject Sensor:test510 ?value .
}
WHERE {
{
?subject100 Sensor:test1 "100" .
BIND("200" as ?value)
}
UNION
{
?subject99 Sensor:test1 "99" .
BIND("300" as ?value)
}
}
Run Code Online (Sandbox Code Playgroud)
错误:BIND不能与操作0的第1行的SPARQL 1.0一起使用
我正在运行最新的4Store v1.1.4 2011年9月20日
我尝试了上面的INSERT WHERE与不同的SPARQL商店,它的工作原理.BIND是SPARQL 1.1中的一个新构造,所以我不确定它是否在4Store中受支持.