SPARQL选择变量前缀"?"和" $"

时间:2015-10-12 22:50:27

标签: sparql

根据规范,使用"?"完全没有区别。和" $"变量前缀字符,即使混合和匹配。例如,这是完全合法的:

SELECT  $title
WHERE   { <book1>  dc:title  ?title }

SPARQL docs甚至可以添加:

  

使用&#34;?&#34;标记查询变量。或&#34; $&#34 ;; &#34;?&#34;要么   &#34; $&#34;不是变量名称的一部分。在查询中,$ abc和?abc   识别相同的变量

有人知道为什么他们创建了两种冗余的方法来为变量添加前缀吗?我甚至不知道&#34; $&#34;直到今天同时略读语法的生产规则。使用&#34;?&#34;现在很常见,似乎&#34; $&#34;只是一个角色的词汇浪费。

1 个答案:

答案 0 :(得分:5)

SPARQL的原始草稿始于使用&#39;?&#39; (哪个IIRC取自SPARQL的前身语言之一,RDQL)。使用&#39; $&#39;的一个原因当时,W3C SPARQL工作组预见到使用现有的ODBC / SQL工具来处理SPARQL查询。因为&#39;?&#39;在SQL中是一个具有独特保留含义的字符,应该允许使用替代或同义词来更好地通过ODBC连接进行SPARQL查询。有关详细信息,请参阅this mailing list discussion

至于为什么工作组标准化允许两者(而不是仅仅取代&#39;?&#39;彻底):投了一票,几位成员反对采取出去&#39;?&#39;完全(大概是因为不是每个人都相信ODBC论证),所以两者都是妥协。