См. журнал изменений.
Если у вас установлен SWI-Prolog, это просто:
pip install -U pyswip
Подробные инструкции см. в разделе «Начало работы».
PySwip — это интерфейс Python-Prolog, который позволяет запрашивать SWI-Prolog в ваших программах Python. Он имеет интерфейс SWI-Prolog для иностранных языков, служебный класс, который упрощает выполнение запросов с помощью Prolog, а также интерфейс Pythonic.
Поскольку PySwip использует SWI-Prolog в качестве общей библиотеки и ctypes для доступа к ней, установка компиляции не требуется.
PySwip был предложен вам сообществом PySwip. Спасибо всем участникам.
from pyswip import Prolog
Prolog . assertz ( "father(michael,john)" )
Prolog . assertz ( "father(michael,gina)" )
list ( Prolog . query ( "father(michael,X)" )) == [{ 'X' : 'john' }, { 'X' : 'gina' }]
for soln in Prolog . query ( "father(X,Y)" ):
print ( soln [ "X" ], "is the father of" , soln [ "Y" ])
# michael is the father of john
# michael is the father of gina
Также можно просмотреть и запросить существующую базу знаний, хранящуюся в файле Пролога. Предполагая, что имя файла «knowledge_base.pl» и Python запускаются в одном и том же рабочем каталоге, обращение к нему происходит следующим образом:
from pyswip import Prolog
Prolog . consult ( "knowledge_base.pl" )
from pyswip import Prolog , registerForeign
def hello ( t ):
print ( "Hello," , t )
hello . arity = 1
registerForeign ( hello )
Prolog . assertz ( "father(michael,john)" )
Prolog . assertz ( "father(michael,gina)" )
print ( list ( Prolog . query ( "father(michael,X), hello(X)" )))
from pyswip import Functor , Variable , Query , call
assertz = Functor ( "assertz" , 1 )
father = Functor ( "father" , 2 )
call ( assertz ( father ( "michael" , "john" )))
call ( assertz ( father ( "michael" , "gina" )))
X = Variable ()
q = Query ( father ( "michael" , X ))
while q . nextSolution ():
print ( "Hello," , X . value )
q . closeQuery ()
# Outputs:
# Hello, john
# Hello, gina
Основная функциональность Prolog.query
основана на общедоступном файле prolog.py Натана Денни.
PySwip на протяжении многих лет использовался в научных статьях, диссертациях и студенческих проектах. Посетите сообщество PySwip, чтобы получить дополнительную информацию и ссылки на сообщество.
Есть ли у вас проект, видео или публикация, в которых используется или упоминается PySwip? сообщите о проблеме или отправьте запрос на включение.
Если вы хотите сослаться на PySwip в документе LaTeX, вы можете использовать предоставленный файл BibTeX. Вы также можете использовать следующую информацию для ссылки на PySwip:
PySwip лицензируется по лицензии MIT.