从python执行sparql查询到linux中的virtuoso服务器?

时间:2018-03-23 02:44:10

标签: python sparql virtuoso sparqlwrapper

我遇到运行以下程序(sparql_test.py)的问题。我是从Linux机器上运行的。我在同一台Linux机器上安装Virtuoso服务器。在Linux服务器中,我没有sudo权限也没有浏览器访问权限。但是,我可以成功地从isql提示符(SQL>)执行SPARQL查询。

计划:sparql_test.py

from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://localhost:8890/sparql")
sparql.setQuery("select ?s where { ?s a <http://ehrofip.com/data/Admissions>.} limit  10")
sparql.setReturnFormat(JSON)
result = sparql.query().convert()
for res in result["results"]["bindings"]:
    print(res)

我收到以下错误:

[suresh@deodar complex2vec]$ python sparql_test.py
Traceback (most recent call last):
File "sparql1.py", line 14, in "<module>"
  result = sparql.query().convert()
File "/home/suresh/.local/lib/python2.7/site-packages/SPARQLWrapper/Wrapper.py", line 687, in query
  return QueryResult(self._query())
File "/home/suresh/.local/lib/python2.7/site-packages/SPARQLWrapper/Wrapper.py", line 667, in _query
  raise e
urllib2.HTTPError: HTTP Error 502: Bad Gateway

但是,上述程序在我自己的笔记本电脑中运行顺畅。可能是什么问题?这是连接问题吗?

谢谢

最佳,

Suresh

1 个答案:

答案 0 :(得分:0)

我不相信Virtuoso会提出这个错误。我相信它是由SPARQLWrapper引发的。

看起来外部世界(包括Linux机器本身)和端口8890上的Virtuoso监听器之间存在某种东西。 “坏网关”表明可能有两件事 - 反向代理和防火墙。

端口8890(在INI文件中设置为[HttpServer]:Listen)必须对通信,直接或代理开放,以便SPARQL访问工作。

iSQL与端口1111(在INI文件中设置为[Parameters]:Listen)对话,显然没有类似的块/代理。