我的SPARQL查询根本不起作用

时间:2017-07-03 14:19:59

标签: sparql dbpedia

我目前正在尝试运行我的查询,但我一直收到错误,在第0行,括号在'}'处不平衡

我已经多次检查了我的整个代码,但我似乎没有修复它。我目前正在使用dbpedia端点。

PREFIX  dbo:  <http://dbpedia.org/ontology/>
PREFIX  yago: <http://dbpedia.org/class/yago/>
PREFIX  dbp:  <http://dbpedia.org/property/>
PREFIX  dct:  <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?country ?government  ?population
WHERE{ ?country  dct:subject  <http://dbpedia.org/resource>/Category:Countries_in_Europe> ;
 rdfs:label ?country;         
dbo:government  ?government.
?government rdfs:label ?government.
?population rdfs:subClassOf* dbo:PopulatedPlace
rdf:type dbpedia-owl:Country;
rdfs:label ?country ; 
prop:populationEstimate ?population . 
FILTER (?population < 3000000) . 
FILTER ( lang(?country) AND (lang(?(government = 'en')
} 

应显示图表中的三行,首先以国家/地区为标题,第二行以国家/地区的政府类型作为标题,第三行应为总排名为3000000的人口。

非常感谢您提前帮助我!

1 个答案:

答案 0 :(得分:3)

此查询中有多个错误。

突然出现了几件事。

事情1 -

?government rdfs:label ?government.

你有几个类似的?subject ?predicate ?subject结构。

事情2 -

?population rdfs:subClassOf* dbo:PopulatedPlace
rdf:type dbpedia-owl:Country;

我认为在dbo:PopulatedPlace

之后你需要一个分号

事情3 -

FILTER ( lang(?country) AND (lang(?(government = 'en')

FILTER以多种方式破解语法。我想这会做你想要的 -

FILTER ( lang(?country)    = 'en') .
FILTER ( lang(?government) = 'en') .

东西4 -

<http://dbpedia.org/resource>/Category:Countries_in_Europe>

你在中间字符串中有一个额外的>

事情5 -

dbpedia-owl:Country

我认为应该是dbo:Country

事情6 -

prop:populationEstimate

我认为应该是dbp:populationEstimate

还有很多问题......我不确定你是不是真的在尝试。