XFN Delusions of Grandeur

by Jennifer Golbeck

I have several posts in mind about XFN – the XHTML Friends Network.

I am a Semantic Web person, and partial to FOAF (mentioned in earlier posts of mine) , but unlike many RDF and OWL aficionados, I am very much in favor of microformats, folksonomies, and the like. I think they have potential to allow us to do powerful things.

XFN, however, seems questionably useful to me.

According to their website :

XFNTM (XHTML Friends Network) is a simple way to represent human relationships using hyperlinks. In recent years, blogs and blogrolls have become the fastest growing area of the Web. XFN enables web authors to indicate their relationship(s) to the people in their blogrolls simply by adding a 'rel' attribute to their <a href> tags, e.g.:

<a href="http://jeff.example.org" rel="friend met">

They go on to detail what kind of information can go in the "rel" attribute. I will eventually write another post to discuss that, but for now I want to stick to the core idea: build a social network by putting a bit of metadata on a link.

The problem with this is that we are annotating URLs of webpages, not people. This annotation above reads to me as "http://jeff.example.org is a friend and someone I met", not "The person described at http://jeff.example.org is a friend and someone I met". How do we actually know who the person is that is described on the webpage? Short answer: we don't. This format is only allowing us to annotate links between web pages, not links between people. It may be a socially knowledgeable network of webpages, but it is not a social network.

Perhaps that is ok – if the end consumer of this information is human, he or she can figure out that the person who owns one page knows/is friends with/has met the person who owns the linked page. If that were the intent, I may look more favorably on XFN. However, their website claims it as something that can be machine processed and aggregated. The site talks extensively about the potential for extracting social networks from XFN, but contains no concrete details about how we actually identify who the people are.

A section of their website is called "Delusions of Grandeur" and I think it is exactly that. For example, one item on this list reads

2. Commercial services like Amazon, which currently ask users to manually register all their friends in order to make "wish list" and other information sharing simpler, may find it easier simply to crawl XFN relationships on the open Internet. This would allow a user to enter the URL of their site, and let the service programmatically analyze XFN relationships to build a list of friends.

I do not see how Amazon, or any service, could build a list of friends from XFN data. Sure, they could find a link that was marked with XFN. But that link does not point to a person; it points to a website. So Amazon may know that I have met the person who owns a particular website, but there is no way of knowing who that person is. The data that can be extracted is worthless to Amazon for their purposes.

There are places where quick and easy annotation is good, but for machine processing of information that will be used in applications, XFN is just not going to cut it for representing social networks. RDF and OWL may be more than a basic user can handle on their own, but to achieve certain goals, something much more structured than XFN is necessary. This is where FOAF has its place.


2005-11-04 18:35:55
A matter of context
It is true that XFN identifies web sites rather than individuals, however FOAF does little better. It identifies email addresses (or the md5 hash of them) rather than individuals. Because humans do not have identifiers we need to have a system of assining them. On the web we have email addresses and web pages. A few years ago using a web page would have locked out a much greater percentage of the web's population than today. Perhaps web pages are becoming a viable identifier.

I don't think XFN is suggesting that every hyperlink be annoted with a friend relationship. Its website predominantly describes how to annotate blogrolls. When used in this context even a machine can infer that "the person identified by the source uri knows the person identified by the target uri".

Whether XFN will outcompete FOAF, or whether they're even playing the same game will take some time to answer. FOAF is clearly very general purpose. XFN's target is much smaller. XFN may then interoperate better with other pieces of technology who are only missing an "a knows b somehow" component and don't want to pick up the full FOAF system. XFN is also much simpler to deploy than FOAF in a blogroll, and that microformat advantage may give it some life.


2005-11-05 11:43:20
XFN Delusions of Grandeur
FOAF does not annotate email addresses - they email instances of the foaf:Person class. In part, what you say is true. Applications that read FOAF generally use email address or mbox_sha1sum, to merge the same person annotated in several places.

First off, merging on email address is much more sensical than the XFN model. Email address is used because we assume only one person uses a given email address. Email address is even defined as a owl:FunctionalProperty, requiring that there is one person to an email address. Yes, there are cases where that is not true, but then you disagree with the format of the schema. By definition, it is a logical inference that a given email address indicates only one person. The majority of the time this uniqueness assumption is correct. When we use it, we are not merely stating "bob@example.com knows joe@example.com" (parallel to the XFN website-met-website model). We get "a foaf:Person with the first name Bob, last name smith, (etc. etc.), and email address bob@example.com knows the foaf:Person with the first name Joe, last name Blog, (etc. etc.), and email address joe@example.com". Namely, we are stating that one person knows another, and we have lots of metadata about each person, not just their email addresses.

If you don't like this idea of email address merging, it is not necessary. OWL syntax allows us to explicitly state that a foaf:Person identified in several places is the same by making an owl:sameAs statement using the URIs (though, again, this logically follows from the definition of mbox and mbox_sha1sum as FunctionalProperties).

Nikolas Coukouma
2006-03-17 19:14:38
The only way I see XFN being remotely useful is if it's used with OpenID and the URLs annotated are tagged with OpenID, LID, or something similar. Then people can at least log in with the the annotated URL.

Granted, OpenID is a weak authentication system, but people are using it ... I'll take FOAF and OpenPGP over it any day.