Mapping distributed communities using SVG


foafnaut is an application built with SVG for mapping distributed communities. It uses source FOAF (Friend of a Friend) data, posted at various URL's by community members and gathered by scuttering devices to generate maps of personal relationships. Who knows whom? What is their relationship? The user starts with a single node which represents a person, and from there builds a map of the surrounding community landscape.

foafnaut is a work in progress. Therefore, the aim of this presentation is to demonstrate not only what foafnaut can do now, but also discuss what are the possibilities for the future.

What is FOAF data?

Friend of a Friend is an RDF vocabulary which allows people to publish information about themselves and ther relationships with others. It is a useful tool for defining and managing online communities.

Distributed community

Users generate FOAF data and post it at their own url. They then inform their preferred community device - in this case foafnaut, but it could be one of many foaf browsers available. In the main, these are hypertext based, or bots. Because the information is distributed throughout many urls, users have control their own data.

Translating FOAF into FOAFnaut

SVG is particularly suited to mapping FOAF data because it uses an xml protocol which is compatible with FOAF. As an open standard, it serves the community which develops and uses the FOAF vocabulary, without the need for expensive authoring tools.

foafnaut is based on Dean Jackson's FOAFcorp application. To date it has been developed by Jim Ley with graphics by Liz Turner. SVG graphics are brought to life using Javascript. The interaction model allows nodes to be expanded to show all connections, for shortest paths to be plotted between nodes, and for information about individual nodes to be displayed.

Individuals, relationships and communities

The FOAF vocabulary is highly flexible, and often customized according to what users wish to express. Therefore, individual FOAF profiles may be unique in format as well as content. Presenting such content is a challenge for designers and users.


Defining and accurately verifying relationships is a problem. What people post about each other is rarely verified by both parties. Now, foafnaut shows a distinction between "knows", "known by" and "know one another". One way to confirm that two people have at least met is to include a picture of them together - a co-depiction. The flexible FOAF vocabulary, however, allows unlimited possibilities in defining these relationships. This is a challenge for future versions of foafnaut.


Existing internet communities are often defined in terms of mailing lists, news-groups and irc channels. A mailing list can be used to uniquely identify an interconnected group of people under a single email address. FOAF data profiling the group can be generated, and relationships within the group can be represented in terms of roles, position and hierarchy.


Integrating FOAF Authoring tools

Problems arise when combining divergent tools. For maximum usability, we need to combine navigation (web) tools with authoring (desktop) tools. Current methods are slow and do not yield instantaneous results. Some operations can be integrated using HTML or Java.


One way of dealing with the flexible nature of the vocabulary is to offer a customizable environment in which individuals and groups can espress themselves in words and graphics. Within a fixed interaction model, different styles and "landscapes" can develop. Individuals can make use of custom iconography, emoticons etc.

Security, privacy and data protection

Protect groups

Groups should be enclosed such that the distance of individual reach through the community network should not extend beyond authorized areas.

Encourage honorable behaviour

Raw FOAF data has, of itself, no means of validating or verifying relationships. Therefore interfaces should encourage dialog and codes of conduct. Naming in FOAF data should be consensual, and groups should always choose to "opt in".

Usage scenarios