Совместное конструирование онтологий и прологов - PullRequest
3 голосов
/ 12 апреля 2019

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

  • Веб-интерфейс, где конечные пользователи могут добавлять и редактировать факты, например, «Курение вызывает рак с вероятностью 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

1 Ответ

0 голосов
/ 22 апреля 2019

Дополнительная информация об этом здесь .

...