There is a closed question titled "How does Facebook Graph Search work?"
In simplest terms, the OP asked (and even gave a sample of what he tried):
How does Facebook Graph Search works? He gave an example: Friends from France who likes England
How can the above be implemented as a real world Information Retrieval problem?
As my answer was not fitting in the comment so thought of re-framing the question and answering it well in Stack Overflow Q&A style.
From an implementation perspective look out for a property graph something like NoSQL based Neo4j and Lucene as the Search Engine behind the Graph Database (+ Distributed Systems). The example given by you "Friends from France who like Russia" can easily be handled by Neo4j or a custom distributed property graph solution.
Say you use Neo4j, in that case France would be a value (in a graph node) in the key-value store where say key=Country, all the outgoing edges from that node with label "likes" are to be traversed and all the destination vertex are again to be searched for England. That's it (of course the challenge here would be Search & Traversals for Big Data Distributed Graphs)!
Consider a diagramatic representation taken from Neo4j site for a property graph:
I still haven't read about Facebook Graph Search though :)