Recovered from the Wayback Machine.
Phil had some problems with the original FOAF file generated for him by the FOAF-o-matic in that it includes blank nodes — equivalent to a subject-predicate-object (noun-property-value) that doesn’t have a specified subject. He provided his own ‘label’ to the nodes so that they then wouldn’t be blank.
Usually a blank node is used when a label doesn’t serve a purpose or doesn’t yet exist. For instance, I might use a blank node (these used to be called anonymous nodes) to represent a “location” object. I don’t really care about accessing the location, I want to access the location’s parts: the city, the state, the zip code. I only use an object to group these items schematically, but I’m not interested in actually accessing the grouping directly.
If I decide to have multiple locations and I do want to identify them individually, then I would add labels to the nodes for the locations and they would no longer be blank.
One assumes the FOAF designers didn’t see one accessing specific person’s as much as one would access those attributes of person: name, SSN, etc.
In relational database systems, the concept behind a blank node is analogous to dummy keys or auto-generated identifiers given to uniquely identify a row in a database table. This identifier is mainly used by the database system, rarely be applications built against it, and never directly by people.
Anyway, back to FOAF. Friend of a friend. The purpose behind FOAF is increasing our knowledge about people in a community according to an article by Edd Dumbill. I’m most interested in FOAF because of the possibility of using it to build a complex web of trust based on the idea of this person knows someone, who knows someone else, who knows someone else, who knows someone else, who knows you, and so on. If you know and trust me and I know and trust Phil and he knows and trusts Joe down the road, you’re more likely to trust Joe because of this indirect relationship then if you just found him by happenstance.
FOAF becomes more usable, as with most RDF, when data from the various FOAF files are parsed and merged into a common data source, and then the recursive querying can occur. Who knows this Joe? Well, Phil knows Joe. I don’t know Phil, so who knows Phil? Shelley knows Phil, and on and on. It’s handy being able to query for Edd’s email address and nickname with FOAF, but it’s handier knowing who Edd trusts.
FOAF files are easy to generate and fairly easily to consume with any number of RDF APIs and tools (in Perl, Java, Python, PHP, and so on).
It’s an interesting vocabulary with some potentially interesting uses. I’ll be curious to see what uses the weblogging community come up with in their current explorations.