Pregunta

Estoy trabajando en una aplicación en Java, que necesita hacer algunas deducciones complejas de reglas lógicas como parte de su funcionalidad. Me gustaría codificar mis deducciones lógicas en Prolog o en algún otro lenguaje de programación de lógica / restricción, en lugar de Java, ya que creo que el código resultante será significativamente más simple y más fácil de mantener.

Busqué en Google las implementaciones Java integradas en Prolog, y encontré varias de ellas, cada una con muy poca documentación. Mis criterios de selección (modestos) son:

  • debe ser incrustable en Java (por ejemplo, se puede agrupar con mi paquete java en lugar de requerir instalaciones nativas en programas externos)
  • interfaz simple para usar desde Java (para iniciar deducciones, inspeccionar resultados y agregar reglas)
  • incluye al menos algunos ejemplos sobre cómo usarlo
  • no necesariamente tiene que ser Prolog, pero otros lenguajes de programación de lógica / restricción con los criterios anteriores también se adaptarían a mis necesidades.

¿Qué opciones tengo y cuáles son sus ventajas y desventajas?

¿Fue útil?

Solución

Según Wikipedia , las siguientes versiones de Prolog tienen interfaces Java. He vinculado a las páginas principales para ellos:

¡Buena suerte con tu búsqueda!

Otros consejos

SWI prolog Una implementación muy popular parece tener una interfaz Java al igual que SiCStus que sería más fácil que usar JNI para instanciar una instancia en su Proceso Java. He usado ambos de C hace bastante tiempo y los recomiendo. Mi preferencia sería SWI, ya que es de código abierto y, según mi experiencia, la implementación de facto .

La documentación para la interfaz Java de SWI parece ser adecuada, y el proceso de incrustación es bastante sencillo.

Necesito hacer lo mismo hace 2 años. Solía ?? interfaz SWI que se llama JPL . Le permite cargar un archivo Prolog, afirmarlo y consultarlo. Requiere una instalación de SWI Prolog, pero eso no es un problema en absoluto. SWI Prolog está disponible para muchas plataformas .

También probé alternativas que se implementaron al 100% en Java y no requirieron programas externos. Todos tenían errores o eran difíciles de usar. No pierdas tu tiempo.

El prólogo de Amzi ha existido por un tiempo. Lo he usado brevemente pero no la versión incrustada. Sin embargo, tienen buena documentación y se puede comprar soporte. Tienen un puerto Java, por lo que vale la pena echarle un vistazo.

LPA ofrece el Servidor de Inteligencia LPA como una forma de integrar su motor Prolog en una gran variedad de lenguajes principales incluyendo Java, .Net, etc.

Clive

http://www.lpa.co.uk/int.htm

Dos Prólogos comerciales escritos en Java: Minerva por IF Computer Japan y Jekejeke. Ambos están muy cerca de ISO.

Clojure es un lenguaje tipo Lisp basado en JVM con una biblioteca ( core.logic ) que admite programación basada en lógica y restricciones. Clojure también tiene una gran cantidad de facilidades para generar clases java y trabajando con código java , por lo que la interacción entre los dos los idiomas son triviales.

También puedes echar un vistazo a el motor de Prol que creé. Le permite incrustar Prolog en sus programas Java (pero no es muy rápido)

Prova 3.0 http://www.prova.ws está a punto de completarse. Sin embargo, no es solo otro Prolog, sino una combinación de estilos de programación, particularmente útil para una fácil integración bidireccional de Java, programación de agentes reactivos, integración con ESB, lógica de flujo de trabajo y procesamiento de eventos. Esta versión es una reescritura completa desde cero, por lo que faltan algunas características anteriores, como la integración de OWL, pero es probable que vuelvan en la próxima revisión.

Hay Mini-Kanren para Scala , que le ofrece una implementación JVM nativa de un lenguaje de programación lógico basado en la cláusula de Horn moderno, delgado y hackable.

Otra opción valiosa que encontré recientemente es JSetL. No es un prólogo, pero una biblioteca de programación de restricciones para Java, con soporte para variables lógicas, unificación, resolución de restricciones y no determinismo.

http://prmat.math.unipr.it/~gianfr /JSetL/index.html

Hay varias implementaciones de Prolog en Java. No son terriblemente rápidos, pero convenientes de usar desde Java. Ejemplos son:   TuProlog o PrologCafe También puede echar un vistazo a la siguiente tesis de licenciatura sobre el tema de Ejecución y análisis de programas Prolog en Java .

Prof. Paul Tarau disponible desde su página varias implementaciones

Jinni Prolog

Kernel Prolog

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top