Какие технологии подходят для создания веб-страницы, которая позволяет пользователям добавлять факты, редактировать факты и запрашивать эту информацию? Я создавал базу знаний и правила вывода на Прологе, но хотел бы сделать раздел фактов и запросы доступными в Интернете. В частности, я ищу следующие функции:
- Веб-интерфейс, в котором конечные пользователи могут добавлять и редактировать факты, например «курение вызывает рак с вероятностью 0,02». Желательно, чтобы это было что-то доступное и не предполагающее написание Пролога или другого кода (например, выбор темы, отношения и объекта из трех списков). Здесь также было бы неплохо иметь некоторую функциональность для проверки того, существуют ли уже какие-то концепции в базе знаний (например, если пользователь вводит факт о раке, а концепция рака уже присутствует в базе знаний, это должно быть показано, желательно также родственные понятия). Может быть, некоторые выпадающие меню или списки могли бы этого добиться.
- Функциональность для управления профилями пользователей, паролями, привилегиями и т. Д.
- Веб-интерфейс, в котором конечные пользователи могут запрашивать раздел фактов, например «каковы причины рака?». Правила, которые вычисляют ответы на запросы, не будут редактироваться конечными пользователями (вместо этого я хочу сделать это). Они просто видят результаты в удобном для восприятия формате.
- Язык, который является Прологом или столь же мощным, как Пролог, который я (а не конечные пользователи) могу использовать для создания правил вывода (которые генерируют ответы на запросы пользователей).
- Если возможно, некоторые средства для конечных пользователей, чтобы получить графическое представление базы знаний.
Краткое изложение того, что я имею в виду с точки зрения программы на Прологе:
%This kind of thing should be entered by end users in a friendly interface (i.e. not code like here).
causes(smoking, cancer, prob(0.05)).
causes(cancer, death, prob(0.1)).
%This kind of thing should be entered by me (and not end users)
inferCauses(C, E, prob(P)):-
causes(C, E, prob(P)).
inferCauses(C, E, prob(P)):-
causes(C, I, prob(P1)),
causes(I, E, prob(P2)),
P is P1 * P2.
%This should be entered by end users, again in a friendly interface
?-whyCancer?
Я знаю об отличных SWISH и Pengines, но не уверен, являются ли они полноценными редакторами онтологий или они могут быть связаны с существующими редакторами онтологий.
Я также изучал правила Protegé, OWL и SWRL, но не уверен, что они такие же мощные, как Prolog. или каким образом они могут взаимодействовать с Prolog.
Любая помощь будет принята с благодарностью! Спасибо.
/ JCR