我确信我想做的事情非常简单,但我似乎无法正确查询。我在数据集中有记录,其中包含城市名称等值,例如“纽约”及其相应的国家/地区代码,例如“美国”。我还可以访问完整的国家/地区名称和国家/地区 ISO 代码。
我想通过使用 where 子句从 dbpedia 获取这些城市的人口和抽象值,例如:
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 查询,我确信我的查询很愚蠢。如果任何大师可以为我提供帮助,我将不胜感激。谢谢!
我猜你想要这样的东西:
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
附图。 “纽约市”就是城市。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)