5

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.

Stanislav Kralin
  • 11,070
  • 4
  • 35
  • 58
riad
  • 361
  • 1
  • 9
  • 19
  • http://milicicvuk.com/blog/2011/07/14/problems-of-the-rdf-model-blank-nodes/ – Petros Tsialiamanis Nov 19 '13 at 13:11
  • 5
    This usage is accurate, but I don't know if it happens all that commonly. I think a much more common use is in representing n-ary relations. You can read more about these in [Defining N-ary Relations on the Semantic Web](http://www.w3.org/TR/swbp-n-aryRelations/). Another _very_ common use is in writing OWL ontology serializations where many OWL class expressions become blank nodes. – Joshua Taylor Nov 19 '13 at 14:57
  • For posterity, here is a paper that goes into more useful detail from 2016: https://aidanhogan.com/docs/blank_nodes_jws.pdf – qqq Aug 07 '23 at 17:21

3 Answers3

11

Imagine you know a person (let us call him Derek) who has 3 children. You've seen one of the children and he is a boy. You can say:

ex:derek  ex:hasChild  _:b1 .
_:b1  a  ex:Boy .

This means Derek has a boy. You can tell this to your friend Khadim. Now your friend meets Derek and one of his child. The child is a boy. So Khadim can say:

ex:derek  ex:hasChild  _:b2 .
_:b2  a  ex:Boy .

This means Derek has a boy. It confirms and is equivalent to your statement. However, if you had given an identifier to the boy you've seen, it would be:

ex:derek  ex:hasChild   ex:theBoyIHaveSeen .
ex:theBoyIHaveSeen  a  ex:Boy .

Then you're friend Khadim would say:

ex:derek   ex:hasChild   ex:theBoyYourFriendHasSeen .
ex:theBoyYourFriendHasSeen  a  ex:Boy .

This does not confirm what you are saying as you don't know if the boy you have seen is the same. Yet you would be able to agree on the fact that Derek has a boy. So, with a URI, you are really expressing something different.

Antoine Zimmermann
  • 5,314
  • 18
  • 36
4

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.

Rhand
  • 901
  • 7
  • 20
  • 1
    This might have been useful if you defined what having sufficient knowledge to give a proper URI was. A definition of what that is, or guidelines for that, might be the actual answer to the question. It seems to me that the key thing you *don't* know about a blank node is whether it is the same node as another node in another RDF graph. This is what the URI gives it. It is unclear to me if you are supposed to know for sure that it is a different node than another blank node in the same RDF graph, though that would make sense. It seems to me the blank node only has local identity. – EricS Mar 11 '20 at 23:09
1

A blank node is a node that does not have a URI as its identifier. Simple question come why don't we give/use a URI to that node also, the simple reason is that node-detail (URI) is not having much link/importance to our document/rdf. If particular node details is directly or indirectly link to our content then we should provided/use URI to it.

Vinod
  • 61
  • 3