Thanks for your questions Namratha.
1) Yes, you are right, the current alpha version contains some limitations on how the results are displayed.
Today Popoto.js only uses a property "popoto.query.RESULTS_PAGE_SIZE" to define the maximum number of results to return in the query.
This property is set to 100 by default but can be customized. It is used in the generated Cypher query with the LIMIT clause to return only the first 100 results:
MATCH (person:`Person`) RETURN person LIMIT 100
This is a limitation because you can only look for the first results and if you have million nodes you would have to display all of them to be able to see the last results.
On future releases I plan to add a full pagination mechanism support, Neo4j REST API already has everything needed to implement that with SKIP and LIMIT.
Today one possible way is to let the user dynamically change the value of "popoto.query.RESULTS_PAGE_SIZE".
In this
example I added a combo box to change this property to select the number of displayed results.
2) This is also a limitation in Popoto.js, today you can only define which property is used to identify a node and to create constraints for a particular label.
If I take the movie example if the constraint attribute is on "title", even if you can customize the value displayed on node, once selected the constraint will be an exact match on this attribute value.
MATCH (person:`Person`)-[:`ACTED_IN`]->(movie:`Movie`{`title`:"The Matrix"}) RETURN person LIMIT 100
If you have additional attributes in movie like "genre" there is today no way to use them to filter the results, only one attribute can be used to identify and constraint the node.
You could for example use "genre" as constraint attribute instead of "title" but this would completetly change the graph behavior, on click on movie node the displayed values would be all the différents movie genre instead of all the different movie titles.
One solution today with Popoto.js to be able to filter movies using genre would be to extract the genre attribute in a separate node and add a relation on each movie nodes in the database to the corresponding genre.
This way if you right click on movie in the graph you'll see the relation to genre where you could first select a genre which will filter the list of movie and then select the movie.
The use case you describe is part of the features I would like to add in future releases.
And for example with a right click on movie node, display a context menu where you could select an attribute on which to add a constraint and also select which operator to use for use cases like born after 1970.
But I still want to keep the UI as simple as possible because I want Popoto.js to be usable by non-technical users.
I would be happy to get your feedback on this and how you would expect to build such use cases from the graph.
3) Not in the current version but I think I can easily add in configuration the possibility to add predefined constraint for a node.
You could for example add the constraint "born" > 1970 in Person node config to filter the dataset.