변경 로그를 참조하세요.
SWI-Prolog가 설치되어 있으면 다음과 같습니다.
pip install -U pyswip
자세한 지침은 시작하기를 참조하세요.
PySwip은 Python 프로그램에서 SWI-Prolog를 쿼리할 수 있는 Python-Prolog 인터페이스입니다. 이는 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
Prolog 파일에 저장된 기존 지식 기반도 참조하고 쿼리할 수 있습니다. 파일 이름이 "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
의 핵심 기능은 Nathan Denny의 공개 도메인 prolog.py를 기반으로 합니다.
PySwip은 수년 동안 과학 기사, 논문 및 학생 프로젝트에 사용되었습니다. 자세한 정보와 커뮤니티 링크를 보려면 PySwip 커뮤니티를 방문하세요.
PySwip을 사용/언급하는 프로젝트, 비디오 또는 출판물이 있습니까? 문제를 제기하거나 끌어오기 요청을 보내세요.
LaTeX 문서에서 PySwip을 참조하려면 제공된 BibTeX 파일을 사용할 수 있습니다. 다음 정보를 사용하여 PySwip을 참조할 수도 있습니다.
PySwip은 MIT 라이선스에 따라 라이선스가 부여됩니다.