How do we say something like “What does Fred eat?”  
Suppose we had the following fact in our database:
   eats( fred, mangoes ).
 
How do we ask what fred eats?   
We could type in something like
   ?- eats( fred, what ).
However Prolog will say no.  
The reason for this is that what does not match with mangoes.  
In order to match arguments in this way we must use a variable.  
The process of matching items with variables is known as unification.  
Variables are starting with a capital letter, for example,
   X             /* a capital letter */
   VaRiAbLe      /* a word——either case of letters */
   My_name       /* linking words together via '_' */
Thus returning to our first question we can find out what fred eats by typing 
   ?- eats( fred, What ).
   What = mangoes
   yes
As a result of this query, the variable What has matched (or unified) with mangoes.  
We say that the variable What now has the binding mangoes.  
When we pose a query, if the query is successful, Prolog prints both the variable and the variable name, as we see above.
 
 Variable Example I
 
Let's consider some examples using facts.  
First consider the following database.
   loves( john, mary ).
   loves( fred, hobbies ).