1

我在运行以下程序 ( 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

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

谢谢

最好的,

苏雷什

4

1 回答 1

1

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

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

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

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

于 2018-03-23T13:22:57.037 回答