Frage

Ich arbeite an einer Anwendung in Java, die einige komplexe Logik Regel Abzüge im Rahmen ihrer Funktionalität tun muss. Ich mag meine Logik Abzüge in Prolog oder einem anderen Logik / Einschränkungs Programmiersprache kodieren, anstelle von Java, wie ich der resultierenden Code glauben wird deutlich einfacher und wartbar.

Ich googeln für Embedded Java-Implementierungen auf Prolog und fanden viele von ihnen, die jeweils mit sehr wenig Dokumentation. Meine (bescheiden) Auswahlkriterien sind:

  • sollte in Java embeddable sein (zum Beispiel mit meinem Java-Paket werden kann, anstatt dass irgendwelche nativen Installationen auf externe Programme gebündelt)
  • einfache Schnittstelle von Java zu verwenden (für Abzüge, die Kontrolle Ergebnisse und das Hinzufügen von Regeln initiieren)
  • kommen mit mindestens einige Beispiele, wie man es verwenden
  • muss nicht unbedingt Prolog, aber auch andere Logik / Einschränkungs Programmiersprachen mit den oben genannten Kriterien meine Bedürfnisse anzupassen, würde auch sein.

Welche Möglichkeiten habe ich und was sind ihre Vor- und Nachteile?

War es hilfreich?

Lösung

Nach Wikipedia die folgenden Versionen von Prolog Java-Schnittstellen verfügen. Ich habe für sie zu den wichtigsten Seiten verlinkt:

Viel Glück bei der Suche!

Andere Tipps

SWI Prolog Eine sehr beliebte Implementierung scheint eine Java-Schnittstelle zu haben, wie SICStus tut, das wäre einfacher als JNI eine Instanz in Ihrem Java-Prozess zu instanziiert. Ich habe vor sowohl von C schon eine ganze Weile benutzt und ihnen empfehlen. Mein prefference würde SWI sein, da es Open Source ist und aus meiner Erfahrung der de facto Umsetzung.

Die Dokumentation für SWI Java-Schnittstelle scheint angemessen, und der Einbettungsprozess vorwärts ganz gerade zu sein.

Ich habe benötigt vor den gleichen 2 Jahren zu tun. Ich benutzte SWI-Schnittstelle, die JPL genannt wird. Damit können Sie eine Prolog-Datei laden, behaupten drauf und Abfrage auf sie. Es ist eine Installation von SWI Prolog erforderlich, aber das ist überhaupt nicht Problem. SWI Prolog ist für viele Plattformen .

Ich habe auch Alternativen versucht, das zu 100% in Java implementiert waren und nicht externe Programme erforderlich. Alle von ihnen waren Buggy oder schwer zu bedienen. Vergeuden Sie nicht Ihre Zeit.

Amzi Prologs hat sich für eine Weile. Ich habe es kurz, aber nicht die integrierte Version verwendet. jedoch haben sie eine gute Dokumentation und Support gekauft werden können. Sie haben Java-Port, so dass es einen Blick wert sein könnte.

LPA funktioniert die LPA Intelligence Server als eine Möglichkeit bieten, die Einbettung seinen Prolog-Engine in einer ganzen Reihe von Mainstream-Sprachen wie Java, .Net etc.

Clive

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

Zwei kommerzieller Prolog in Java geschrieben: Minerva von IF Computern Japan und Jekejeke. Beide sind sehr nah an ISO.

Clojure ist eine JVM basiert Lisp-ähnliche Sprache mit einer Bibliothek ( core.logic ) Logik und randbedingungsbasierten Programmierung zu unterstützen. Clojure hat auch eine große Anzahl von Einrichtungen für die Java-Klassen zu erzeugen und die Arbeit mit Java-Code , so inter-op zwischen den beiden Sprachen sind trivial.

Prova 3.0 http://www.prova.ws kurz vor der Fertigstellung. Es ist jedoch nicht nur ein Prolog, sondern eine Mischung aus Programmierstilen, insbesondere nützlich für die einfache bidirektionale Java-Integration, reaktive Agenten-Programmierung, Integration mit ESB, Workflow-Logik und Ereignisverarbeitung. Diese Version ist eine komplette Neufassung von Null so einige älteren Funktionen, wie OWL-Integration fehlt, sondern sind verpflichtet, bei der nächsten Revision zurück.

Es gibt Mini-Kanren für Scala , die Sie über eine native JVM Implementierung gibt der eine schlanke, hackable, moderne Horn-Klausel basierte Logik-Programmiersprache.

Eine weitere lohnende Option, die ich vor kurzem über gekommen ist JSetL. Es ist kein Prolog, sondern mit Unterstützung für logische Variablen eine Constraint-Programmierung Bibliothek für Java, Vereinigung, Constraint Lösung und Nicht-Determinismus.

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

Es gibt eine Reihe von Prolog-Implementierungen in Java. Sie sind nicht sehr schnell, aber bequem zu bedienen aus Java. Beispiele hierfür sind:   TuProlog oder PrologCafe Sie können auch einen Blick auf die folgenden Bachelorarbeit haben zum Thema Durchführung und Analyse von Prolog-Programme in Java .

Prof. Paul Tarau zur Verfügung gestellt von seine Seite mehrere Implementierungen

Jinni Prolog

Kernel Prolog

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top