我正在尝试使用VirtuosoOS 6.1的SPARQL 1.1属性路径,但有些问题。我使用下一个图表:
@prefix foo: <foo/> .
@prefix bar: <bar/> .
@prefix type: <type/> .
bar:a1 type:read foo:b1 .
bar:a1 type:write foo:b2 .
bar:a1 type:write foo:b3 .
bar:a2 type:read foo:b4 .
bar:a2 type:write foo:b5 .
bar:a3 type:write foo:b6 .
foo:b2 type:link foo:b4 .
foo:b4 type:link foo:b6 .
我想找到从x开始的所有“链接”“foo”,其中x是bar:a1 ---(type:write) - &gt; X。显然答案是foo:b4和foo:b6。
所以,我使用这个查询
prefix bar: <bar/>
prefix type: <type/>
select ?y where {
bar:a1 type:write ?x .
?x type:link+ ?y
}
但是Virtuoso说
Virtuoso 37000 Error SP030: SPARQL compiler, line 8: syntax error at '?y' before '}'
我的查询有什么问题?也许Virtuoso不支持此功能?
答案 0 :(得分:0)
您可以使用query validator at sparql.org检查您的查询是否是合法语法。您的查询格式正确,因此这是Virtuoso支持的问题。根据{{3}},您可以通过早期版本中的扩展获得SPARQL 1.1支持,而6.2及更高版本支持SPARQL 1.1而无需扩展。根据官方Does Virtuoso versions <=6.0 support SPARQL 1.1?页面,版本6.1.7和7.0.0应该支持属性路径。