Получить категории мест из 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 .
Что я должен добавить / изменить? Благодарю.
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
}
Обратите внимание, что вы получите несколько типов и предметов для каждого места.