以下代码在DBpedia中查询有界地理区域内的位置,并返回该位置的名称,纬度和长度。我也想查询返回地点的类别 - 例如,公园,餐厅,博物馆等。
以下代码可以正常使用。
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery("""
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX category: <http://dbpedia.org/resource/Category:>
SELECT * WHERE {
?s a dbo:Place .
?s geo:lat ?lat .
?s geo:long ?long .
我尝试添加以下代码以获取地点的类别,但这不起作用:
?s category:cat ?cat .
我应该添加/更改什么?感谢。
答案 0 :(得分:3)
您可以通过查找资源的类型(rdfs:type)或主题(dcterms:subject)来获取某个地方的类别(假设您的类型)。在DBPedia中,第一个涉及DBPedia和Yago本体,第二个是DBPedia中的SKOS层次结构。以下是一个示例查询:
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dcterms: <http://purl.org/dc/terms/>
SELECT * WHERE {
?s a dbo:Place .
?s geo:lat ?lat .
?s geo:long ?long .
?s a ?type .
?s dcterms:subject ?sub
}
请注意,您将获得每个地方的多种类型和主题。