1. A method of managing and querying a graph, said method comprising the steps of: receiving said graph; partitioning said graph into at least one homogeneous block; compressing said at least one homogeneous block; storing said compressed at least one homogeneous block in at least one file; wherein at least one of the steps is carried out using a computer device; receiving a query; forming at least one first query vector based on said query; determining at least one relevant file which contains information needed to answer said query; creating a first data submatrix by decompressing said at least one relevant file; creating a first answer vector by executing generalized iterated matrix vector multiplication between said first data submatrix and said at least one first query vector; creating a second data submatrix using said first answer vector; creating at least one second query vector using said first answer vector; and creating a second answer vector by executing generalized matrix vector multiplication on between said second data submatrix and said at least one second query vector.