2017-07-03 79 views
-1

工作,我目前正在运行我的查询,但我不断收到错误,在0线括号不会在平衡“}”我SPARQL查询完全不

我检查了我的整个多个代码次,但我似乎没有得到修复。我目前正在使用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') 
} 

三排应该所示,首先与该国作为标题,第二个与国家作为一个标题和第三的governmenttypes应与人口从总300万下降一排

非常感谢您的帮助!

+0

您的整个查询已损坏。使用与主题相同的变量,然后作为标签的占位符将无法工作。例如。 '?country'变量。然后,人口三重模式的目标是什么(人口是一种文字价值)?那么为什么你会假设当时有三排?这不是SPARQL的工作原理。这组三重模式被用作交集,在技术上这是加入到常见变量中。你可以得到每个国家的一行,然后是价值,但不是每个国家的三行 – AKSW

+0

而你的FILTER坏了 – AKSW

+0

和Countries_in_Europe的URI。来吧,这真是奇怪的错误,你应该看到自己 – AKSW

回答

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

还有更多问题...我不确定你真的在努力。

+0

政府 - >政府类型 – AKSW

+0

人口 - >人口总数 – AKSW