Bryce Benton just posted to rdfweb-dev pointing out the arrival of XFN (XHTML Friends Network) and in particular a document from CSS-guru Eric Meyer constrasting XFN and FOAF. Thought I’d post a few thoughts and (hopefully) constructive comments.
Firstly I’m impressed by it’s elegance: annotate a few links with an extra attribute with values from a controlled vocabulary and there you go. I imagine it’s going to spread pretty quickly through blog-land.
Secondly they’re tackling an issue head-on that FOAF has so far largely skirted by using a very vague sense of “knows”: describing interpersonal relationships. While they’ve set boundaries there are still a lot of different ways to assert relationships; it’ll be interesting to see how that plays out.
It’s on the topic of relationship typing that I’ll make my first correction to Meyer’s article. While strictly speaking he’s correct that FOAF …does not have a defined way to represent any relationship other than “friend”…which could potentially limit its uses in situations where the participants in a FOAF network may not all agree on what it means to be a “friend.”, FOAF doesn’t preclude defining more detailed relationships types. Indeed Eric Vitiello has done just that with the FOAF relationship module. It would be trivial to create an alternate module based on the XFN relationships or extend Eric Vitiello’s schema with the additional relationships. This is one area where FOAF and XFN can clearly benefit from each other.
The very general nature of the FOAF “knows” relationship is an explicit design decision. Defining a machine-processable format that encapsulates the intricacies of inter-personal relationships, however generally, isn’t a problem that the FOAF vocabulary was designed to solve. While foaf:knows allows the creation of social networks it also, and more importantly in my opinion, provides an RDF hyper-linking mechanism making it easier to aggregate metadata. Like XFN, FOAF is designed to be highly decentralised.
The main thing I find unusual about XFN is that there’s no “me” there. I can define my relationships to others but nothing more. A spider aggregating XFN data can only define “me” by the sum of the relationships that others have claimed about me. There’s no way for me to throw additional metadata into the mix. This is where FOAF clearly surpasses XFN, as Meyer acknowledges.
FOAF has potential in more areas than simple blog-rolling and that includes enabling applications to discover much richer forms of relationships. In XFN I’m directly involved in all of the relationships: I’ve met someone, someone is my friend, someone is my colleague, etc. Interesting data to be sure, but limited. Personally I’m interesting in enabling the discovery of “emergent” relationships: people with common interests, people attending the same events, etc. There’s an element of serendipity inherent in that which I think is lacking in XFN; it feels insular to me.
XFN assumes that the destination of the annotation link is a URL that uniquely identifies the person. Assigning URIs to people is still an open source of debate, which I won’t rehash here. Suffice to say that things aren’t that simple: people have multiple accounts and home pages and it can be tricky to disambiguate these. However for XFN’s target audience and applications this may well be a reasonable trade-off.
One source of confusion for me in Meyer’s contrast of XFN and FOAF was this comment: [FOAF] can also be included into a document written in another markup language as comments within that language, although this practice is not universally accepted. That’s certainly true but it’d be an odd way to go about mixing vocabularies. From an HTML page I’d probably use autodiscovery to associate it with a FOAF file. It’s also possible to say that “I Made This” using the foaf:maker element inside a meta tag. But I’d probably just mix FOAF with other vocabularies directly; there’s no need to hide it away in comments except in HTML where the content would be visible. But this is hardly a failing of FOAF.
The final point from Meyer’s article that I feel moved to comment on is the assertion that because one can make statements about another person using FOAF that [t]his opens the possibility of flawed personal information entering FOAF-space, and purging it with better information may be difficult or impossible.. This first assertion here is true and this concern has been previously raised by Shelley Powers. I discussed some of those issues in an earlier posting.
What is not true is that purging the system of flawed data is necessarily difficult or impossible. If FOAF applications store provenance of their data then it will be possible to build a web of trust. If they don’t then the situation is no worse than with XFN which also has no built-in notion of trust or signing.
To summarise: In this posting I’ve tried to provide some comments on XFN suggesting areas where it and FOAF can complement one another, whilst highlighting some minor inaccuracies in Meyer’s constrasting of the two technologies. My ultimate aim being to promote discussion. There’s a lot of interesting issues and challenges in this area, tackling on more than one front seems like a great idea to me.