USE case is some users access and view some docs.We want the relationship can be viewed as between two users instead of a document and the user.
For example, in the below case User1 has a relationship with User2 wherein User1 has read D1, D2 and D3 documents which User2 has also read, and similarly, User1 has a relationship with User3 wherein they both have read different set of documents D4, D5 and D6. However, note that there are no common relationship documents between User2 and User3.
Triadic closure states that, over a period User2 and User3 would form a weak link with common relationships (in this case some common documents that they will start to read). However, this may take long and can be shortened by catalysts (showing similar document prompts and recommendations).
Now we want to pick data from Relational DB and put in Graph DB and perform following POCs:
- Find the relationships between users to form the triplets – user-doc relationship-user to form the graph.
-
- Do a cluster analysis and formulate clusters that represent closer group of users.
Please Confirm is this valid use case for Graph DB or we should do it in relational DB .
If it is correct use case please help in providing links documents or cues through which I can achieve this .
The top graphs showing users related to books makes sense. I don’t get the bottom graph where it looks like you have users related by a specific book. Is this supposed to model a specific book two users read? If so, this is not the way to model that relationship. You instead derive that information from the above graphs of users and books. You can write a query to determine all the books two users have in common.
I would ask the question why use a graph database over a relational database if you are just relating books to users? You could put the users and books in two related tables. Is there more that you want to model in your use case that we can see if it makes sense to use a graph database.
Hello @glilienfield I have elaborated my POC idea. Please help me this if you think this is valid graph DB use case .
Thanks in advance 
I would rather model the graph as (:User) -[:READ{start:datetime,...}]-> (:Document)
to get a bi-partite graph (two set of nodes with relationships between the sets).
After that, you can do all sorts of fun analysis, for instance Node similarity followed by community detection.
You can also play around with how you weight the similarity between users based on user reading patterns (how many shared reads they have and in what time frame).
If you have a "good use case for graph database or graph analytics" can usually not be answered by the "shape of your data" alone, you also need to consider how you want to use the data to answer questions, extract more knowledge etc...
1 Like
Thank you @hakan.lofqvist1 .
If I model the data way you have mentioned then how can I my achieve finding relationships between nodes in same set in bi-partite graph ?
.