webyrd / mediKanren

Proof-of-concept for reasoning over the SemMedDB knowledge base, using miniKanren + heuristics + indexing.
MIT License
323 stars 53 forks source link

Generalize queries supported in current GUI #12

Open webyrd opened 6 years ago

webyrd commented 6 years ago

Right now the Racket GUI supports:

Concept 1 -> Predicate 1 -> X -> Predicate 2 -> Concept 2

and

Concept 1 -> Predicate -> X

and

X -> Predicate -> Concept 2

where X is some unspecified concept.

However, the existing interface does not support the direct connection between two specified concepts and a specified predicate:

Concept 1 -> Predicate -> Concept 2

It would also be useful to be able to specify the middle concept in the two predicate query above:

Concept 1 -> Predicate 1 -> Concept 3 -> Predicate 2 -> Concept 2

Also, it would be handy to have the ability to specify the synthetic predicate 'any predicate', and the synthetic concept 'any concept' (which would subsume the X above).

It would be useful to be able to specify the types of an underspecified concept: gene product, disease, phenotype, etc. We could support SemMedDB semantic types, but we probably should also support synthetic concept types, since the SemMedDB types are rather messy.

We should support sorting and filtering of answers.