0

我们可以使用 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') }
4

1 回答 1

2

迭代地编写这些查询通常是最简单的,在你进行的过程中探索数据。例如,在这种情况下,您可以从以下开始:

select ?place where {
  ?place a dbpedia-owl:PopulatedPlace
}
limit 100

SPARQL 结果

这不仅仅是美国的地方,而且您可以浏览结果,直到找到一个。然后你可以检查它,看看你如何识别这些地方。在这种情况下,您可能会找到Furnace, West Virginia,并注意它是属性dbpedia-owl:country的值dbpedia: United_States 。因此我们可以细化查询:

select ?place where {
  ?place a dbpedia-owl:PopulatedPlace ;
         dbpedia-owl:country dbpedia:United_States 
}
limit 100

SPARQL 结果

看起来好多了,但您说您想要的是地点的名称,而不是识别它们的实际 IRI。根据您的过滤器,您似乎只需要英文名称。然后我们进一步细化:

select ?label where {
  ?place a dbpedia-owl:PopulatedPlace ;
         dbpedia-owl:country dbpedia:United_States ;
         rdfs:label ?label
  filter langMatches( lang(?label), 'en' )
}
limit 100

SPARQL 结果

这些名称是语言标记的文字。如果你只想要字符串部分,你可以在变量投影中做到这一点:

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 100

SPARQL 结果

于 2014-09-13T03:37:05.260 回答