我们可以使用SPARQL查询从DBpedia获得美国的位置列表吗?我试过以下的查询,但它(从设计上)只给出英文摘要。我要美国地方的名字。我怎样才能做到这一点?
SELECT ?abstract
FROM NAMED <http://dbpedia.org>
WHERE { <http://dbpedia.org/resource/Lists_of_populated_places_in_the_United_States> <http://dbpedia.org/ontology/abstract> ?abstract.
FILTER langMatches( lang(?abstract), 'en') }发布于 2014-09-13 03:37:05
通常情况下,迭代地编写这些查询是最简单的,您可以一边浏览数据一边浏览这些查询。例如,在本例中,您可以从以下几个方面开始:
select ?place where {
?place a dbpedia-owl:PopulatedPlace
}
limit 100SPARQL结果
这不仅是在美国的地方,但你可以浏览结果,直到你找到一个是。然后你可以检查它,看看你如何识别这样的地方。在本例中,您可能会找到西弗吉尼亚dbpedia-owl:country.的,并注意到它是属性dbpedia-owl:country.的值因此,我们可以细化查询:
select ?place where {
?place a dbpedia-owl:PopulatedPlace ;
dbpedia-owl:country dbpedia:United_States
}
limit 100SPARQL结果
这看起来好多了,但你说过你想要这些地方的名字,而不是识别它们的真正的虹膜。根据你的过滤器,看起来你只想要英文名字。然后,我们进一步完善:
select ?label where {
?place a dbpedia-owl:PopulatedPlace ;
dbpedia-owl:country dbpedia:United_States ;
rdfs:label ?label
filter langMatches( lang(?label), 'en' )
}
limit 100SPARQL结果
这些名字都是带有标签的文字。如果只想要字符串部分,可以在变量投影中这样做:
select (str(?label) as ?strLabel) where {
?place a dbpedia-owl:PopulatedPlace ;
dbpedia-owl:country dbpedia:United_States ;
rdfs:label ?label
filter langMatches( lang(?label), 'en' )
}
limit 100SPARQL结果
https://stackoverflow.com/questions/25818583
复制相似问题