2011-12-02 34 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