Получить категории мест из DBpedia с помощью SPARQL - PullRequest
1 голос
/ 02 декабря 2011

Следующий код запрашивает 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 Ответ

3 голосов
/ 02 декабря 2011

Вы можете получить категорию места (если вы подразумеваете тип), найдя тип (rdfs: тип) или тему (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
} 

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

...