Как получить сову: sameas в dbpedia - PullRequest
1 голос
/ 23 июня 2019

Я использую следующий запрос для получения идентификатора wikidata со страницы dbpedia, используя owl:sameas.

SELECT distinct ?wikidata_concept 
WHERE {<http://dbpedia.org/resource/Category:Michael_Jackson> owl:sameAs ?wikidata_concept 
FILTER(regex(str(?wikidata_concept), "www.wikidata.org" ) )} 
LIMIT 100

Отлично работает на Virtuoso SPARQL Query Editor . Я получаю http://www.wikidata.org/entity/Q7215695 как правильный ответ.

Однако, когда я пытаюсь сделать то же самое, используя SPARQLWrapper в python, я не получаю ответ выше (в основном, фрейм данных в пустом).

Мой код на Python выглядит следующим образом.

import pandas as pd
from SPARQLWrapper import SPARQLWrapper, JSON

sparql = SPARQLWrapper("http://live.dbpedia.org/sparql")
item = "http://dbpedia.org/resource/Category:Michael_Jackson"
sparql.setQuery(f"SELECT distinct ?wikidata_concept WHERE {{<{item}> owl:sameAs ?wikidata_concept FILTER(regex(str(?wikidata_concept), \"www.wikidata.org\" ) )}} LIMIT 100")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
print(results)
results_df = pd.io.json.json_normalize(results['results']['bindings'])
print(results_df)

Пожалуйста, дайте мне знать, где я делаю что-то не так. Я рад предоставить более подробную информацию, если это необходимо.

1 Ответ

2 голосов
/ 24 июня 2019

DBpedia имеет 2 версии.Итак, причина, по которой я получил два результата, заключается в том, что я использую разные версии в двух подходах.

Изменение sparql = SPARQLWrapper("http://live.dbpedia.org/sparql") на sparql = SPARQLWrapper("http://dbpedia.org/sparql") решило мою проблему.Итак, я использую ту же версию dbpedia в редакторе запросов и в своем коде Python.

...