跳转到主要内容

一个简单的Python库,用于与SWI-Prologs Pengines交互

项目描述

这是一个模块,用于使Python与Prolog Pengines知识库进行交互。

API

创建一个基本的运行pengine服务器脚本,并使用swipl运行它。

:- use_module(library(http/thread_httpd)).
:- use_module(library(http/http_dispatch)).
:- use_module(library(pengines)).

server(Port) :- http_server(http_dispatch, [port(Port)]).

:- server(4242).

初始化一个基本的PengineBuilder

from pengines.Builder import PengineBuilder
from pengines.Pengine import Pengine

pengine_builder = PengineBuilder(urlserver="http://localhost:4242")

创建pengine查询对象。

pengine = Pengine(builder=pengine_builder)
pengine.create()

执行查询 – 注意没有结束句号 – Pengine会像这样执行查询‘ask(member(X, [1,2,3], [])).’

query = "member(X, [1,2,3])"
pengine.ask(query)
print(pengine.currentQuery.availProofs)

像这样迭代证明

while pengine.currentQuery.hasMore:
    pengine.doNext(pengine.currentQuery)
    print(pengine.currentQuery.availProofs)

prologterms库

Python库prologterms旨在使在Python中构建prolog程序和查询项更加容易。

有关如何结合pengines使用prologterms的示例,请参阅

https://pypi.ac.cn/project/prologterms/

from pengines.Builder import PengineBuilder
from pengines.Pengine import Pengine
from prologterms import TermGenerator, PrologRenderer, Program, Var

P = TermGenerator()
X = Var('X')
Y = Var('Y')
Z = Var('Z')
R = PrologRenderer()

p = Program(
    P.ancestor(X,Y) <= (P.parent(X,Z), P.ancestor(Z,Y)),
    P.ancestor(X,Y) <= P.parent(X,Y),
    P.parent('a','b'),
    P.parent('b','c'),
    P.parent('c','d')
)

q = P.ancestor(X,Y)

factory = PengineBuilder(urlserver="http://localhost:4242",
                         srctext=R.render(p),
                         ask=R.render(q))
pengine = Pengine(builder=factory, debug=True)
while pengine.currentQuery.hasMore:
    pengine.doNext(pengine.currentQuery)
for p in pengine.currentQuery.availProofs:
    print('{} <- {}'.format(p[X.name], p[Y.name]))

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源代码分发

pengines-0.1.8.tar.gz (8.1 kB 查看哈希值)

上传时间: 源代码

构建分发

pengines-0.1.8-py3-none-any.whl (9.2 kB 查看哈希值)

上传时间: Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面