SWI-Prolog的特性

SWI-Prolog是Prolog语言的通用实现。它健壮的多线程,扩展的数据类型,无限的算术, 文本的Unicode表示允许文档的自然表达 (例如, XML, JSON, RDF) 以及与其他编程范例交换数据。  其全面的底层接口C是高级接口C++、Java (捆绑的)、C#、Python、等(外部可用)的基础。提供了一个广泛的web服务器(HTTP)框架,它可以用于提供(REST)服务和基于 HTML5+CSS+JavaScript的终端用户应用程序。 P引擎(Prolog引擎)允许客户端使用通用API在远程服务器上对客户端提供的程序进行查询。这样的程序可以在沙箱中执行。

配备了丰富的接口,Prolog是实现应用程序的一种很有吸引力的语言。它的增量编译与一般的本地和可回溯的数据结构(撤消)相结合,允许对程序进行修补,并在不重启的情况下继续测试它。它的关系范例很适合表格数据(RDBMS),而它的递归强度与树和图形的数据非常吻合。Prolog可以自然地表达实现应用程序逻辑所需的简单规则集。

约束协同程序将规则附加到(更改)数据。结合回溯,这可以用一个简单的声明性规范来解决许多复杂的组合问题。经典的例子是谜题和规划问题。

SWI-Prolog提供了多种开发环境,其中大部分可以随意组合。本机系统提供了一个用Prolog编写的编辑器,这是Emacs的一个紧密克隆。它提供了基于Prolog系统本身的代码实时分析的语义突出显示。辅助工具包括图形调试器、剖析器和交叉引用器。交流方式,有一个GNU-Emacs和一个Eclipse插件的模式,这两种方法都可以与本机图形工具相结合。最后, SWISH提供基于上述P引擎的基于web的环境,这两种方法都可以用于提供沙箱访问或认证后的完全访问。通过使用语义突出显示,SWISH提供了多种源码的编辑。SWISH可以使用HTML5+CSS+JavaScript来管理插件来呈现Prolog数据。这可以用来将数据呈现为表格、图形、图表等。

SWI-Prolog提供一个附加的分发和安装机制,称为包。包是一个具有最少组织约定和控制文件的目录,它描述了原点、版本、依赖项和自动升级支持。包可以通过pack_install/1从存档、GIT仓库或URL安装。包被用来在社区中共享代码。包装系统已经发展出了一些生态系统来处理各种类型,协同程序等。

下面是我们所认为的SWI-Prolog的关键特性的列表,其中包含了相关文档的链接。

引擎

·        快速编译。例如, 在14秒内从Prolog源加载 WordNet 3.0 ,或者是在0.4秒内从快速加载文件格式加载(参看qcompile/1)。WordNet的源代码有821,515行。系统:英特尔i7-3770,32 Gb内存的Ubuntu 16.04。

·        健壮且没有内存泄漏。用于运行24x7(包括这个web服务)的几个服务器。

·        的开发环境,包括图形、库和许多接口包,大约需要100MB硬盘。内核大约是1.4 MB(ubuntu16.04.so文件)

·        适用于大型应用程序。 不限制程序大小、原子长度、术语或整数值。在有许多(索引)事实的谓词上没有性能下降。

·        在任何参数上,静态和动态代码的即时索引大大简化了与许多子句处理多模的关系。在版本7.5中,支持多参数JITI。如果没有选择性的单参数索引,则会为两个参数的组合值创建一个索引。

·        基于GMP库的无限整数和有理数运算。

·        好处:模块(向上兼容Quintus和SICStus),垃圾收集(对C/C++代码透明,包括atom(原子)和clause(子句)垃圾收集),最后调用优化,运行时栈的动态扩展,ISO异常处理(包括用于捕获和抛出异常的C/C++接口)。

·        属性化变量,协同程序(freeze/2, when/2, dif/2), 全局变量, 循环术语。

·        重现-检查的标志控制字处理 (false/true/error)参看current_prolog_flag/2.

·        UNICODE 字符集处理内部。适用于web和国际应用程序。

·        多线程支持:在同一个数据库上运行多个预先调度的prolog引擎。

·        引擎, 也被称为交互器 提供协同程序,这可以用于状态积累和大规模并发性,例如,群体智慧和仿真。

·        Delimitedcontinuations是新控制结构的强大构件

·        Tabling (SLGresolution) (SLG解析)提供了一种更健壮的解决方案,用于解决复杂相关规则的查询。

开发工具

  • 所有平台上的源代码级调试器,支持通过XPCE(Windows、unix/linux、MacOSX)的图形。
  • 执行分析器 (时间和调用统计) 适用所有主要的平台(Windows, Linux, MacOSX).
  • 交叉引用器。 gxref/0提供了图形前端用于可扩展Prolog交叉引用器(xref)。
  • 通过PlDoc支持文学编程。提供关于手册和应用程序文档的集成视图,并为你的应用生产LaTeX文档。
  • 支持通过PlUnit单元测试.
  • SWISH 提供了一个基于web的平台,用于在协作环境中开发和运行Prolog代码。

兼容性

  • 全面的内置谓词集,覆盖ISO标准的第1部分,事实上的爱丁堡Prolog标准,以及Quintus和SICStus Prolog的重要部分。与Ciao,YAP和GNU-Prolog的兼容性。尽管目标是尽可能保持兼容性,SWI-Prolog故意偏离ISO标准,以适应额外的功能,并与现代语言同步。的 [Extensions](<pldoc/man?section=extensions> and Directions

  • 约束逻辑编程, 提供库用于CHR (约束处理规则)、clp(FD)、 clp(R,Q) 及其它。

连通性

  • SWI-Prolog为HTTP提供了广泛的客户端和服务器库。HTTP服务器框架处理生成HTML、交换JSON或XML、认证、会话等。客户端和服务器都支持HTTPS。
  • 灵活快速的与CC++语言的接口。这个接口允许两种调用方式, 处理非确定性两种方式 和在C/C++项目中嵌入SWI-Prolog内核。与高级语言的接口,例如使用JPL, Python 和 C#是可用的。
  • 据库连接是由ODBC 接口提供的。
  • 低级网络支持包括sockets(both TCP 和 UDP)、SSL和TIPC。
  • 快速和灵活的库用于解析SGML/XML (HTML), 解析RDF存储和查询 RDF三重模型

可移植性

  • 移植到多种平台, 包括几乎所有的unix/linux平台,Windows(7和更高版本,32和64位版本),MacOS X(使用Xquartz用于图形)等等。 支持32位和64位硬件。源代码是普通的C99, 使用GNU autoconf自动配置(configure, make, make install).
  • 与机器无关的保存状态 (保存在一个平台上,使用另一个平台的虚拟机运行).
  • 用于Windows(32/64位)和MacOS X(64位)的常规二进制发行版,Ubuntu(稳定和开发) PPAs的二进制发行版
  • 定期分发完整的源代码包。源代码也可以通过GIT进行访问。

合法性

  • SWI-Prolog是在简化的BSD许可下发布的,也被称为BSD-2许可证。一些使用过的库和扩展包有不同的许可条件。运行的配置的许可可以通过运行license/0来检查。有关详细信息,请参阅license。

·        文档

o   参考手册

o   包

SWI-Prolog 文档

SWI-Prolog 参考手册

SWI-Prolog包文档

SWI-Prolog绑定到libarchive

SWI-Prolog BerkeleyDB接口

SWI-Prolog C-库

约束查询语言是SQL数据库的高级接口

SWI-Prolog HTTP支持

JPL:双向Prolog/Java接口

SWI-Prolog 绑定到BSD libedit

SWI-Prolog自然语言处理基元

SWI-Prolog ODBC接口

SWI-Prolog正则表达式库

SWI-Prolog支持PDT

Pengines: 逻辑编程很容易

一个用于SWI-Prolog的C++接口

SWI-Prolog源文档版本2

Prolog 单元测试

Google的协议缓冲区库

SWI-Prolog RDF解析器

SWI-Prolog绑定到GNU readline

SWI-Prolog 语义Web库3.0

SWI-Prolog SGML/XML解析器

SWI-PrologSSL接口

为SWI-Prolog管理外部表

透明的进程间通信(TIPC)库

SWI-Prolog Unicode库

SWI-Prolog YAML库

SWI-Prolog绑定到zlib

手册为一本书,平装本是可用的。

SWI-Prolog特性相关推荐

  1. swi prolog 和java_在Java和SWI Prolog之间连接 - java

    我正在尝试从Java运行swi prolog 我正在使用eclipse,并且已将jpl.jar插入到项目中(属性->库->添加外部jar),当我尝试运行程序时(这是jpl的示例,因此应该可 ...

  2. swi prolog 和java_java-如何在Android中使用swi-prolog

    我使用swi-prolog开发了一个prolog程序,并使用带有JPL.jar的常规java为其附加了接口, 运行得很好. 现在,我想使用android移动界面而不是java桌面界面执行相同操作.因此 ...

  3. swi prolog 和java_制作适用于GNU和SWI的Prolog代码

    可移植性是Prolog的最弱点之一 - ISO标准定义了current_prolog_flag / 2,但没有列出'name'实现的标志 . 我使用以下代码在SWI和YAP之间切换 swi :- pr ...

  4. swi plog 使用 learn prolog now的学习

    prolog工具的使用 swi prolog http://www.swi-prolog.org/ 下载了windows版本, 使用 ?- [swi('demo/likes')]. 来载入prolog ...

  5. Learn Prolog Now 翻译 - 第二章 - 合一和证明搜索 - 第一节, 合一

    Learn Prolog Now 翻译 - 第二章 - 合一和证明搜索 - 第一节, 合一 内容提要: 合一的定义: 一些合一的例子: 触发校验: 使用合一编程: 合一的定义 在上一章的知识库KB4中 ...

  6. 现在学 Prolog 合一和证明搜索

    转载自:https://mp.weixin.qq.com/s/SeMjK-_XR69jSQEQ-iRHMg 本章有两个主要目标: 1. 讨论Prolog中的合一,并解释Prolog合一与标准合一有何不 ...

  7. c语言实现逻辑谓词编程,头脑风暴-逻辑编程语言Prolog(01)

    Prolog语言介绍 Prolog的英语意思就是Programming in logic(逻辑编程).与几乎无所不能的C语言或是Python语言不同,Prolog不是一种通用语言,比如说它并不能够写出 ...

  8. Prolog教程 9

    Prolog的程序就是谓词的数据库,我们通常把这些谓词的子句写入Prolog的程序中的.在运行Prolog时,解释器首先把所有的子句调入到内存中.所以这些写在程序中的子句都是固定不变的.那么有没有办法 ...

  9. Prolog教程 2

    探索Prolog Prolog在英语中的意思就是Programming in LOGic(逻辑编程).它是建立在逻辑学的理论基础之上的, 最初是运用于自然语言的研究领域.然而现在它被广泛的应用在人工智 ...

  10. comp3411辅导assignment2

    对本文有疑问可以加微信 Tutor_0914联系.也可查看个人辅导网站了解详情: tutoryou辅导详情 文章目录 1 内容分析 1.1 1.2 模拟机器人 1.2.1 代码使用 1.1.4 tes ...

最新文章

  1. console.log(text)打印不出来的值,用console.log(text.length)却打印出来长度为1?
  2. Netty学习笔记(一)
  3. 计算机应用基础考证理论知识,《计算机应用基础》考试大纲
  4. android 按键消息,Android监听Home按键消息
  5. javascript php 性能,JavaScript知识点总结之如何提高性能_javascript技巧
  6. B - A Funny Bipartite Graph
  7. Solr-5.3.1安装配置
  8. 循环序列模型 —— 1.3循环神经网络
  9. 【hue】 Access denied to hive-未解决
  10. Ubuntu 18.04安装codeblocks 17-12
  11. 2017.4.14上午
  12. c# owc11 双Y轴
  13. macbook电池用什么软件测试,Wattagio Mac_Wattagio For Mac(电池检测软件) v1.1苹果电脑版 - 121苹果网...
  14. 移动端后台管理系统框架
  15. TiDB PCTP(PingCAP 认证 TiDB 数据库专家) 认证考试高分攻略
  16. 湖北专升本MySQL复习(MySQL数据库实用教程)——MySQL数据表的操作
  17. z变换判断稳定性和因果性_判断因果性.PPT
  18. rpm软件安装冲突:conflicts with
  19. 大文件的传输方案(scp以及文件切割)
  20. GAN之父Ian Goodfellow回归谷歌!将在DeepMind远程办公

热门文章

  1. PostGIS Geography Type
  2. Unity3D 录音功能 音频保存
  3. 软通动力机考题目汇总
  4. sklearn preprocessing 数据预处理 OneHotEncoder
  5. 如何完成微信小程序的登录功能
  6. c语言n阶方阵,如何用C语言编出一个N阶螺旋方阵?
  7. 车道检测(传统方法)
  8. 嵌入式linux下复位声卡驱动
  9. Dirty Approach之无招胜有招
  10. PowerMockerJacoco单元测试全解