Query Discoverer


#1

This one’s a little more abstract and definitely more of a UI side thing.

The notion is very simple: suppose I know nothing about graphs or schema. Can I still write a query?

The way you might do this is ask the user: “Name two things” – and we autocomplete these two input boxes:

Name two things:
[ Brad Pitt ]  [ Angelina Jolie ]

Now, we can try to infer what the query is they’re looking for. Technically, this is doing a BFS (to a certain max depth) and finding which predicates create the path. So then we can ask or show something like

/people/person/spouse.!/people/person/spouse  // They're married
!/film/performance/actor.!/film/film/starring./film/film/starring./film/performance/film // They're costars
!/film/performance/actor.!/film/film/starring.(Mr and Mrs Smith)./film/film/starring./film/performance/film  // They're costars in a given film...

This is enough to get a foothold going – by giving two examples you can figure out the query that would relate them.
If you like, you can give another pair of examples:

[ Keanu Reeves ] [ Sandra Bullock ]

And then the only path these two pairs have in common is:

!/film/performance/actor.!/film/film/starring./film/film/starring./film/performance/film

Ranking the list of paths is a fun topic akin to a search engine (TF/IDF?, preference for shortness? preference for infrequently used predicates?)