Ответ 1
Согласно Wikipedia, следующие версии Prolog имеют интерфейсы Java. Я связался с основными страницами для них:
- BProlog
- Ciao Prolog
- SICStus Prolog
- SWI Prolog
- TuProlog (реализовано на Java)
- Протокол LPA
Удачи вам в поиске!
Я работаю над приложением на Java, которое должно выполнять некоторые сложные логические выводы правил как часть его функциональности. Я бы хотел закодировать свои логические выводы в Prolog или какой-то другой язык программирования с логикой/ограничением, вместо Java, так как я считаю, что полученный код будет значительно проще и удобнее обслуживать.
Я googled для встроенных реализаций Java на Prolog и нашел их число, каждый из которых имеет очень небольшую документацию. Мои (скромные) критерии выбора:
Какие у меня есть варианты и каковы их преимущества и недостатки?
Согласно Wikipedia, следующие версии Prolog имеют интерфейсы Java. Я связался с основными страницами для них:
Удачи вам в поиске!
Пролог SWI. Очень популярная реализация, похоже, имеет интерфейс Java, как и SiCStus, что было бы проще, чем использование JNI для создания экземпляра в вашем Java-процесс. Я использовал оба из C довольно давно и рекомендую их. Мое предпочтение будет SWI, поскольку оно является открытым исходным кодом и по моему опыту является фактической реализацией.
Документация для интерфейса SWI Java кажется адекватной, а процесс внедрения довольно прост.
Мне нужно было сделать то же самое 2 года назад. Я использовал интерфейс SWI, который называется JPL. Он позволяет загружать файл Prolog, утверждать на нем и запрашивать его. Это требует установки SWI Prolog, но это не проблема вообще. SWI Prolog доступен для многих платформ.
Я также пробовал альтернативы, которые были реализованы на Java на 100% и не требовали внешних программ. Все они были глючными или сложными в использовании. Не тратьте впустую свое время.
Amzi proog существует некоторое время. Я использовал его кратко, но не встроенную версию. однако у них есть хорошая документация и поддержка может быть куплена. У них есть порт Java, поэтому, возможно, стоит посмотреть.
LPA предлагает сервер LPA Intelligence Server как способ внедрения своего движка Prolog в целом ряде основных языков, включая Java,.Net и т.д.
Клайв
Вы также можете посмотреть движок Prol, который я создал. Это позволяет встраивать Prolog в ваши Java-программы (но это не очень быстро)
Два коммерческих Пролога, написанных на Java: Minerva от IF Computer Japan и Jekejeke. Оба они очень близки к ISO.
Clojure - это основанный на JVM язык Lisp с библиотекой (core.logic), поддерживающие логику и основанное на ограничении программирование. Clojure также имеет большое количество возможностей для генерации классов Java и работающих с java-кодом, поэтому взаимодействие между двумя языками тривиально.
Prova 3.0 http://www.prova.ws близится к завершению. Это, однако, не просто еще один пролог, но сочетание стилей программирования, в частности, полезно для простой двунаправленной интеграции Java, программирования реактивных агентов, интеграции с ESB, логикой рабочего процесса и обработки событий. Эта версия представляет собой полную переписку с нуля, поэтому некоторые более старые функции, такие как интеграция OWL, отсутствуют, но должны возвращаться в следующей версии.
Здесь Mini-Kanren для Scala, который дает вам встроенную реализацию JVM из худой, взломанной, современной версии Horn-clause логического языка программирования.
Еще один полезный вариант, с которым я недавно столкнулся, - JSetL. Это не Пролог, но библиотека программирования ограничений для Java с поддержкой логических переменных, унификация, решение ограничений и недетерминированность.
В Java существует ряд реализаций Prolog. Они не очень быстро, но удобны в использовании из Java. Примерами являются: TuProlog или PrologCafe Вы также можете взглянуть на следующий диплом бакалавра по теме Выполнение и анализ программ Prolog в Java.
Prof. Пол Тарау предоставил свою страницу несколько реализаций