SPARQL属性路径查询

时间:2014-02-17 11:50:25

标签: rdf sparql virtuoso

我正在尝试使用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不支持此功能?

1 个答案:

答案 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应该支持属性路径。