'Executing SPARQL queries with the wikibaseintegrator package on a local Wikibase instance

I'm attempting to run a SPARQL query using the Python package wikibaseintegrator (version 0.10.0).

The program is written as follows:

from wikibaseintegrator.wbi_config import config as wbi_config
from wikibaseintegrator import wbi_login, wbi_core

wbi_config['MEDIAWIKI_API_URL'] = 'http://localhost/database_name/api.php'
wbi_config['SPARQL_ENDPOINT_URL'] = 'http://localhost:8989/database_name/sparql'
wbi_config['WIKIBASE_URL'] = 'http://wikibase.svc'

temp_username = "placeholder_username"
temp_password = "placeholder_password"

def main():
    login_instance = login()
    
    sparql_str = """
        SELECT ?item ?itemLabel 
        WHERE 
        {
          ?item wdt:P98 wd:Q45.
          SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
        }
    """
    
    sparql_results = run_sparql_query(sparql_str)
    print(sparql_results)

def login(username=temp_username, password=temp_password):
    login_instance = wbi_login.Login(user=username, pwd=password)
    return login_instance
    
def run_sparql_query(sparql_str):
    sparql_results = wbi_core.ItemsEngine.execute_sparql_query(sparql_str, endpoint=wbi_config['SPARQL_ENDPOINT_URL'])
    return sparql_results

#    MAIN
if __name__ == "__main__": main()

When I run this though, the error I get is:

Traceback (most recent call last):
  File "database_script.py", line 52, in <module>
    if __name__ == "__main__": main()
  File "database_script.py", line 40, in main
    sparql_results = run_sparql_query(sparql_str)
  File "database_script.py", line 48, in run_sparql_query
    sparql_results = wbi_core.ItemsEngine.execute_sparql_query(sparql_str, endpoint=wbi_config['SPARQL_ENDPOINT_URL'])
AttributeError: module 'wikibaseintegrator.wbi_core' has no attribute 'ItemsEngine'

However, the documentation (https://github.com/LeMyst/WikibaseIntegrator) seems to imply that this is the correct way to format the query. Any help in diagnosing would be much appreciated!

EDIT 1: The documentation says it's in the ItemEngine (The method wbi_core.ItemEngine.execute_sparql_query()), but the program itself seems to show it being in the FuctionsEngine

I have tried all of these variations, with the error being the same:

$ python database_script.py
Traceback (most recent call last):
  File "database_script.py", line 52, in <module>
    if __name__ == "__main__": main()
  File "database_script.py", line 40, in main
    sparql_results = run_sparql_query(sparql_str)
  File "database_script.py", line 48, in run_sparql_query
    sparql_results = wbi_core.FuctionsEngine.execute_sparql_query(sparql_str, endpoint=wbi_config['SPARQL_ENDPOINT_URL'])
AttributeError: module 'wikibaseintegrator.wbi_core' has no attribute 'FuctionsEngine'

$ python database_script.py
Traceback (most recent call last):
  File "database_script.py", line 52, in <module>
    if __name__ == "__main__": main()
  File "database_script.py", line 40, in main
    sparql_results = run_sparql_query(sparql_str)
  File "database_script.py", line 48, in run_sparql_query
    sparql_results = wbi_core.ItemEngine.execute_sparql_query(sparql_str, endpoint=wbi_config['SPARQL_ENDPOINT_URL'])
AttributeError: type object 'ItemEngine' has no attribute 'execute_sparql_query'

$ python database_script.py
Traceback (most recent call last):
  File "database_script.py", line 52, in <module>
    if __name__ == "__main__": main()
  File "database_script.py", line 40, in main
    sparql_results = run_sparql_query(sparql_str)
  File "database_script.py", line 48, in run_sparql_query
    sparql_results = wbi_core.FunctionEngine.execute_sparql_query(sparql_str, endpoint=wbi_config['SPARQL_ENDPOINT_URL'])
AttributeError: module 'wikibaseintegrator.wbi_core' has no attribute 'FunctionEngine'

EDIT 2: The larger issue seemed to be the lack of an install for the SPARQL service since I had gotten it running with WAMP64. I installed a Docker instance and it's been a decent amount easier out of the box (except the export of the WAMP64 version and import into the Docker instance).



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source