What technologies would be appropriate for creating a web page which lets users add facts, edit facts and query this information? I have been building a knowledge base and inference rules in Prolog but would like to make the facts section and the querying accessible on the web. More specifically i am looking for the following functionality:
- A web interface where end users can add and edit facts, e.g. "smoking causes cancer with probability 0.02". This should preferably be something accessible and not involve writing Prolog or other code (e.g. selecting a subject, relation and object from three lists). Here it would also be nice to have some functionality for seeing whether some concepts already exist in the knowledge base (e.g. if a user were to enter a fact about cancer and the concept cancer is already present in the knowledge base, this should be shown, preferably also related concepts). Maybe some drop down menus or lists could achieve this.
- Functionality for managing user profiles, passwords, privileges, etc.
- A web interface where end users can query the facts section, e.g. "what are causes of cancer?". The rules which compute answers to queries would not be something that end users edit (i want to do this instead). They just see the results in a easy to comprehend format.
- A language which is Prolog or as powerful as prolog which i (and not end users) can use to create inference rules (which generate answers to queries from users).
- If it is possible, some means for end users to get a graphical representation of the knowledge base.
A summary of what i mean in terms of a Prolog program:
%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?
I know about the excellent SWISH and Pengines but I am not sure if these are full fledged ontology editors or if these can be interfaced to existing ontology editors.
I have also been looking at Protegé, OWL and SWRL rules but I am not sure if these are as powerful as Prolog or in what way they could interface with Prolog.
Any help would be greatly appreciated! Thank you.
/JCR