代码之家  ›  专栏  ›  技术社区  ›  Suresh Pokharel

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

  •  1
  • Suresh Pokharel  · 技术社区  · 6 年前

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

    计划: sparql\u测试。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
    

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

    非常感谢。

    最好的

    苏雷什

    1 回复  |  直到 6 年前
        1
  •  1
  •   TallTed    6 年前

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

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

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

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