FOAF – Building Networks With a Friend of a Friend
FOAF? What’s it all about then? Technology is terrible for having interesting things buried in acronyms or abbreviations. FOAF is one of those gems and I’ve been intending to write about it for a long while. Thank you to Dave Terrar (and weaverluke) for the nudge.
These days we are all a bit social on-line. We have always been social creatures, but now we have technology to help us manage those connections, from well-known sites like Facebook, YouTube, and Digg, to photo sharing sites like Flickr , even virtual world applications such as Second Life.
Computer technology means we can start to map out the relationships an individual has. Certainly we could have done this in the past with paper and pen, but applications like Twitter, Linked-In and Facebook mean that a vast swathe of the population are now submitting details of their relationships into databases, where they can be graphed and modelled by computer. This idea of a social graph – a map of relationships that individuals have with each other – has applications in both business and consumer marketing.
In the early days of the Internet it was joked that “on The Internet nobody knows you are a dog”. However, on today’s Internet we do know who you are, what you do, and the relationships that you have. Depending on your privacy settings, this information is available to a narrower or broader set of people – but it is, nonetheless, available.
One of the most interesting things about making a graph of the relationships is looking at the connections of our connections. Taking an obvious example: I know a few people, those people know other people. With a social graph (or with social media applications) I can see that two of my friends don’t know each other, but they do know a third mutual acquaintance. That creates new ways of introducing people to each other, and strengthening relationships with mutual contacts (see the Dunbar’s Number – Groups, Language and Social Media post with reference to tribes and clans in this context).
In some ways there’s nothing new there. Social people have been doing this sort of thing for millenia, but what is new is that people can use computer technology to identify friends or contacts that might be relevant with information that might previously have been missed or unnoticed. I have two friends who live at the opposite ends of the country, who I’ve never seen at the same time, and I assumed never knew each other. It wasn’t until Facebook came on the scene that I realised they went to the same school as children. A detail that might not (and in fact did not) come up in years of conversation.
This idea is codified in the concept of friends of a friend or “FOAF“. It was an early attempt to capture a person’s social graph and publish it on the web. The idea is that I could embed a list people that I know on my web site, so that you can see who you know too – that way you can see if you are a friend of a friend. One hop away on the social graph. By identifying those mutual contacts it provides a way for us to come to know each other. That is the concept that business social networking site LinkedIn is based upon.
So how does FOAF work? It uses something called RDF – Resource Description Framework – to express metadata, that is information about information. In the case of FOAF that is information about people and their interests, relationships and actitivites.
FOAF uses RDF to express metadata about people, and their interests, relationships and activities. Founded by Dan Brickley and Libby Miller, FOAF is an open community-lead initiative which is tackling head-on the wider Semantic Web goal of creating a machine processable web of data.
Semantic web overlays data about data on the Internet so that computers can make sense of it. Because FOAF information is machine readable, computer applications can read it and process it to present information or bring things to our attention. So a very simple and idealistic view might be you come to my website or my page on Facebook and the web brouser automatically picks up that FOAF information and is able to notifiy you that there are some people we know in common. The idea is to build that information into all sorts of web pages so that many applications become, as it were, social or at least socially aware.
So FOAF, in the technical sense, is a very simple text structure, based on an XML format, which is machine and human readable – although not too pretty for a human. It is very easy to write applications to use it. A FOAF entry might include information such as my name, gender, title, what my preferred nickname is, separate out my family name, point to my home page or my blog, and include similar information for my contacts. It is a very simple piece of data, but we can add details about the nature of the relationships. It isn’t as complex as it probably sounds, it is flat text, which might look a bit like this:
<foaf:Person> <foaf:name>Benjamin Ellis</foaf:name> <foaf:gender>Male</foaf:gender> <foaf:title>Mr</foaf:title> <foaf:givenname>Benjamin</foaf:givenname> <foaf:family_name>Ellis</foaf:family_name> <foaf:nick >jamin</foaf:nick> <foaf:mbox_sha1sum>...(inverse functional property)...</foaf:mbox_sha1sum> <foaf:homepage rdf:resource="http://www.benjaminellis.co.uk"/> <foaf:weblog rdf:resource="http://www.redcatco.com/blog/"/> <foaf:workplacehomepage rdf:resource="http://redcatco.com/" /> <foaf:depiction rdf:resource="http://benjaminellis/images/bmje.jpg" /> <foaf:knows> <foaf:Person> <foaf:name>Joe Blogs</foaf:name> </foaf:Person> </foaf:knows> </foaf:Person>
What does all this technology do? It give us opportunities to introduce people to other people, or to find people via mutual contacts. It might be computer-based, but the end goal is human to human social interaction. The power of my social graph, the map of my relationships, is not just in the releationsips I have, but also in that friend of a friend information – The relationships my contacts have, and they or I might have as a result of them.
People’s social graphs are exceptionally complicated. The FOAF proposal is a long way from providing even the beginnings of being able to express the relationships we have. I’ve played in a band with someone across the street, who baby sits for us on occasion. Are they my neighbour? A fellow musician? My baby sitter? Computers struggle with such vagaries, some people thrive on them. A social graph is not a simple star with me in the middle and people around the outside. It is actually a complex mixture of more and less connected individuals.
In using social networking platforms for marketing, agencies often seek out the person with the most ‘connections’ or ‘friends’. That is an error. Who is going to be more effective in propagating a message – someone with 350 contacts, or someone with 20? It depends as much on the second and third degrees of their social graph (ie out to the friend of a friend level) as on the direct contacts in the first.
One person might know 100 contacts, another might know 10. For the person who knows 100 contacts each of those people might know 100 or they might know a 1,000. Some of them may be very well connected , some may have a few tightly formed relationships, that are heavily meshed – where all their contacts and mutual friends are related. Others may be outliers, or bridgers as I like to call them, sitting across different communities. They might only have a few relationships. but they bridge between large communities.
Social software, even in its current form, is effective in the ‘discovery’ phase of relationships. One of the reasons that Twitter is so popular with many is that it makes it easy to find new people, based on their interests or experience, and start exchanges with them. Browsers like Flock aim to integrate the social and data aspects of web surfing. The area certainly has a lot of potential, for example knowing that a web site is written by a friend of a trusted friend might have me interpret the information as more trusted than that of a total stranger (for better or for worse). There are applications that generate FOAF from your Facebook page , Firefox includes a built in FOAF browser.
FOAF also has the potential to act as a format for porting our social graphs from one social networking platform to another (as long as the platforms stop banning people for running export scripts). A number of platforms (at last a dozen at last count) already allow exporting data as FOAF information. The approach might also be useful in the Enterprise 2.0 context, where social graphs might need to be used across applications.
All of this is, of course, still in a nascent stage. Be it FOAF, or a functionally equivalent standard, we will be seeing a lot more activity around the portability and interpretation of social graph data in the coming year. In the mean time, don’t forget that it is all about connecting with people!
I’m guessing though that you may want to qualify your definition of FOAF by the number of two-way interactions between parties. For example, I follow @stephenfry on Twitter and he follows me (poor man!) but I wouldn’t dream of calling Stephen a friend in the way that I would call you a friend. i.e. I know you, we socially interact in real life as well as in the interwebosphere. So if we’re both on Twitter and have exchanged, say >5 Tweets with each other, the chances are we could call each other friends… However Facebook (bless it!) because it needs acceptance of friend requests is a bit more bona fide FOAF material.
In my job as a statistician in a multinational company, making use of meta-data is often seen as the “next big thing” but you often need a heck of a lot of context to go with that data to judge whether it’s appropriate to combine it and / or whether the inferences you make from it aren’t being biased by the collection method in one of the sources.
I started playing with FOAF a few years ago. I like the idea that you can define your relationships and personal details independently of proprietary services like Facebook, but also that the data can be easily processed to infer all sorts of things.
I initially generated a file using Leigh Dodds’ web app, but have extended it a lot manually. I’ve only got a couple of friends who have done likewise that I could link to. As you say a few services do provide a FOAF file, but not too many people know what that is.
I was a mention of FOAF support on MyBlogLog that led me there so that I could play with this tool
http://kentbrewster.com/foafster/?q=steevc
We’re linked there!
I keep hoping that the semantic web will become what Timbl intended, but it’s taking a while. I know Google have been making use of FOAF and XFN in their profiles feature, but it seems that is only to discover what services you use.
Welcome to Web 3.x
Hello Mike, fancy meeting you here :). What you describe is the friend-fan concept that social media has dragged into being (see Social Media – Do Conversations Scale? – the merky world between broadcast and conversations.
FOAF itself is actually asymmetric – it says who I think my friends are, but not the other way around. An application could pull that friends FOAF information and see if they listed me as a friend as well (although Twitter doesn’t use FOAF, the Friend of follow app does this for twitter).
I’ve juggled FOAF as a social concept (ie people one degree of friendship away) and FOAF the format in the post – hopefully not in a confusing way. They seem interesting ideas to juxtapose.
Good thoughts on meta-data – especially if it is auto generated. We must chat about that next time our basses bring us together!
Hello Steve (wondering if you know Mike already? 🙂 ) – I hadn’t noticed the support in MyBlogLog – I’ll have to dig into that, thank you!
@libbymiller provided a few thoughts via twitter: Firstly, for specific relationship types you can use foaf with http://vocab.org/relationship/, and also pointed me to this blog post: W3C Workshop on the Future of Social Networking.
I met Mike at a Steve Lawson gig. Recently I got to know someone who previously worked with Libby and Dan, the creators of FOAF. It’s a small, interconnected world. Systems like FOAF would help us in discovering these connections.
I’ve read a few articles on the possible applications, but not seen so many implemented. A lot of these articles are getting on a bit, like this one from 2002
http://www.ibm.com/developerworks/xml/library/x-foaf.html
Google have written about it more recently
http://code.google.com/apis/socialgraph/
I’ve incorporated some of these ideas into my web site, Something I have yet to do is to generate parts of it from data in my FOAF file.
I meant to say that one issue with FOAF is that it’s tricky to restrict access to certain data. I’m reluctant to expose some details like my home address, DoB and others. I do give my email address, but use hashes for my friends in case they do not wish to do so.
[…] Like twitter, I think the power here is in keeping the information simple, and allowing the clients to add the complex usage patterns. It so happens there is a format for sharing social network information in tuples called FOAF data. One way of accomplishing this would be to just add a tag and value tuple to standard FOAF data. Thankfully the RDF allows redefinitions pretty easily. One link that descriptes RDF and FOAF data is here. […]
Interesting having come, I would have thought, quite late to FOAF. Seems to me that there is very little awareness/ understanding amongst colleagues and others who are extensive users of social networking (twitter, facebook, linkedin).
I seem to recall a piece by Tim O’Reilly some tome ago – explaining the difference from his perspective between facebook and twitter. It was a long the lines that in twitter anyone may choose to follow him whereas in facebook you have this approval step. And he spoke positively of the twitter experience in this context.
WRT FOAF I think it will struggle to achieve significant adoption when it requires users to think in terms of having their own web presence and adding a page (with their FOAF details) to their web presence. Anything along these lines is just too complex for most users. And then if they are expected to engage in updating the FOAF file themselves (ie does not happen in some automated fashion) we are lost.
I think we need FOAF – but we need FOAF packaged, marketed and supported in a completely different way. Nad maybe then that’s self defeating – because effectively FOAF becomes another application at that stage.
As long as a technology is a ‘technology’ it will struggle to gain adoption. Once the technology becomes invisible, then it breaks through. Twitter is twitter (how many people other than us call it a micro-blogging service?) – DSL went mainstream when it became a service for downloading for music and watching videos.
So, I’m agreeing. FOAF needs to be packaged up and used in services. Discovering mutual friends is one of the great things about on-line social networks. I wish that the services would made it easier.
Hi,
there are some interesting new developments with foaf that allow us now to have distributed SECURE social networks. By combining foaf and ssl one could set up a distributed version of Facebook, allowing people to see different views of resources depending on their relationship to the owner of the resource. This allows global identification in one click without username or password.
See the video of a talk I gave at Hackers At Random
Or a longer version at the Free Opens Source Conference in Germany
There are now initial open source implementation of this in php (and a package for Drupal) perl, python, and java.
http://esw.w3.org/topic/foaf+ssl
For those in the Bay Area on November 2nd there will be a Bar Camp covering this at Sun Microsystems, Santa Clara
http://barcamp.org/SocialWebCamp-Santa-Clara