¿Programación Relacional / Lógica en Python?


Soy un desarrollador de Python desde hace mucho tiempo y recientemente se me ha introducido a Prolog. Me encanta el concepto de usar reglas de relación para ciertos tipos de tareas, y me gustaría agregar esto a mi repertorio.

¿Existen buenas bibliotecas para la programación lógica en Python? He hecho algunas búsquedas en Google, pero solo encontré lo siguiente:

Jtauber's blog series on relatial_python

Me encantaría comparar con algunos otros...¡Gracias!

- aj

Author: theheadofabroom, 2009-12-16

7 answers

Quizás deberías buscar en Google "Programación lógica en Python". Pyke parece prometedor:

Pyke introduce una forma de Programación Lógica (inspirada en Prolog) para la comunidad de Python proporcionando un motor de inferencia basado en el conocimiento (sistema experto) escrito en 100% Python.

A diferencia de Prolog, Pyke se integra con Python, lo que le permite invocar a Pyke de Python y entremezclar declaraciones y expresiones de Python dentro su sistema experto gobierna.

 11
Author: Richie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-05 11:14:12

Puede usar pyDatalog, una biblioteca de programación lógica que desarrollé para Python implementando Datalog. También funciona con SQLAlchemy para consultar bases de datos relacionales usando cláusulas lógicas.

 12
Author: user474491,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-06 20:48:02

Otra opción es Yield Prolog

 3
Author: false,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-29 19:10:38

LogPy es una implementación de miniKanren, un lenguaje de programación relacional, en Python. Sigue en th tradición de core.logic, la solución de programación lógica preeminente en Clojure. LogPy fue diseñado para la interoperabilidad con bases de código preexistentes.

 3
Author: MRocklin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-09 14:38:10

También puedes mirar a Dee, que agrega relaciones a Python: http://www.quicksort.co.uk

 2
Author: greg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-15 15:53:11

Una implementación reciente de Prolog en Python (o más bien RPython) en Pyrolog . Todavía es bastante experimental.

 2
Author: false,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-29 14:52:19

También debe comprobar PyLog:

Http://cdsoft.fr/pylog/

Tiene una sintaxis e implementación muy limpia y sencilla.

 2
Author: Bernát,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-16 10:51:07