在DBpedia SPARQL endpoint中,正在运行
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX : <http://dbpedia.org/resource/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
SELECT ?a (3+3 AS ?y)
WHERE
{
?a dc:description "English footballer" .
?a dbpedia2:placeOfBirth :Merseyside .
}
显示在默西塞德郡出生的所有English Footballers
,列y
只在每行[result link]上显示值6
;但是,same query上的SNORQL endpoint会显示错误:
Virtuoso 37000 Error SP030: SPARQL compiler, line 16: syntax error at '3'
before 'AS' SPARQL query: define sql:big-data-const 0 #output-
format:application/sparql-results+json define input:default-graph-uri PREFIX
owl: PREFIX xsd: PREFIX rdfs: PREFIX rdf: PREFIX foaf: PREFIX dc: PREFIX :
PREFIX dbpedia2: PREFIX dbpedia: PREFIX skos: PREFIX pos: PREFIX dbo: SELECT
?a (3 3 AS ?y) WHERE { ?a dc:description "English footballer" . ?a
dbpedia2:placeOfBirth :Merseyside . }
更奇怪的是,使用任何其他3个算术运算符 在SNORQL端点中工作(例如with division)
A previous question暗示SPARQL和SNORQL端点应该返回相同的结果,那么这里发生了什么?!
答案 0 :(得分:4)
snorql代码使用'escape'javascript函数,该函数不是正确的函数来编码需要作为参数参数嵌入到官方/ sparql端点的文本片段。
这导致+字符作为文字传输,并由/ sparql端点解码为空格字符,改变了查询的语法。
我们修复了dbpedia.org上的snorql代码,使用了encodeURIComponent,如下所示:
url = url +'&amp; query ='+ encodeURIComponent(query_text);
答案 1 :(得分:1)
Kingsley Idehen在邮件列表上回复说:
snorql没有正确编码加,因此表达式变为: &#34; SELECT?a(3 3 AS?y)“这是错误的。
答案 2 :(得分:1)
关闭证明,通过&#34; Cool URI&#34;它与实际数据状态松散耦合。