为什么显示此错误,我在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:
答案 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')}
我喜欢使用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')
}