Friend-of-a-friend
FOAF is a project which attempts to create a machine-readable web of pages describing people, their interests and their inter-relationships. That is, I’d have my FOAF file, describing who I am, where I live, what I’m interested in and whom I know; those people could in turn have their own pages with the same. As the inter-connections between people grow, pretty one can see how many degrees of separation connect one and anyone else on earth.
FOAF is based on RDF, which is a standard for storing metadata (data about data) — the big win about this is that one can use various standard tools to create & manage it.
One interesting thing about FOAF is that one can use a single file to represent an entire database of information: the people I say I know are just more entries in my file, and I could specify (incompletely) whom they know and what kind of relationships they have with one another. For example, both my brother Tom and my sister-in-law Emily are in my file; nothing prevents me from noting that: they are married to one another; each has met a few of my friends; and so on. If I’d one of Emily’s brothers in my FOAF file, I could note that they are siblings, and so on and so forth. Nothing stops me from populating more information about each of them, such as birthdays, interests, job &c.
Nothing except politeness. The general rule is that one should only reveal data about oneself; thus almost every entry in my file for anyone besides myself is minimal: full name and SHA-1-hashed email address (the addresses are hashed so that spammers cannot snarf them — a hash is a one-way encoding of a string: e.g. postmaster@irs.gov hashes to 7c44e262e4f3331dd5d7af5c571ad94794ec38bc; since each address hashes to a unique string, if I know who 84567345abc4375 … really is, and you say you know him, then I know whom you know, but if I don’t, I can’t). The only exception I make is when the person-knows-person relationship is interesting: my brother Thomas has met my buddy Phil and his fiancée Jess, which is surprising and may help make for an interesting six-degrees inter-relationship. If Tom’s file notes that he’s met Admiral Stockdale, suddenly Phil & Jess are only two steps away from Stockdale, and three away from any number of presidents and politicians.
FOAF only addresses the simplest relationship: X knows Y. It doesn’t
specify how well X knows Y, or even if Y knows X. For that, there
is an additional relationship vocabulary which specifies things like
siblingOf
, worksWith
, wouldLikeToKnow
&c.
FOAF+relationships ends up being similar to XFN, but the two are actually different. FOAF is supposed to be encyclopædic, containing everyone one knows and to what degree (at least ideally); XFN only comes into play when one links. FOAF utilises RDF; XFN gets a free ride atop XHTML. FOAF addresses shared interests and locations; XFN’s primary goal is to provide information about whom one has met. The two are complementary ways of finding friends-of-friends and building a web of inter-relationships.
The easiest way to get started with FOAF is to use the FOAF-a-matic tool: it prompts for your name, title, email address, homepage, work & school homepages and a list of your friends and their names & emails; it then generates a FOAF file with all that information nicely encoded (and email addresses protected).
If you run a blog or other website, use XFN on all your links, as
applicable. Create a FOAF file and link to it from your homepage like
this: <link rel="meta" type="application/rdf+xml" title="FOAF" href="/~ruhl/foaf.rdf" />
. It’s the cool thing to do.
2 February 2018: it’s remarkable how my ideas about privacy have changed in the last 14 years