问题描述
我正在尝试使用 Python 包 wikibaseintegrator(版本 0.10.0)运行 SPARQL 查询。
程序编写如下:
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()
当我运行这个时,我得到的错误是:
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'
然而,文档 (https://github.com/LeMyst/WikibaseIntegrator) 似乎暗示这是格式化查询的正确方法。任何诊断方面的帮助将不胜感激!
编辑 1:文档说它在 ItemEngine (The method wbi_core.ItemEngine.execute_sparql_query()
) 中,但程序本身似乎显示它在 FuctionsEngine 中
我已经尝试了所有这些变体,但错误是相同的:
$ python database_script.py
Traceback (most recent call last):
File "database_script.py",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",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",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'
编辑 2:更大的问题似乎是缺少 SPARQL 服务的安装,因为我已经使用 wamp64 运行它。我安装了一个 Docker 实例,开箱即用变得相当容易(除了导出 wamp64 版本并导入到 Docker 实例中)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)