我正在Wikidata查询编辑器中使用以下sparql查询:
SELECT ?s ?p WHERE {?s ?p wd:Q22673982 .}
链接到查询编辑器:https://w.wiki/5E7
我正在为上述查询获取40
条记录。
但是,当我尝试使用SPARQLWrapper
在python中执行相同操作时,我得到了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)
我只是想知道为什么会发生这种不匹配。有办法解决这个问题吗?
很高兴在需要时提供更多详细信息。
答案 0 :(得分:1)
我使用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)