It looks very nice. The recursive explorer reminds me of the graphql± syntax …
Thinking about this I have the following idea.
Let assume that there is a starting node-type in a relative complex graph with many edge-types and much more predicates and you want to find some connection between the root node and the searched predicate. Some times the searched predicate is many hoops away, so exploring the graph from the root node can be very time consuming. On the other side, if you have found the right path, then you would be interested in filtering on some predicates and showing others.
Here I have an example for a relative simple graph based on airbnb listings:
Search for a predicate and path to root node
In this case you would have the user node-type as root node. Let say, you are searching for some information about “price” and you want to “connect” this to user node-type. If you have a well named schema, then you could maybe extract the paths and create a meta graph for the connections.
If the data model has many, many, many node types and predicates (with similar names), then a data dictionary (also modeled in dgraph) could help. The data dictionary would have nodes describing the note-types and edges to other node-types and other nodes representing the real predicates.
So when you search for a predicate, then you could first query the “meta graph” and use this to draw the graph in the image. In the mata-graph you could also model some additional information about the entity (node-type) like description etc.
Once you know the paths, you can start exploring your data. You start with the root node and add edges and node-types until you reach the node-type with the desired predicate. The meta graph shows you the way. During this you can set also filters.
Using the normalize directive in the query there should be not difficult to extract the data from the query and create a html table. Using pagination you can browse the result. If the result is OK, then you can go further and use server side solutions for analytics like python-pandas (datatables). For analytics purposes you could also create a in-memoty table and connect it to some data analytics solution.
How do you find the idea?