Подтвердить что ты не робот

Встроенный Prolog Interpreter/Компилятор для Java

Я работаю над приложением на Java, которое должно выполнять некоторые сложные логические выводы правил как часть его функциональности. Я бы хотел закодировать свои логические выводы в Prolog или какой-то другой язык программирования с логикой/ограничением, вместо Java, так как я считаю, что полученный код будет значительно проще и удобнее обслуживать.

Я googled для встроенных реализаций Java на Prolog и нашел их число, каждый из которых имеет очень небольшую документацию. Мои (скромные) критерии выбора:

  • должен быть встроен в Java (например, может быть связан с моим пакетом java вместо необходимости использования каких-либо встроенных установок на внешних программах)
  • простой интерфейс для использования с Java (для инициирования вычетов, проверки результатов и добавления правил)
  • Приведите, по крайней мере, несколько примеров того, как его использовать.
  • необязательно должен быть Prolog, но другие языки программирования с логикой/ограничениями с указанными выше критериями также соответствовали бы моим потребностям.

Какие у меня есть варианты и каковы их преимущества и недостатки?

4b9b3361

Ответ 2

Пролог SWI. Очень популярная реализация, похоже, имеет интерфейс Java, как и SiCStus, что было бы проще, чем использование JNI для создания экземпляра в вашем Java-процесс. Я использовал оба из C довольно давно и рекомендую их. Мое предпочтение будет SWI, поскольку оно является открытым исходным кодом и по моему опыту является фактической реализацией.

Документация для интерфейса SWI Java кажется адекватной, а процесс внедрения довольно прост.

Ответ 3

Мне нужно было сделать то же самое 2 года назад. Я использовал интерфейс SWI, который называется JPL. Он позволяет загружать файл Prolog, утверждать на нем и запрашивать его. Это требует установки SWI Prolog, но это не проблема вообще. SWI Prolog доступен для многих платформ.

Я также пробовал альтернативы, которые были реализованы на Java на 100% и не требовали внешних программ. Все они были глючными или сложными в использовании. Не тратьте впустую свое время.

Ответ 4

Amzi proog существует некоторое время. Я использовал его кратко, но не встроенную версию. однако у них есть хорошая документация и поддержка может быть куплена. У них есть порт Java, поэтому, возможно, стоит посмотреть.

Ответ 5

LPA предлагает сервер LPA Intelligence Server как способ внедрения своего движка Prolog в целом ряде основных языков, включая Java,.Net и т.д.

Клайв

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

Ответ 6

Вы также можете посмотреть движок Prol, который я создал. Это позволяет встраивать Prolog в ваши Java-программы (но это не очень быстро)

Ответ 7

Два коммерческих Пролога, написанных на Java: Minerva от IF Computer Japan и Jekejeke. Оба они очень близки к ISO.

Ответ 8

Clojure - это основанный на JVM язык Lisp с библиотекой (core.logic), поддерживающие логику и основанное на ограничении программирование. Clojure также имеет большое количество возможностей для генерации классов Java и работающих с java-кодом, поэтому взаимодействие между двумя языками тривиально.

Ответ 9

Prova 3.0 http://www.prova.ws близится к завершению. Это, однако, не просто еще один пролог, но сочетание стилей программирования, в частности, полезно для простой двунаправленной интеграции Java, программирования реактивных агентов, интеграции с ESB, логикой рабочего процесса и обработки событий. Эта версия представляет собой полную переписку с нуля, поэтому некоторые более старые функции, такие как интеграция OWL, отсутствуют, но должны возвращаться в следующей версии.

Ответ 10

Здесь Mini-Kanren для Scala, который дает вам встроенную реализацию JVM из худой, взломанной, современной версии Horn-clause логического языка программирования.

Ответ 11

Еще один полезный вариант, с которым я недавно столкнулся, - JSetL. Это не Пролог, но библиотека программирования ограничений для Java с поддержкой логических переменных, унификация, решение ограничений и недетерминированность.

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

Ответ 12

В Java существует ряд реализаций Prolog. Они не очень быстро, но удобны в использовании из Java. Примерами являются:  TuProlog или PrologCafe Вы также можете взглянуть на следующий диплом бакалавра по теме Выполнение и анализ программ Prolog в Java.