The term FOAF  stands for Friend of a Friend. As might be deduced from this phrase one of the key applications of FOAF is to provide a mechanism for creating links to one's friends. From the links to one's immediate circle of friends automated software can be used to process links from your friends, which can provide a visualisation of 'friends of a friend'.
FOAF is a Semantic Web application which can be used to provide personal information in a form suitable for automated processing. On a page created in HTML Web authors often provide personal information, such as contact details, interests, etc. Such information is ideally suited for reading but cannot easily be repurposed by automated tools. FOAF was designed to enable such information to be provided in a form which could not only be displayed as conventional Web page content but also to be used for automated processing. An example of a FOAF application is illustrated in Figure 1.
It should be pointed out that this illustrates the original thinking behind FOAF. However FOAF is inherently extensible and so can be used in richer ways.
As an example of a FOAF application we will explore its potential for use in conferences. The ideas provided are based on a paper written by Brian Kelly and Leigh Dodds on "Using FOAF to Support Community Building" which was presented at the IADIS Web-Based Communities 2004 conference held in Lisbon in March 2004 .
Participants at a conference will be aware that conference organisers normally seek not only to provide an opportunity for participants to listen to talks and ask questions of the speakers but also for participants to make links with other delegates. Social events at conferences provide a valuable opportunity to support this community building. However it can be difficult to track down fellow participants with whom you have similar interests, especially at large events and overseas conferences. A number of conferences have sought to address this difficulty by allowing participants to provide their contact details, interests, etc. prior to the event, typically using a Web-based form. This information can then be viewed by participants with the potential for facilitating meetings, 'birds-of-a-feather' sessions, etc. In practice, however, such facilities do not appear to have been entirely successful. This may, in part, be due to reluctance to provide such information for every conference, the lack of ownership of the data once it has been uploaded, with the inevitable consequence that it becomes out of date. In addition each conference is likely to have its own application which can require additional learning time.
The approach advocated in the paper "Using FOAF to Support Community Building" is based on an extension to FOAF. As well as using FOAF to describe one's contact details the paper also proposes using FOAF to record the conferences one has attended, or plans to attend. Leigh Dodds is updating the Foafnaut viewer  to provide support for such events information, as illustrated below. (Note that at time of writing this update has not yet been released into the publicly available Foafnaut application).
In this image we can see that Leigh Dodds knows Edd. Leigh and Edd have both attended the XML Europe 2000 conferences. In addition Edd has also attended the XML Europe 2003 and ETCON 2004 conferences.
The application illustrated above could be implemented by using conventional database technologies. However it is important to understand that FOAF enables data to be integrated even if the data is stored on distributed systems. In addition the FOAF data can be extended without the need for universal agreement on data structures.
The distributed nature of FOAF is enabling enthusiasts to create their own FOAF data files easily which can then be processed by FOAF applications. This grass-roots approach is reminiscent of the early days of the Web when early adopters installed Web servers on departmental servers, prior to a recognition of the Web's strategic importance to organisations. And unlike running a Web server, involvement with FOAF does not require special privileges to run server software - you simply need to create a FOAF file and then register it with appropriate FOAF harvesters.
With any emerging technology there will inevitably be limitations and issues which have not been fully resolved. With FOAF the main issues to be aware of are:
Trust is acknowledged as a major issue. If a FOAF file contains information saying the owner knows Nelson Mandela, say, and has attended a particular event, can this information be trusted? It should be acknowledged, however, that the position is no different from conventional Web pages.
This article outlines an approach based on individuals creating and maintaining their own FOAF files. It would be possible for FOAF files to be created centrally. Although there are advantages with this approach, a potential barrier may be data protection legislation. As with any system which stores personal data, organisations need to consider carefully the implications of data protection legislation.
Concerns have been raised of the value of the 'friend-of-a-friend' relationship model. In retrospect it could be argued that although this phrase has resonances for many and the FOAF acronym is memorable and can be easily pronounced, concerns over the effectiveness of 'friend-of-a-friend' relationships may act as a barrier to acceptance of FOAF, (see next point). You may wish to regard FOAF as an open and extensible format for providing personal information which may include friends, but is not restricted to them.
FOAF has been criticised because of the lack of clarify of the term 'friend'. The FOAF specification provides a mechanism to define different categories of friends, such as close friend, relative, business colleague, etc. However it is still possible to make use of FOAF applications while still using a loose definition of the term friend.
When using FOAF viewers for performance reasons the data is not normally processed dynamically. Instead FOAF files are harvested and the data stored allows the relationships to be batch-processed. This allows for a speedy display of FOAF data. However this model has its limitations when data is created or updated. This is a known limitation and the issues are being addressed within the FOAF development community.
Although FOAF is extensible it is desirable to seek agreements on the XML namespaces which define the extensions.
FOAF viewers will not provide a graphical display for every extension. There is therefore a need to ensure that use of extensions goes hand in hand with the development of parses which process new extensions.
Despite FOAF having unresolved issues, this should not necessarily act as a barrier to use of FOAF - after all the limitations of the Web did not stop it being deployed in many organisations over 10 years ago, despite that fact that many of its limitations have still to be resolved.
As can be seen, FOAF-a-matic is a simple Web-based authoring tool. You fill in the form and press the Save button. The FOAF file you have created should then be saved on the Web, typically with a .rdf (or .xrdf) extension. For example the author's FOAF file has the address
You can use FOAF-a-matic to add the address of the FOAF file of your friends. For example, if you know the author you can add the address given above. An alternative approach is to use a FOAF viewer. The FOAF Explorer application , for example, allows you not only to explore FOAF space but can also update your FOAF file with information on people you have found. For example, as shown in Figure 4, if you explore my friends of a friend you may find that you also know Tom Heath. Clicking on the appropriate icon (the red symbol) will update a copy of your FOAF file with the appropriate data.
Another approach for creating FOAF data is to create and edit your FOAF file using a simple text editor. As can be seen from the FOAF fragment shown below it need not be too difficult to implement. The data held in the <foaf:Person> element should be self-explanatory, with the nickname, name, email address, home page and location of my friend's FOAF file defined using appropriate <foaf> elements, preceeded by the namespace for the FOAF vocabulary.
A number of FOAF viewers are available including Foafnaut  (which requires an SVG plugin), FOAF Explorer , Plink  and Semaview  (which requires Java). Images from the Foafnaut and FOAF Explorer viewers are shown elsewhere in this article. An illustration of another viewer, illustrating the extensibility of FOAF is shown below.
As can be seen, Plink not only provides links to people I know and people who know me, but also people who are local to me. In my FOAF file I have described the geographical location of my place of work. Plink has processed this information and matched it against the FOAF data Plink has harvested. Plink can therefore display not only people I have defined as my friends, but also people who work near me.
It is also possible to compare various FOAF viewers' links to these viewers and links which illustrate use of the viewers on live FOAF data .
This article has sought to describe FOAF and outline its potential, in particular for use to support community building at events. At the presentation of the paper "Using FOAF to Support Community Building" at the IADIS Web-Based Collaboration conference in March 2004, I proposed that its future conferences should seek to encourage use of FOAF to support community building across delegates. This suggestion was accepted by the conference organisers and we will consider how to implement it.
Following this initial acceptance of FOAF's potential, participants at the annual Institutional Web Management Workshop event , (to be held at the University of Birmingham, 27-29 July 2004), will have an opportunity to use FOAF. A page providing information on how to get involved in the use of FOAF at the workshop has been created .