Virtuoso 37000 错误 SP030

Virtuoso 37000 Error SP030

为什么显示这个错误,我在 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 行:在 'http:'

之前的“<”处的 PREFIX 声明中缺失

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

您向我们展示的查询可能与您实际 运行ning 的查询不同。首先,错误消息显示 "line 1" 这一事实让我想知道您是否真的将查询 运行 全部放在了一行中。这很容易出现拼写错误问题。

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

Line 7, column 18: Unresolved prefixed name: 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: 而不是 道具:。我还使用 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