I just started learning about RDF and my question is: What is the purpose of the blank node?
Example:
ex:John foaf:knows _:p1
_:p1 foaf:birthDate 04-21
This means that John knows someone who is born on 04-21.
But I can't understand the purpose.
For your simple example the reason for the blank node would be that you do not know anything else about this person born on 04-21, except that John knowns him or her. You have insufficient knowledge to give him/her a proper URI and simply add the two known statements.