![]() ![]() The truth is in here
|
![]() |
Решатель Пролога основан на библиотеке tuProlog, у которой удалены JavaLibrary, IOLibrary и IOISOLibrary для предотвращения вмешательства пользователей в систему. Предикаты ISO стандарта оставлены. Документацию по прологу можно прочитать здесь (pdf).
Создание классификатора на Прологе следует начинать с формирования списка атрибутов и выделения среди них входных и выходных на вкладке Атрибуты. Текст Пролог-программы вводится на вкладке Программа
Проверить работу Пролог-программы можно на закладке с исходным кодом. Сообщения программы и Exceptions, будут выведены на экран.
Задача Пролог-программы на платформе Knowlus вычислить значения выходных атрибутов по значениям входных атрибутов. Значения входных атрибутов добавляются в теорию в виде факта:
input(['название входного атрибута'(значение),...]).Значения выходных атрибутов вычисляются системой, как подстановка для переменной Х при поиске решения для цели
output(X).Чтобы получить значение входного атрибута a можно воспользоваться вспомогательной функцией attribute, у которой первый аргумент - название атрибута, второй - список атрибутов со значениями (кортеж):
input(X), V is attribute('a', X).
Функция attribute выдает ошибку и прерывает выполнение программы, если атрибута a нет в кортеже. Для случаев, когда программа должна работать и при отсутствии некоторых атрибутов в кортеже, можно использовать предикат attribute(+название атрибута, +кортеж, -значение атрибута).
fire(address, input) - вызов других решателей на платформе Knowlus.
address - текстовый адрес (URI) решателя в формате /id_решателя#id_компонента. Если компонент находится в том же контейнере, что и Пролог программа, то id_решателя можно не указывать.
input - список со входным атрибутами и их значениями (кортеж).
Результат выполнения fire - список с выходными атрибутами и их значениями (кортеж): ['название выходного атрибута'(значение),...].
Предикаты со значениями атрибутов можно вставить в код по нажатию Ctrl-Пробел.
На поиск решения платформой Knowlus выделяется 1 с. процессорного времени и низким приоритетом. Этого вполне хватает для большинства пролог-программ с умеренной степенью рекурсии.
Скорее всего, вы не поставили точку в конце цели.
Из свободных библиотек rule-based engine только у tuProlog есть механизм ограничения доступа к объектам Java.