2011-12-02 52 views
1

以下代码将查询DBpedia以查找有界地理区域内的地点,并返回该地点的名称,纬度和长度。我还希望查询返回该地点的类别 - 例如,公园,餐厅,博物馆等。使用SPARQL从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 . 

我应该添加/更改?谢谢。

回答

4

您可以通过查找资源的类型(rdfs:type)或主题(dcterms:主题)来获取某个地点的类别(假设您指的是类型)。在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 
} 

请注意,您将获得每个地点的多种类型和主题。

+0

谢谢。我实际上在一个小时前想出了相同的解决方案,当我来到这里发布时,我找到了答案。 – johnjdc