为什么 sparql 中的 SPARQLWrapper 和 Wikidata 查询编辑器的结果不同

Why the results are diffrent in SPARQLWrapper and Wikidata query editor in sparql

我在维基数据查询编辑器中使用以下 sparql 查询:

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

Link 到查询编辑器: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)

我只是想知道为什么会发生这种不匹配。有办法解决这个问题吗?

如果需要,我很乐意提供更多详细信息。

我使用 SPARQLWRAPPER 的代码几乎是正确的。但是,我在使用 f-strings.

准备查询时犯了一个错字

修改后的代码如下,解决了我的问题

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)