我的问题是类似于被要求在此线程是否有可能合并的2 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' .
}
};
我知道上面的查询是错误的。 我想知道,如果类似的事情在SPARQL是可能的。
是的,这是可能的。 事实上,你的例子是几乎完全没事,只是失去每次插入周围的括号:
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' .
}
是一个有效的SPARQL更新序列。
我想有多个INSERT语句的WHERE查询中,但对于不同的主题。 我会想测试一个特定的值(“testValueN”),如果目前想插入一个新的三联供这个问题。
为此,您可以用值来指定你想要的属性oldValue / NEWVALUE对,而且只需要一个插件 。 它还范围更加完善,重视对新的,因为你只需要一行添加到查询。
PREFIX Sensor: <http://example.com/Equipment.owl#>
INSERT {
?subject Sensor:test2 ?newValue
}
WHERE {
values (?oldValue ?newValue) {
('testValue1' 'newValue1')
('testValue2' 'newValue2')
}
?subject Sensor:test1 ?oldValue
}