Почему результаты отличаются в SPARQLWrapper и редакторе запросов Wikidata в sparql - PullRequest
0 голосов
/ 24 июня 2019

Я использую следующий запрос sparql в редакторе запросов wikidata:

SELECT ?s ?p WHERE {?s ?p wd:Q22673982 .}

Ссылка на редактор запросов: https://w.wiki/5E7

Я получаю 40 записей для вышеуказанного запроса.

Однако, когда я пытаюсь сделать то же самое в python, используя SPARQLWrapper, я получаю 0 записей. Мой код выглядит следующим образом.

import pandas as pd
from SPARQLWrapper import SPARQLWrapper, JSON

sparqlwd = SPARQLWrapper("https://query.wikidata.org/sparql")

myid = "wd:Q22673982"
sparqlwd.setQuery(f"SELECT ?s ?p WHERE {{?s ?p \"{myid}\" .}}")
sparqlwd.setReturnFormat(JSON)
results = sparqlwd.query().convert()
print(results)
results_df = pd.io.json.json_normalize(results['results']['bindings'])
print(results_df)

Мне просто интересно, почему происходит это несоответствие. Есть ли способ решить эту проблему?

Я с радостью предоставлю более подробную информацию, если это необходимо.

1 Ответ

1 голос
/ 24 июня 2019

Мой код с использованием SPARQLWRAPPER почти правильный. Тем не менее, я сделал опечатку при подготовке запроса с использованием f-строк.

Исправленный код выглядит следующим образом, что решило мою проблему.

import pandas as pd
from SPARQLWrapper import SPARQLWrapper, JSON

sparqlwd = SPARQLWrapper("https://query.wikidata.org/sparql")
myid = "wd:Q22673982"
sparqlwd.setQuery(f"SELECT ?s ?p WHERE {{?s ?p {myid} .}}")
sparqlwd.setReturnFormat(JSON)
results = sparqlwd.query().convert()
print(results)
results_df = pd.io.json.json_normalize(results['results']['bindings'])
print(results_df)
...