Встроенный интерпретатор пролога / компилятор для Java - PullRequest
43 голосов
/ 30 ноября 2009

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

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

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

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

Ответы [ 13 ]

22 голосов
/ 30 ноября 2009

Согласно Википедии , следующие версии Prolog имеют интерфейсы Java. Я связался с основными страницами для них:

Удачи в вашем поиске!

8 голосов
/ 30 ноября 2009
Пролог

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

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

6 голосов
/ 30 ноября 2009

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

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

4 голосов
/ 30 ноября 2009

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

3 голосов
/ 22 декабря 2011

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

3 голосов
/ 06 июля 2011

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

3 голосов
/ 05 июля 2011

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

3 голосов
/ 22 марта 2010

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

Clive

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

2 голосов
/ 20 ноября 2013

Prof. Пол Тарау сделал доступным свою страницу несколько реализаций

Джинни Пролог

Ядро Пролог

2 голосов
/ 21 апреля 2010

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

...