Какие технологии подойдут для создания веб-страницы, которая позволяет пользователям добавлять факты, редактировать факты и запрашивать эту информацию? Я строил базу знаний и правила вывода в Прологе, но хотел бы сделать раздел фактов и запросов доступным в Интернете. Более конкретно, я ищу следующую функциональность:
- Веб-интерфейс, где конечные пользователи могут добавлять и редактировать факты, например, «Курение вызывает рак с вероятностью 0,02». Предпочтительно это должно быть что-то доступное и не должно включать в себя написание Пролога или другого кода (например, выбор предмета, отношения и объекта из трех списков). Здесь также было бы неплохо иметь некоторую функциональность, чтобы увидеть, существуют ли уже некоторые понятия в базе знаний (например, если пользователь должен ввести факт о раке, а понятие рака уже присутствует в базе знаний, это должно быть показано, желательно также связанные понятия). Может быть, некоторые выпадающие меню или списки могли бы достичь этого.
- Функциональность для управления профилями пользователей, паролями, привилегиями и т. Д.
- Веб-интерфейс, где конечные пользователи могут запрашивать раздел фактов, например, «Каковы причины рака?». Правила, которые вычисляют ответы на запросы, не будут чем-то, что редактируют конечные пользователи (я хочу сделать это вместо этого). Они просто видят результаты в удобном для понимания формате.
- Язык, который является Прологом или настолько же мощный, как и Пролог, который я (и не конечные пользователи) могу использовать для создания правил вывода (которые генерируют ответы на запросы пользователей).
- Если это возможно, некоторые средства для конечных пользователей позволяют получить графическое представление базы знаний.
Краткое изложение того, что я имею в виду с точки зрения программы Prolog:
%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