Consulte el registro de cambios.
Si tienes SWI-Prolog instalado, es solo:
pip install -U pyswip
Consulte Primeros pasos para obtener instrucciones detalladas.
PySwip es una interfaz Python-Prolog que permite consultar SWI-Prolog en sus programas Python. Cuenta con una interfaz de idioma extranjero SWI-Prolog, una clase de utilidad que facilita las consultas con Prolog y también una interfaz Pythonic.
Dado que PySwip utiliza SWI-Prolog como biblioteca compartida y ctypes para acceder a ella, no requiere instalación de compilación.
PySwip fue presentado por la comunidad PySwip. Gracias a todos los contribuyentes.
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
También se puede consultar y consultar una base de conocimientos existente almacenada en un archivo Prolog. Suponiendo que el nombre de archivo "knowledge_base.pl" y Python se ejecuta en el mismo directorio de trabajo, se consulta así:
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
La funcionalidad principal de Prolog.query
se basa en el dominio público prolog.py de Nathan Denny.
PySwip se utilizó en artículos científicos, disertaciones y proyectos de estudiantes a lo largo de los años. Diríjase a PySwip Community para obtener más información y enlaces de la comunidad.
¿Tiene un proyecto, vídeo o publicación que utilice/mencione PySwip? presentar un problema o enviar una solicitud de extracción.
Si desea hacer referencia a PySwip en un documento LaTeX, puede utilizar el archivo BibTeX proporcionado. También puede utilizar la siguiente información para hacer referencia a PySwip:
PySwip tiene la licencia MIT.