Получить категории мест из 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 .

Что мне добавить/изменить? Спасибо.


person Community    schedule 02.12.2011    source источник


Ответы (1)


Вы можете получить категорию места (при условии, что вы имеете в виду тип), найдя тип (rdfs:type) или тему (dcterms:subject) ресурса. В DBPedia первый относится к онтологиям DBPedia и Yago, а второй — к иерархии SKOS в DBPedia. Вот пример запроса:

 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
} 

Обратите внимание, что вы получите несколько типов и тем для каждого места.

person ip.    schedule 02.12.2011
comment
Спасибо. На самом деле я придумал такое же решение около часа назад, и когда я пришел сюда, чтобы опубликовать его, я нашел ваш ответ. - person ; 02.12.2011