【问题标题】:SWI-Prolog Semantic Web Library and Python InterfaceSWI-Prolog 语义 Web 库和 Python 接口
【发布时间】:2012-06-05 21:02:50
【问题描述】:

我想编写一个使用 Prolog 查询 RDF 三元组的 Python Web 应用程序。我发现pyswip 用于将 Python 与 SWI-Prolog 连接,我目前正在研究 SWI-Prolog 的 RDF 功能。我想知道是否有人以前尝试过这个——如果有人尝试过:你的设置是什么样的?你如何让 pyswip 与 SWI-Prolog 语义网络库一起工作?或者是否有另一个 Python-Prolog 接口可以让这更容易?

编辑:

我实际上找到了一个非常好的解决方案。我之前使用 AllegroGraph 3.3 Python API 对 RDF 数据进行 Prolog 查询,但我认为他们对 Allegro Common Lisp 的 Prolog 扩展有点缺乏,因为它缺少数字比较运算符之类的东西。从那以后我尝试了 AllegroGraph 4.6,我发现他们的 Prolog 扩展中缺少的任何东西都可以通过以下事实来弥补Prolog 扩展不提供。由于某种原因,在我使用 AllegroGraph 3.3 Python API 时没有定义这个函子,但显然 Allegro 的开发人员从那时起已经走了很长一段路。

我建议任何想要构建一个使用 Prolog 查询 RDF 数据的 Python Web 应用程序的人。它超级快速且超级强大。

【问题讨论】:

    标签: python prolog swi-prolog semantic-web allegrograph


    【解决方案1】:

    我没有用过 pyswip,虽然前段时间我看了一下。你的问题很有说服力,pyswip 看起来很有吸引力,特别是“pythonic”界面。

    然后我设法安装了,但完成后(我不得不调整安装“说明”,因为我正在运行一个相当最新的 SWI-Prolog),我无法运行简单的介绍性示例而不招致在奇怪的问题中:示例声明中的错误数量,SWI-Prolog 抱怨 2^ assertz 上的错误处理术语引用等。而且我找不到任何文档....

    我建议使用 Boost.Python 和 C++ SWI-Prolog FLI(外语接口)。

    也许我们只需要一个方法:比如 PrologEngine.call(TermArray),映射到 call/N,以完全访问丰富的 Prolog 库(其中包括 SemWeb)和一些反射调用。

    也就是说,我认为这不是一项微不足道的任务,也许 pyswip 提供了更好的方法,一旦调试...

    我可能有兴趣合作编写一些东西,我知道一点 Boost 和 C++ FLI,但我不是 Python 编码器,只是用它来原型使用 Google Docs(或者更好,只是电子表格).. .

    OTOH 我喜欢在 Prolog 中写作,现在,跑题了,我想跑题,向您提出一个稍微不同的方法:使用 HTTP 服务器功能在逻辑和表示之间创建一个更独特的接口(即更多 MVC)的 SWI-Prolog。

    写一个server 公开为 (X)HTML (+JSON+SVG+...),并在 python 中使用(或解析)输出。一种 RPC。

    这样逻辑将被强解耦,然后将大大增加可重用性。 当然,如果您对“in se”中的三元组不感兴趣,但对它们的语义感兴趣,这是有道理的。

    我认为调试也可以更容易,总是由于解耦。 Jan Wielemaker,主要的 SWI-Prolog 开发人员,经常建议难以驾驭一起运行的复杂引擎的行为,比如 Java(我认为 Python 会类似)和 Prolog,特别是在涉及多线程时(总是,如果我们认为其中)。 而今天,多线程正在被使用。

    【讨论】:

    • 我实际上发现 AllegroGraph 4.6 Python API 非常适合我的需求。看看吧!
    • chac:我找到了一个关于使用 SWI-Prolog 制作 JSON RPC 服务器的教程。 technogems.blogspot.com/2011/08/… 不幸的是,它给出的示例只执行一个功能:添加两个数字。您认为制作一个可以执行任意 Prolog 的 RPC 服务器有多难?我在这里提出了一个问题:stackoverflow.com/questions/11995376/…
    【解决方案2】:

    我没有使用 pyswip 的经验。但供您参考,swi prolog 似乎很有能力,因为我对库 knowrob 有一些经验,这是用于机器人学中的人工智能推理。不知道这是否有帮助

    【讨论】:

    • +1:感谢您的链接!这似乎是 SWI-Prolog 网站所缺少的宝贵资源。
    猜你喜欢
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多