This article is within the scope of WikiProject Databases, a collaborative effort to improve the coverage of database related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
What's missing here is some kind of discussion of how to identify/refer to blank nodes outside the graph/document it resides in. --LarsMarius (talk) 09:45, 15 December 2011 (UTC)
Broadly, you can't. That's one reason they're called "anonymous nodes". In the first example, "John has a friend born the 21st of April" there's just no way to refer to this friend outside of this pair of predicates. We might know they're a foaf:Person (although best-friend could be a foaf2:Dog instead) and we know the obvious two relations to Jon and birthdate, but that's still a huge potential range with absolutely no way to identify our anonymous node any further. Andy Dingley (talk) 09:59, 15 December 2011 (UTC)
Well, that's not 100% true, because some SPARQL engines provide ways to do it. However, the question should be understood more broadly. Concise Bounded Descriptions, for example, are designed to deal with this problem, and there are other approaches as well. Anyway, this stuff should be in the article, and not here. --LarsMarius (talk) 19:21, 16 December 2011 (UTC)
I would disagree in that case that it's "outside" the graph.
Even in the case where John has two friends with the same birthdate, it's still possible to refer to the two anonymous nodes and to distinguish them - either by rdf:nodeID  or by rdf:_n for containers . However these can only be applied within that graph. If there are two graphs describing friends of an identifiable and identical John, we would be unable to state that these anonymous nodes referred to the same person. With the aid of a reasoner and some further information (maybe a property with unique cardinality, such as SSN) then we might be able to do this, but in general anonymous nodes remain anonymous and can't have their equivalence tested. Andy Dingley (talk) 10:57, 17 December 2011 (UTC)
Please get rid of the RDF/XML and use Turtle for the examples!
RDF/XML is notoriously hard (for humans) to read, and misleads people into thinking that RDF is merely a kind of XML. -- DBooth (talk) 02:23, 16 September 2012 (UTC)
Agreed, we could use some other serialisation here. However I would still keep the RDF/XML version (but not placed first), as there's still a legacy of it about. Andy Dingley (talk) 09:24, 16 September 2012 (UTC)