Prolog网络编程

ikp*_*ikp 16 rule-engine prolog

在工作中讨论了使用prolog作为web-app上规则引擎的后端.这将如何与现有系统联系起来?是否有可用于其他语言的prolog库,允许调用prolog模块.

sha*_*rky 11

对于SWI-Prolog,您可以查看在Prolog中支持SWRL的Thea2,也可以通过JPL(例如HermiT用于OWL/SWRL推理或Pellet等)连接到外部reasoners .

在个人方面,我过去曾多次使用JPL来启用带有SWI-Prolog后端的Web应用程序,如果您打算使用可在JVM上执行的语言(如Java)编写Web应用程序,该工作正常.例如,Groovy或Scala.另一种选择是将SWI-Prolog挂钩到CC++环境中,我还没有尝试过使用Web应用程序.

如果您的Web应用程序使用的是另一种不能在JVM或C/C++上运行的开发语言,那么这可能不适合您,因为连接正在运行的SWI-Prolog似乎有点困难环境到其他语言环境.然而,也就是说,我们之前已经使用HTTP成功实现了SWI-Prolog-to-any网桥,但如果性能是必要的话,这不太理想.


Ann*_*poo 7

swi-prolog包含一个非常合理的HTTP服务器/ Web框架.

你可以通过HTTP与它交谈.

有解析XML/SGML和JSON以及ODBC的工具


小智 5

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


小智 5

我认为 Web 嵌入(尤其是在服务器端)的一个重要先决条件是 Prolog 系统的多主题能力。如果您想同时为多个用户提供服务,至少您可能需要这个。

然后,您可以选择纯解决方案,其中页面由 Prolog 本身生成和维护。或者可能是混合解决方案,其中 Prolog 系统仅用于某些业务逻辑,而另一种编程语言用于表示和/或存储。

以下Wiki 比较表概述了 Prolog 系统以及它们是否是多线程和/或支持某些 Web 编程:

Prolog 实现、
操作系统和 Web 相关功能的比较

对于我自己对这个问题的看法,我设置了一个小教程,展示了 Jekejeke Runtime 在服务器端业务逻辑中的使用。Jekejeke Runtime相当灵活,不仅可以有多个线程,还可以有多个知识库。

Jekejeke 运行时,
部署方法

例如,Jekejeke Runtime 目前在生产销售系统中使用,通过一些自定义读/写锁,它甚至允许管理员对知识库进行远程热交换,而无需重新启动 Web 上下文。不幸的是,目前还没有这方面的报道。

再见