swi prolog的jupyter内核。

jswipl的Python项目详细描述


jswip

swi prolog的jupyter内核。

灵感来自madmax2012/SWI-Prolog-Kernel,现在使用PySwip

小心使用!

这个内核只在debian linux上使用jupyter lab进行了很少的测试。如果有人测试它,例如在普通的jupyter和/或windows上,请随意打开一张报告成功和/或失败的罚单。

我刚刚开始学习prolog,还没有用prolog的所有语言结构测试这个内核。更高级的prolog可能还有问题。

使用说明和限制

您应该将知识库和查询拆分为不同的单元格。只要内核运行,就会保留KB条目(事实等)。这意味着,如果运行包含两次事实的单元格,则事实将被发送到swipl两次。这通常不会导致错误,但在查询知识库时会导致奇数输出。

如果在运行查询时收到虚假输出,请重新启动内核,并确保只运行一次包含查询以外内容的任何单元格。

每个查询都必须以?-开头。

工作示例:

man(socrates).
mortal(X) :- man(X).

?- mortal(socrates).
?- mortal(X).
?- mortal(bob).

将输出。

true.
X = socrates.
false.

请记住,对于某些问题有很多答案。为了使内核总是在合理的时间内成功,任何一个查询的默认输出限制是10个答案。您可以通过以下语法来影响此限制。

?- someQuery(...) {LIMIT}.
以该查询将显示的最大数量的答案替换。它不是很好的解析(抱歉),所以大括号内或大括号与句点之间不能有空格。不是这样的:{1} .或者这个{ 1 }.

限制值-1表示没有限制。小心点!

支持的环境

只支持pyhton3(任何仍在使用python2的人现在都应该已经升级了…),而且它只在linux上测试过,因为我在windows上没有安装jupyter。但理论上它应该在窗户上工作。

安装

  1. 安装SWI-Prolog
  2. 安装jswiplpython3 -m pip install --upgrade --user jswipl
  3. 将目录更改为jupyters内核目录。通常是~/.local/share/jupyter/kernels
  4. mkdir jswipl && cd jswipl
  5. 安装内核规范:wget https://raw.githubusercontent.com/targodan/jupyter-swi-prolog/master/kernel.json
  6. 重新启动jupyter
  7. 利润

升级

保持最新状态就像不时地运行python3 -m pip install --upgrade --user jswipl一样简单。

贡献

如果出了什么问题,或者有人提出了拉票请求,你可以随意开票。如果打开一个pull请求,请将其打开到develop分支。这个存储库松散地依附于git flow workflowmaster分支是仅“发布”版本的分支。任何正在开发的东西都会进入develop分支。

请记住,这只是一个非常小的侧面项目,我不太可能投入大量的开发时间。不过,我会尽量回答任何问题,即使只是一个快速的“是的,会很好。“请打开一个拉请求某人。”我将尝试快速手动拉请求。

任何有兴趣成为共同维护者的人:打开一个问题让我知道。:)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaMaven没有识别junit测试   正则表达式替换Java中字符串中的所有“(“and”)”   文件移动到另一台计算机时出现java错误“实例化servlet类”   服务器上的java服务   Spring数据JPA上的java嵌套@Transactional注释行为   eclipse中的Java Tomcat项目   java在Tomcat上部署web应用程序   如何解决“java.lang.IllegalStateException:ArrayAdapter要求资源ID为TextView”错误?   java在条形码上方添加文本,并使用烧烤更改字体大小   java与php基准测试   java使用正则表达式提取特定模式   java扫描器。findInLine()大量泄漏内存   java HTTP:差异请求属性和POST参数   返回空指针的Java方法?   java验证密码不包含名称中的3个以上连续字符   Java中带泛型的静态多态性   java在Android中获得最后一个已知位置   java为什么Groovy的Map比Array更具可伸缩性?   编码如何在Java中生成八进制字符串?   java Hibernate:使用单例会话写入日志(无刷新)