dbpedia SPARQL查询以获取给定城市的特定值

时间:2012-03-28 09:44:44

标签: sparql dbpedia

我确信我想做的事情很简单,但我似乎无法正确查询。我在数据集中有记录,其中包含城市名称等值'纽约'及其相应的国家代码,例如'US'。我还可以访问完整的国家/地区名称和国家ISO代码。

我想通过使用where子句来获取这些城市的人口和抽象价值,例如:

Get population where name = "New York" and isoCountryCode = "US"

我在这方面寻求帮助无济于事。

到目前为止,我已经得到了@rohk对此查询的良好帮助,该查询并不能完全适用于所有位置:

SELECT DISTINCT ?city ?abstract ?pop
WHERE {
   ?city rdf:type schema:City ;
     rdfs:label ?label ;
     dbpedia-owl:abstract ?abstract ;
     dbpedia-owl:country ?country ;
     dbpedia-owl:populationTotal ?pop .
   ?country dbpprop:countryCode "USA"@en .
   FILTER ( lang(?abstract) = 'en' and regex(?label, "New York City"))
 }

上述作品适用于纽约,但是当我将其更改为:

SELECT DISTINCT ?city ?abstract ?pop
WHERE {
   ?city rdf:type schema:City ;
         rdfs:label ?label ;
         dbpedia-owl:abstract ?abstract ;
         dbpedia-owl:country ?country ;
         dbpedia-owl:populationTotal ?pop .
   ?country dbpprop:countryCode "THA"@en .
   FILTER ( lang(?abstract) = 'en' and regex(?label, "Bangkok"))
}

泰国曼谷没有结果。

我似乎无法使SPARQL查询正确,我确信我对查询很愚蠢。如果有任何大师可以给我提供帮助,我会很感激。谢谢!

2 个答案:

答案 0 :(得分:4)

我猜你想要这样的东西:

SELECT * WHERE {
  ?x rdfs:label "New York City"@en.
  ?x dbpedia-owl:populationTotal ?pop.
  ?x dbpedia-owl:abstract ?abstract.
}

要仅获取英文摘要,请添加FILTER

SELECT * WHERE {
  ?x rdfs:label "New York City"@en.
  ?x dbpedia-owl:populationTotal ?pop.
  ?x dbpedia-owl:abstract ?abstract.
  FILTER (LANG(?abstract) = 'en')
}

“纽约”是州,它没有附加populationTotal数字。 “纽约市”就是这个城市。

答案 1 :(得分:2)

此查询正在运作

SELECT DISTINCT *
WHERE {
   ?city rdf:type schema:City ;
         rdfs:label ?label ;
         dbpedia-owl:abstract ?abstract ;
         dbpedia-owl:country ?country ;
         dbpprop:website ?website ;
         dbpedia-owl:populationTotal ?pop .
   ?country dbpprop:countryCode "USA"@en .
   FILTER ( lang(?abstract) = 'en' and regex(?label, "New York City"))
}
编辑:曼谷有两个问题:

  • 泰国没有国家/地区代码:您可以使用rdfs:label "Thailand"@en代替。
  • 曼谷的
  • rdf:type不是schema:City,而是dbpedia-owl:Settlement

这是曼谷的工作查询

SELECT DISTINCT *
WHERE {
   ?city rdf:type dbpedia-owl:Settlement ;
         rdfs:label "Bangkok"@en ;
         dbpedia-owl:abstract ?abstract ;
         dbpedia-owl:populationTotal ?pop ;
         dbpedia-owl:country ?country ;
         dbpprop:website ?website .
   ?country rdfs:label "Thailand"@en .
   FILTER ( lang(?abstract) = 'en' )
}