Prolog 网络编程

Posted

技术标签:

【中文标题】Prolog 网络编程【英文标题】:Prolog web programming 【发布时间】:2011-04-17 00:01:17 【问题描述】:

在工作中,有人讨论过使用 prolog 作为 web 应用程序规则引擎的后端。

这将如何与现有系统绑定?

是否有其他语言的可用 prolog 库允许调用 prolog 模块?

【问题讨论】:

只是出于好奇:您的工作场所有多少人真正掌握了 Prolog 的基础?从商业角度来看,这似乎是一个有趣的选择。 【参考方案1】:

对于SWI-Prolog,您可以查看Thea2,它在Prolog 中支持SWRL,也可以通过JPL 附加到外部推理器,例如HermiT 用于OWL/SWRL 推理,或@987654326 @等

就个人而言,我过去曾多次使用JPL 来启用具有 SWI-Prolog 后端的 Web 应用程序,如果您打算使用可在JVM,例如 Java、Groovy 或 Scala。另一种选择是将 SWI-Prolog 挂接到 C 或 C++ environment,我还没有为 web 应用程序尝试过。

如果您的 Web 应用程序正在使用另一种不在 JVM 或 C/C++ 中运行的开发语言,那么这可能不适合您,因为连接正在运行的应用程序似乎有点困难SWI-Prolog 环境到其他语言环境。然而,话虽如此,我们之前已经使用HTTP 成功实现了 SWI-Prolog 到任何东西的桥接,但如果需要性能,这并不理想。

【讨论】:

【参考方案2】:

swi-prolog 包含一个非常合理的 HTTP 服务器/网络框架。

您可以通过 HTTP 与它通信。

有解析XML/SGML和JSON的工具,还有ODBC

【讨论】:

JSON 以及一些数据库连接,似乎对 web 很重要。不幸的是,这里没有列出:en.wikipedia.org/wiki/…【参考方案3】:

我不确定你在寻找什么,但你可能想看看Yield Prolog ,它允许将 Prolog 代码嵌入到使用 Python、C# 或 javascript 的程序中。不涉及 API。我自己(还)没有使用过这个,但它可能适合你想要做的事情。

【讨论】:

据我了解 Yield Prolog 是基于 JavaScript 的,你会在 Web 服务器上运行它吗?但是对于前端集成,我想这会很棒。 随着 node.js 越来越流行专门使用 JavaScript 进行服务器端编程,这可能是在客户端或服务器端集成 Prolog 处理的有用工具。【参考方案4】:

我认为 Web 嵌入的一个重要先决条件,尤其是在 服务器端,是 Prolog 系统的多线程功能。在 至少你可能需要这个,如果你想服务多个 并发用户。

然后,您可以选择纯解决方案,其中页面位于 由 Prolog 自己生成和维护。或者也许对于混合解决方案, Prolog 系统仅用于某些业务逻辑和另一个 编程语言用于表示和/或存储。

下面的 Wiki 比较表给出了 Prolog 系统的概述和 它们是否是多线程的和/或支持一些网络编程:

Comparison of Prolog implementations,Operating system and Web-related features

为了我自己解决这个问题,我设置了一个小教程 这显示了 Jekejeke 运行时在服务器端的使用 商业逻辑。 Jekejeke Runtime 相当灵活,你不能 只有多个线程,你也可以有多个 知识库

Jekejeke Runtime,Deployment Methods

例如,Jekejeke 运行时当前用于生产 销售系统,通过一些自定义的读/写锁,它甚至允许远程 管理员无需重启即可热插拔知识库 网络上下文。不幸的是,目前还没有这方面的报告。

再见

【讨论】:

SWI-Prolog Web 框架是多线程的。我已经将它用于我每天处理 10^7 次左右请求的应用程序。 是的,这也是我在帖子中提供的 Wiki 表链接中列出 SWI-Prolog 的原因。同一个 Wiki 比较表有一个“多线程”列以及与网络相关的列。【参考方案5】:

一些语言使用桥接器并为其提供库,例如在 Python 中,PySWIP 用于单线程使用,因此它不能很好地与 Web 应用程序配合使用。我发现 Pengine 的用途要广泛得多。

Pengines 在 SWI 中,它们是通过 HTTP 查询 Prolog 的一种方式。至少有一个 JavaScript、Java 和 Python 库可以与它们交互,但它只是一堆 HTTP 请求。使其易于分发、用作微服务或水平扩展。尽管正如 anniepoo 所见证的那样,SWI 服务器可以处理大量流量!

在 JavaScript 的情况下,还有 Tau Prolog,它可以编译并在 JavaScript 中工作。

将逻辑语言用作规则引擎很有意义。

【讨论】:

【参考方案6】:

LPA Prolog 已广泛用于各种基于 Web 的商业应用程序,其中最引人注目的是 Business Integrity 的行业领先文档组装产品 DealBuilder

LPA 为交付基于 Web 的应用程序提供了各种架构 - 其中一些位于 LPA 网站的 VisiRule 部分中 www.lpa.co.uk

克莱夫

【讨论】:

以上是关于Prolog 网络编程的主要内容,如果未能解决你的问题,请参考以下文章

visual prolog是啥编程软件?

prolog语言还在用吗

Prolog 逻辑谜题和约束编程

通过corecursion解决Prolog中的动态编程问题

使用 Prolog 优化约束逻辑编程中的寻路

求助啊!!!救命!!!关于c++和PROLOG混合编程