<p>我没有用过pyswip,尽管不久前我看过它。你的问题很有说服力,pyswip看起来很吸引人,特别是“pythonic”界面。在</p>
<p>然后我设法安装,但当安装完成后(我不得不调整安装“说明”,因为我运行的是一个相当最新的SWI-Prolog),我无法在运行简单的介绍性示例时不引起奇怪的问题:示例声明的arity错误,SWI-Prolog抱怨2^assertz上错误处理的术语引用等等。我找不到任何文件。。。。在</p>
<P>我建议使用<a href="http://www.boost.org/doc/libs/1_49_0/libs/python/doc/" rel="nofollow">Boost.Python</a>和C++ SWI Prolog <a href="http://www.swi-prolog.org/pldoc/package/pl2cpp.html" rel="nofollow">FLI</a>(外语接口)。在</p>
<p>也许我们只需要一个方法:比如催乳素.call(TermArray),映射到call/N,以完全访问富Prolog库(其中包括SemWeb)和一些反射调用。在</p>
<p>也就是说,我认为这是一项微不足道的任务,也许pyswip提供了一种更好的方法,一旦被调试。。。在</p>
<>我可能会有兴趣合作编码一些东西,我知道有点Boost和C++ FLI,但我不是Python编码器,只是用它来谷歌文档的原型用法(或者更好,只是电子表格)…在</p>
<p>我很喜欢用Prolog写东西,现在,撇开话题,我会提出一个稍微不同的方法:使用SWI-Prolog的HTTP服务器功能,在逻辑和表示之间建立一个更清晰的接口(即更多的MVC)。在</p>
<p>编写一个以(X)HTML(+JSON+SVG+…)形式公开的<a href="http://www.swi-prolog.org/howto/http/" rel="nofollow">server</a>,然后在python中使用(或解析)输出。一种RPC。在</p>
<p>这样,逻辑将被强解耦,从而大大提高可重用性。
当然,如果你对三元组“in se”不感兴趣,而是对它们的语义感兴趣的话,这是有意义的。在</p>
<p>我认为调试也可以容易得多,总是由于解耦。
SWI Prolog的主要开发人员janwielemaker经常就如何利用运行在一起的复杂引擎的行为提出建议,比如Java(我认为Python也会类似)和Prolog,特别是当涉及多线程时(如果我们想到的话,总是这样)。
而今天,多线程<strong>正在被使用。在</p>