我想将新的uri(作为字符串)添加到使用sparql Virtuoso 7.1已经拥有一些uris的变量中。这是我的sparql。
SELECT ?newURIs WHERE {
?newURIs rdf:type res:myClass .
BIND(URI("http://www.mypage.com/property#myProperty") AS ?newURIs) .
}
当我得到它时,它应该添加到" ..."中的uri列表,但它没有。 响应是" Virtuoso 37000错误SP031:SPARQL编译器:内部错误:内置函数未实现"
我试过了:
BIND(IRI("...") AS ?newURIs)
然后我从第一行(来自myClass的项目)获得结果但是我的新uri不在那里...... 同样的情况:
BIND("..." AS ?newURIs)
和:
BIND(<...> AS ?newURIs)
我做错了什么?如何在字符串中添加新的URI到变量中的uris列表?
日Thnx
答案 0 :(得分:3)
首先,您的查询在SPARQL中实际上是非法的,您不能使用BIND
分配给已经在范围内的变量,因此您的查询应该作为非法SPARQL被拒绝。这可能是Virtuoso正在做的事情虽然你得到的错误消息显然是无益的
您实际上要做的事情有点不清楚,从您的描述中可以看出,您想要使用?newURIs
选择可能的值,在这种情况下,VALUES
clause将是适当的方法,例如
SELECT *
WHERE
{
VALUES ?newURIs
{
<http://www.mypage.com/property#myProperty>
# Other values go here
}
?newURIs rdf:type res:myClass .
}
但是请注意,这只会找到三重模式的匹配项,其中?newURIs
的值具有VALUES
子句中给出的值之一,这可能实际上并不是您想要的值。