Question

Je travaille sur une application en Java nécessitant la déduction de règles logiques complexes dans le cadre de ses fonctionnalités. J'aimerais coder mes déductions logiques dans Prolog ou dans un autre langage de programmation logique / contrainte, au lieu de Java, car je pense que le code résultant sera beaucoup plus simple et plus facile à gérer.

J’ai cherché Google sur des implémentations Java intégrées sur Prolog et en ai trouvé un certain nombre, chacune avec très peu de documentation. Mes critères de sélection (modestes) sont:

  • doit pouvoir être intégré à Java (par exemple, il peut être associé à mon paquet Java au lieu de nécessiter des installations natives sur des programmes externes)
  • interface simple à utiliser à partir de Java (pour déclencher des déductions, inspecter les résultats et ajouter des règles)
  • venez avec au moins quelques exemples sur la façon de l'utiliser
  • ne doit pas nécessairement être Prolog, mais d'autres langages de programmation logique / contrainte répondant aux critères ci-dessus conviendraient également à mes besoins.

Quels sont mes choix et quels sont leurs avantages et inconvénients?

Était-ce utile?

La solution

Selon Wikipedia , les versions suivantes de Prolog ont des interfaces Java. J'ai lié les pages principales à leur sujet:

Bonne chance dans vos recherches!

Autres conseils

Prologue SWI Une implémentation très populaire semble avoir une interface Java, comme le fait SiCStus , qui serait plus simple que d'utiliser JNI pour instancier une instance dans votre processus Java. J'ai utilisé les deux à partir de C il y a longtemps et les recommande. Ma préférence serait SWI car elle est open-source et, d’après mon expérience, la mise en œuvre de facto .

La documentation de l'interface Java de SWI semble adéquate et le processus d'intégration très simple.

J'ai eu besoin de faire la même chose il y a 2 ans. J'ai utilisé une interface SWI appelée JPL . Il vous permet de charger un fichier Prolog, de l’affirmer et d’interroger. Cela nécessitait une installation de SWI Prolog mais ce n’était pas du tout un problème. SWI Prolog est disponible sur de nombreuses plates-formes .

J'ai également essayé des alternatives implémentées à 100% en Java et ne nécessitant pas de programmes externes. Tous étaient buggés ou difficiles à utiliser. Ne perdez pas votre temps.

Le

le prologue Amzi existe depuis un moment. Je l'ai utilisé brièvement mais pas la version intégrée. Cependant, ils ont une bonne documentation et un support peut être acheté. Ils ont un port Java, donc ça vaut le coup d’être.

LPA propose LPA Intelligence Server comme moyen d’intégrer son moteur Prolog dans toute une variété de langages courants, notamment Java, .Net, etc.

Clive

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

Deux prologues commerciaux écrits en Java: Minerva de IF Computer Japan et Jekejeke. Les deux sont très proches de l'ISO.

Clojure est un langage de type Lisp basé sur une machine virtuelle Java avec une bibliothèque ( core.logic ) prenant en charge la programmation basée sur la logique et les contraintes. Clojure dispose également d’un grand nombre d’installations permettant de générer des classes java et de travailler avec du code java , afin de faciliter la communication entre les deux. les langues est trivial.

Vous pouvez également consulter le moteur Prol que j'ai créé. Il vous permet d’intégrer Prolog dans vos programmes Java (mais ce n’est pas très rapide)

Prova 3.0 http://www.prova.ws est presque terminé. Cependant, il ne s’agit pas simplement d’un autre Prolog, mais d’un mélange de styles de programmation, particulièrement utile pour une intégration Java bi-directionnelle facile, la programmation par agents réactifs, l’intégration avec ESB, la logique de workflow et le traitement des événements. Cette version étant une réécriture complète à partir de zéro, certaines fonctionnalités plus anciennes, telles que l'intégration OWL, sont manquantes, mais doivent revenir dans la prochaine révision.

Il existe Mini-Kanren pour Scala , qui vous donne une implémentation JVM native de un langage de programmation logique, basé sur des clauses de Horn, moderne, maigre, piratable.

JSetL est une autre option intéressante que j'ai récemment rencontrée. Ce n'est pas un Prolog, mais une bibliothèque de programmation sous contrainte pour Java, avec prise en charge des variables logiques, unification, résolution de contraintes et non déterminisme.

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

Il existe plusieurs implémentations de Prolog en Java. Ils ne sont pas très rapides, mais faciles à utiliser à partir de Java. Les exemples sont:   TuProlog ou PrologCafe Vous pouvez également consulter la thèse de bachelor suivante sur le thème Exécution et analyse des programmes Prolog en Java .

Prof. Paul Tarau mis à disposition à partir de sa page plusieurs mises en œuvre

Jinni Prolog

Prologue du noyau

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top