1

我正在使用 sparql 和 dbpedia 开发一个项目。我目前遇到带有斜线的 textuel 属性的问题。这是一个带有“discharge”属性的工作查询,它​​表示一条河流的每次水量:

PREFIX dbp: <http://dbpedia.org/property/> 
SELECT ?discharge 
WHERE
{
   <http://dbpedia.org/resource/Nile> dbp:discharge ?discharge .
   FILTER(ISLITERAL(?discharge))
} 
LIMIT 200

这个请求工作正常。仍然如果使用一个名为“discharge_m3/s”的类似属性,它不再工作了,我得到了这个错误,它增加了属性名称上的斜线:

Virtuoso 37000 错误 SP030:SPARQL 编译器,第 3 行:在 's' 之前的 '/' 处出现语法错误

有什么想法可以通过这个吗?

4

2 回答 2

3

您的意思是您正在尝试以前缀名称形式使用该属性,即dbp:discharge_m3/s

如果是这种情况,则不能这样做,因为根据 SPARQL 语法,这不是有效的前缀名称,因此会出现编译器错误。

您必须包含完整的 URI 而不是前缀名称形式,例如

<http://dbpedia.org/property/discharge_m3/s>

于 2012-10-07T05:53:04.817 回答
3

在兼容的 SPARQL 1.1 系统中,您可以反斜杠转义斜杠:dbp:discharge_m3\/s. 我不确定 Virtuoso 是否支持该语法。与此同时,@RobV 的解决方案将起作用。

于 2012-10-07T18:55:32.007 回答