Virtuoso 37000错误SP030

时间:2015-06-22 23:32:30

标签: sparql semantics semantic-web virtuoso

为什么显示此错误,我在sparql查询中看到的是正确的,我没有看到前缀中的任何错误。

PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
PREFIX type: <http://dbpedia.org/class/yago/> 
PREFIX prop: <http://dbpedia.org/property/>

SELECT ?country_name ?population 
WHERE { ?country rdf:type dbpedia-owl:Country;
rdfs:label ?country_name ; 
prop:populationEstimate ?population . 
FILTER (?population > 2334456) . 
FILTER ( lang(?country_name) = 'en')}

错误: Virtuoso 37000错误SP030:SPARQL编译器,第1行:在'&lt;'的PREFIX声明中丢失在'http:'之前

SPARQL查询: define sql:big-data-const 0 define input:default-graph-uri http://dbpedia.org PREFIX rdfs:

1 个答案:

答案 0 :(得分:1)

您向我们展示的查询可能与您实际运行的查询不同。首先,错误信息表示&#34;第1行&#34;让我想知道你是否真的让查询全部运行到一行。这可以很容易地解决拼写错误问题。

当我将您的查询放入sparql.org's query validator时,我会收到语法错误,因为没有为 rdf:定义前缀。这是一个错误:

  

第7行,第18列:未解析的前缀名称:rdf:type

也就是说,DBpedia端点的交互式Web界面包含一些预定义的命名空间前缀,如果您将问题中的查询粘贴到the web interface,它就可以正常工作:

PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
PREFIX type: <http://dbpedia.org/class/yago/> 
PREFIX prop: <http://dbpedia.org/property/>

SELECT ?country_name ?population 
WHERE { ?country rdf:type dbpedia-owl:Country;
rdfs:label ?country_name ; 
prop:populationEstimate ?population . 
FILTER (?population > 2334456) . 
FILTER ( lang(?country_name) = 'en')}

SPARQL results

我喜欢使用prefixes that DBpedia defines,因为它可以更轻松地复制和粘贴,因此我使用前缀 dbpprop:而不是 prop:。我还使用了 langMatches 而不是 lang(...)= ... ,因为它适用于语言的区域变体,而后者则不然。我最终得到了这个问题:

select ?country_name ?population where {
  ?country rdf:type dbpedia-owl:Country ;
           rdfs:label ?country_name ; 
           dbpprop:populationEstimate ?population . 
  filter (?population > 2334456) 
  filter langMatches(lang(?country_name),'en')
}

SPARQL results