1

以下代码查询 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

1 回答 1

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
} 

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

于 2011-12-02T08:38:38.173 回答