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