Pergunta

Eu estou trabalhando em um aplicativo em Java, que as necessidades para fazer algumas complexas deduções regras lógicas como parte de sua funcionalidade. Eu gostaria de código minhas deduções lógicas em Prolog ou alguma outra linguagem de programação lógica / restrição, em vez de Java, como eu acredito que o código resultante será significativamente mais simples e mais sustentável.

Eu pesquisei para implementações de Java incorporados em Prolog, e encontrou vários deles, cada um com muito pouca documentação. Meus critérios (modesto) de seleção são:

  • deve ser embutido em Java (por exemplo, pode ser empacotado com o meu pacote java em vez de exigir quaisquer instalações nativas em programas externos)
  • interface simples para uso de Java (para iniciar deduções, inspecionando resultados, e adicionando regras)
  • vêm com pelo menos alguns exemplos sobre como usá-lo
  • não têm necessariamente de ser Prolog, mas outras lógicas / linguagens de programação de restrição com os critérios acima iria atender minhas necessidades, também.

Quais as opções que eu tenho e quais são as suas vantagens e desvantagens?

Foi útil?

Solução

De acordo com a Wikipedia , as seguintes versões do Prolog têm interfaces Java. Tenho ligado às páginas principais para eles:

Boa sorte com sua pesquisa!

Outras dicas

SWI Prolog Uma implementação muito popular parece ter um Java interface como faz SICStus que seria fácil do que usar JNI para instanciar uma instância em seu processo de Java. Eu usei tanto de C há bastante tempo e não recomendá-los. Meu prefference seria SWI como é open-source e da minha experiência a de facto implementação.

A documentação para interface Java do SWI parece ser adequada, e o processo de incorporação bastante simples.

Eu precisava fazer os mesmos 2 anos. Eu costumava SWI de interface que é chamado JPL . Ele permite que você carregar um arquivo Prolog, assert nele e consulta sobre ele. Ele exigiu uma instalação de SWI Prolog mas isso não é problema de todos. SWI Prolog é disponível para muitas plataformas .

Eu também tentei alternativas que eram 100% implementado em Java e não necessários programas externos. Todos eles foram buggy ou difíceis de usar. Não desperdice o seu tempo.

Anzi prólogo tem sido em torno de um tempo. Eu usei-o brevemente, mas não a versão integrada. no entanto, eles têm uma boa documentação e suporte pode ser comprado. Eles têm porta de Java por isso pode valer a pena dar uma olhada.

LPA faz oferta a LPA Intelligence Server como uma maneira de incorporar o seu motor Prolog dentro de toda uma variedade de línguas tradicionais, incluindo Java, .Net etc

Clive

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

Dois Prologs comerciais escritos em Java: Minerva por IF Computer Japão e Jekejeke. Ambos estão muito perto de ISO.

Clojure é um Lisp-like com base JVM linguagem com uma biblioteca ( core.logic ) apoiando a lógica ea restrição de programação baseada. Clojure também tem um grande número de instalações para a geração de classes Java e que trabalham com código java , de modo inter-op entre os dois línguas é trivial.

Você também pode dar uma olhada em o motor Prol que eu criei. Ele permite que você Prolog incorporar em seus programas Java (mas não é muito rápido um)

http://www.prova.ws é quase completo. É, no entanto, não apenas um outro Prolog, mas uma mistura de estilos de programação, particularmente, útil para a fácil integração bidirecional Java, programação agente reativo, integração com o ESB de, a lógica de fluxo de trabalho e processamento de eventos. Esta versão é uma reescrita completa de zero para alguns recursos mais antigos, como a integração OWL, estão faltando, mas são obrigados a voltar na próxima revisão.

Mini-Kanren para Scala , que lhe dá uma implementação JVM nativo de uma magra, hackable, moderno Horn-cláusula baseado na linguagem de programação lógica.

Outra opção interessante Recentemente, deparei é JSetL. Não é uma Prolog, mas uma biblioteca de programação de restrição para Java, com suporte para variáveis ??lógicas, unificação, resolução de restrição e não-determinismo.

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

Há uma série de implementações Prolog em Java. Eles não são muito rápido, mas conveniente para o uso de dentro Java. Exemplos são: TuProlog ou PrologCafe Você também pode ter um olhar para a seguinte tese de bacharelado sobre o tema da execução e análise de Prolog Programas em Java .

Prof. Paul Tarau disponibilizados a partir sua página várias implementações

Jinni Prolog

Kernel Prolog

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top