Which algorithms should I use for recommendation system using a graph database? Basically I'm developing a recommendation system using a graph database (specifically neo4j), and I want to apply recommendation algorithms. Since i'm using a graph database, I can see the recommendation problem as a graph problem, and intuitively i can use graph based algorithms for the recommendation system.

From my research, recommendation systems are a subclass of information filtering system that seek to predict the "rating" or "preference" that a user would give to an item. And there exists basically two types, collaborative filtering and content based. 

I've done a research on the algoritms, and i found some interesting ones:


Weighted Bipartite Graph algorithm
Energy Spread Activation
Union Colors


My question is simple, which other graph algorithms exists that can be used for graph based recommendation system? Or if I use a graph database for recommendation system, the algorithm doesn't necessary need to be a graph based?

Thanks. Any suggestions are welcomed.
A biadjacency matrix of a bipartite graph admits matrix factorisation. 

For $m$ items and $n$ users, the biadjacency matrix is an $m \times n$ matrix which can be factorised into two lower-rank factor matrices of sizes $m \times k$ and $k \times n$ respectively. This provides a lower-dimensional representation of how users' preferences vary over products.

This model also has the property that the inner product of the $i$th row and $j$th column of the two factor matrices provide an approximation of user $j$'s rating of item $i$. In other words, the product of the two matrices is an approximation of the original ratings matrix.