Я использую следующий запрос, чтобы получить категории dbpedia (т.е. skos:broader|dct:subject) данного URI dbpedia.
skos:broader|dct:subject
all_urls = ['http://dbpedia.org/resource/Machine_learning', 'http://dbpedia.org/resource/Category:Machine_learning'] for url in all_urls: print("------") print(url) print("------") sparql.setQuery(""" SELECT * WHERE {<""" +url+ """>skos:broader|dct:subject ?resource } """) sparql.setReturnFormat(JSON) results = sparql.query().convert() for result in results["results"]["bindings"]: print('resource ---- ', result['resource']['value'])
Вывод:
------ http://dbpedia.org/resource/Machine_learning ------ resource ---- http://dbpedia.org/resource/Category:Cybernetics resource ---- http://dbpedia.org/resource/Category:Learning resource ---- http://dbpedia.org/resource/Category:Machine_learning ------ http://dbpedia.org/resource/Category:Machine_learning ------ resource ---- http://dbpedia.org/resource/Category:Artificial_intelligence resource ---- http://dbpedia.org/resource/Category:Learning
Теперь я хочу проверить расстояние каждой категории в выводе до верхнего уровня системы категорий dbpedia (в соответствии с моим текущим пониманием dbc:Contents - это верхний элемент в иерархии skos: broder и dct: subject). Возможно ли это сделать в sparql?
dbc:Contents
Я рад предоставить более подробную информацию, если это необходимо.