Collaborative ontology construction and Prolog
Asked Answered
M

1

6

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

Milks answered 12/4, 2019 at 8:38 Comment(10)
"add and edit facts, e.g. "smoking causes cancer with probability 0.02". This should preferably be something graphical and not involve writing Prolog or other code" - what could be more simple then declaring this as a fact? Do you want to draw a graph to represent the facts or something? Maybe use a combination of javascript (D3 for example) and pengines?Stephens
E.g edit something like : bl.ocks.org/benzguo/4370043 so that when you draw an edge that makes the facts like: causes(smoking, cancer, prob(0.05)).Stephens
Maybe i was a bit unclear in the original post. By graphical i meant a GUI which could, for example, involve selecting a subject, relation and object from three lists... Does not have to be arrows and such things.Milks
If you look at number 11 here: you can see an example of a javascript gui interacting with pengines swish.swi-prolog.org/?code=https://raw.githubusercontent.com/…Stephens
This looks interesting!Milks
academic.oup.com/bioinformatics/article/34/16/2856/4956665 For more detailsStephens
@Stephens Thanks! I'll read the paper.Milks
@GuyCoder Sounds good, should i just post my question there in the public forum (or contact you privately? what user name in that case?).Milks
@GuyCoder yes I am. :)Stephens
@GuyCoder cool no problem :)Stephens
M
0

Some more info about this here.

Milks answered 22/4, 2019 at 20:30 Comment(1)
So what did you decide to do @user3170496? I followed this link to your post. Did you end up creating this concept? Any github repo?Denis

© 2022 - 2024 — McMap. All rights reserved.