Search code examples
pythonsparqlwdqs

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


I am using the following sparql query in wikidata query editor:

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

Link to the query editor: https://w.wiki/5E7

I am getting 40 records for the above query.

However, when I try to do the same in python using SPARQLWrapper I get 0 records. My code is as follows.

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)

I am just wondering why this mismatch happens. Is there a way to resolve this issue?

I am happy to provide more details if needed.


Solution

  • My code using SPARQLWRAPPER is almost right. However, I have made a typo when preparing the query using f-strings.

    The corrected code is as follows, which solved my issue.

    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)