Вопрос

Я хотел бы послушать людей, которые имеют реальный опыт программирования в использовании семантической библиотеки SWI-Prolog.

РЕДАКТИРОВАТЬ: Причина этого вопроса заключается в том, что среди многих людей, с которыми я разговаривал с опытом Prolog, большинство из них, похоже, использовали его для некоторых программ ИИ в своих академических проектах. Я хотел знать, использовал ли кто -нибудь это широко в производственной среде. Поскольку в реальном времени обслуживаемость, производительность отличается от выполнения проекта, чтобы получить хорошие оценки.

Как вы интегрировались с языком программирования, таким как Java?

РЕДАКТИРОВАТЬ: Как упомянуто в ответе, кажется, что услуги REST или использование иностранного интерфейса SWI Prolog - два лучших варианта.

Для чего вы использовали библиотеки Prolog (в контексте семантической сети)?

Вероятно, здесь не получит определенного ответа. Может быть, этот вопрос принадлежит семантическому переполнению. Сейчас у меня есть честная идея, и я продолжу это обсуждение на более подходящем форуме.

Какая среда разработки была использована?EMACS или его вариант, предоставленный SWI Prolog, кажется подавляющим ответом.

Я никогда не хотел, чтобы идея Intellij для Java. В конце концов, что я бы сделал, Auto завершит? Я понимаю необходимость языка на основе правил. С другой стороны, причина, по которой я обсуждал среду разработки, заключается в том, чтобы помочь мне проследить мое правило (отладка), а также, вероятно, определить аномалии в моих знаниях. дрянной и ограниченный. Но я не верю, что есть что -то еще.

Мне очень нравится идея использования SWI Prolog, но будет отодвигаться от него, если она влияет на производительность.

Как упомянуто в ответе, пролог должен использоваться для выполнения того, в чем он хорошо. Я всегда знал это и, следовательно, мой вопрос об интеграции с другим языком программирования. Похоже, что самая большая производительность Hog - это качество разработчиков и находится на этапе разработки. Проблемы в вашей системе могут быть бездействующими и нелегкими исправить, но с ней можно решить, используя набор вопросов для проверки достоверности вашей системы.

Примечание. Когда я упоминаю ответ, я имею в виду ответ, предоставленный @Littletable. Также для людей, заинтересованных в SWI Prolog для Semantic Web, тея выглядит интересно.

Это было полезно?

Решение

Отказ от ответственности: я не использовал SWI-Prolog в коммерческой/производственной среде, я не пробовал интерфейс SWI/Java (хотя в списке рассылки SWI-Prolog было сообщено в списке рассылки SWI-Prololog для работы), и я не заинтересован в Семантическая сеть.

Тем не менее, я написал большой и нетривиальный проект с использованием SWI-Prololog, и это было не игрушечное приложение-мне нужно было работать, чтобы закончить мое исследование. Поэтому у меня есть немного учетные данные для ответа на этот вопрос, даже если не все требуется и

В контексте большого проекта лучше всего рассматривать Prolog как язык, специфичный для домена для написания процедур поиска - мало чем отличается от SQL и хранения. Пролог делает одну вещь очень хорошо, и что он решает проблемы поиска. Если ваша проблема может быть сужена до поиска достоверного назначения на набор переменных, учитывая набор фактов и правил, Prolog-это ваше оружие выбора: вам не придется беспокоиться ни о чем в вашем коде, кроме настройки Запросы и правила. Он также будет работать достаточно быстро, особенно если вы собираете предикаты. Пролог часто медленно не потому, что он по своей сути медленная, а потому, что он запускает процедуры поиска в большом пространстве поиска.

Имея это в виду, вы можете интегрировать его с Java аналогичным образом, вы интегрируете SQL: Prolog позаботитесь о решении поиска. Он хранит постоянные данные и правила и запускает запросы. Приложение Java заботится о чем -либо еще.

Среда разработки-это немного мягкое место для пролога. Вы не получите необычную IDE - просто потому, что есть очень мало вещей, в которых можно быть необычным. Пролог программ редко имеет полную информацию о времени компиляции, поэтому вы не получите идеального автоматического завершения. Я просто использовал Emacs, с Prolog Shell всегда открыта. Для большинства вещей, Textula Tracer/Debugger сделает свое дело. SWI поставляется с собственным графическим отладчиком, но я не пробовал его.

Пролог имеет несколько редко известных преимуществ: встроенная структура анализа (правила DCG), отличная система макросов (расширение терминов) и мета-предприниматели (Call, Findall и т. Д.). Если вы знаете, как их использовать, это настоящие тузы в вашей колоде.

Подводя итог: повышает ли Prolog или повреждает производительность? Это зависит от того, что в настоящее время блокирует вашу производительность. Если вы тратите слишком много времени, задаваясь вопросом, как реализовать представление знаний и поиск в Java - просто используйте Prolog; Это не так, как будто вы реализуете свои собственные красные черные деревья вместо использования SQL. Если вы ищете производительность в мягкой реальности и порчу IDE - попробуйте что -нибудь еще.

Другие советы

Я действительно не использовал его в производственной среде, но интегрировал его в на основе Java/Eclipse на основе Bioclipse Workbench, чтобы использоваться в реальных сценариях, как часть моей диссертации. Кроме того, диссертация была сосредоточена на тестировании производительности и удобства использования интеграции Prolog в биоклипсе.

Я дам короткие ответы на вопросы, которые вы задавали ниже, но для всех заинтересованных «SWI-Prololog как инструмент семантической сети для семантического запроса в биоклипсе: интеграция и сравнительный анализ производительности», а также в моем соответствующем помечении Сообщения в блоге. Анкет Исходный код доступен в GitHub Repo.

Как вы интегрировались с языком программирования, таким как Java?

Я использовал Jpl java prolog interface

Для чего вы использовали библиотеки Prolog (в контексте семантической сети)?

Я использовал его, чтобы сделать некоторое соответствие рисунка с базой данных RDF около 60000 ЯМР спектров, содержащих пики различных высот. Я использовал это, чтобы проверить производительность SWI-Prololo для этой операции по сравнению с другими инструментами семантической сети, такими как Pellet и Jena (на основе Java). (Кстати, SWI-Prololy на данный момент превзошел оба этих инструмента).

Какая среда разработки была использована?

Eclipse RCP

Мне очень нравится идея использования SWI Prolog, но будет отодвигаться от него, если она влияет на производительность.

Мой опыт заключается в том, что в дополнение к повышению производительности для определенных проблем производительность для определенных операций также намного лучше, чем инструменты, написанные на обычных языках программирования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top