根据规范,使用"?"完全没有区别。和" $"变量前缀字符,即使混合和匹配。例如,这是完全合法的:
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;只是一个角色的词汇浪费。
答案 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论证),所以两者都是妥协。