SPARQL选择变量前缀"&引用;及$&引用;

SPARQL选择变量前缀"&引用;及$&引用;,sparql,Sparql,根据规范,使用“?”和“$”变量前缀字符之间绝对没有区别,即使在混合和匹配时也是如此。例如,这是完全合法的: SELECT $title WHERE { <book1> dc:title ?title } 选择$title 其中{dc:title?title} 政府甚至还需要补充: 使用“?”或“$”标记查询变量;“?”或 “$”不是变量名的一部分。在查询中,$abc和?abc 识别相同的变量 有人知道为什么他们创建了两种冗余的方法来给变量加前缀吗?直到今天我在浏览语法

根据规范,使用“?”和“$”变量前缀字符之间绝对没有区别,即使在混合和匹配时也是如此。例如,这是完全合法的:

SELECT  $title
WHERE   { <book1>  dc:title  ?title }
选择$title
其中{dc:title?title}
政府甚至还需要补充:

使用“?”或“$”标记查询变量;“?”或 “$”不是变量名的一部分。在查询中,$abc和?abc 识别相同的变量


有人知道为什么他们创建了两种冗余的方法来给变量加前缀吗?直到今天我在浏览语法的产生式规则时才知道“$”这个词。现在使用“?”非常普遍,似乎“$”只是一个字符的词汇浪费。

SPARQL的原始草稿是从使用“?”(IIRC取自SPARQL的前身语言之一RDQL)开始的。引入使用“$”的一个原因是,当时,W3C SPARQL工作组预计将使用现有的ODBC/SQL工具来处理SPARQL查询。由于“?”在SQL中是一个具有明确保留含义的字符,因此认为应该允许使用替代或同义词,以便更好地通过ODBC连接进行SPARQL查询。有关详细信息,请参阅


至于工作组为何将两者都允许(而不仅仅是直接取代“?”的使用)标准化:进行了表决,几位成员反对完全删除“?”(可能是因为并非所有人都相信ODBC的论点),因此这两种做法都被保留为折衷方案

我知道它们本身并不是特定的编程问题,但我真的很喜欢历史视角的答案,尤其是当原始资料仍然可用时。很高兴有人提醒我们,大多数系统不是白手起家或在真空中设计的,而是在现有技术的基础上发展起来的。