使用SPARQL从DBpedia获取Place类别

时间:2011-12-02 05:36:57

标签: categories sparql dbpedia

以下代码在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 .

我应该添加/更改什么?感谢。

1 个答案:

答案 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
} 

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