Consulte o registro de alterações.
Se você tiver o SWI-Prolog instalado, basta:
pip install -U pyswip
Consulte Primeiros passos para obter instruções detalhadas.
PySwip é uma interface Python-Prolog que permite consultar SWI-Prolog em seus programas Python. Possui uma interface de linguagem estrangeira SWI-Prolog, uma classe utilitária que facilita a consulta com Prolog e também uma interface Pythonic.
Como o PySwip usa SWI-Prolog como uma biblioteca compartilhada e ctypes para acessá-lo, ele não requer compilação para ser instalado.
PySwip foi oferecido a você pela comunidade PySwip. Obrigado a todos os contribuidores.
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
Uma base de conhecimento existente armazenada em um arquivo Prolog também pode ser consultada e consultada. Supondo que o nome do arquivo "knowledge_base.pl" e o Python estejam sendo executados no mesmo diretório de trabalho, ele é consultado da seguinte forma:
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
A funcionalidade principal do Prolog.query
é baseada no domínio público prolog.py de Nathan Denny.
PySwip foi usado em artigos científicos, dissertações e projetos de estudantes ao longo dos anos. Acesse a comunidade PySwip para obter mais informações e links da comunidade.
Você tem um projeto, vídeo ou publicação que usa/menciona PySwip? registre um problema ou envie uma solicitação pull.
Se quiser fazer referência ao PySwip em um documento LaTeX, você pode usar o arquivo BibTeX fornecido. Você também pode usar as seguintes informações para se referir ao PySwip:
PySwip é licenciado sob a licença MIT.