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

时间:2019-06-24 01:17:49

标签: sparql rdf wikidata linked-data

我正在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)

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

很高兴在需要时提供更多详细信息。

1 个答案:

答案 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)