***** To join INSNA, visit http://www.insna.org *****
*‘Thoughts on the Social Graph‘* (http://bradfitz.com/social-graph-problem/)
*There are an increasing number of new "social applications" as well as
traditional application which either require the "social graph" or that
could provide better value to users by utilizing information in the
social graph. What I mean by "social graph" is a the global mapping of
everybody and how they're related, as Wikipedia describes
<http://en.wikipedia.org/wiki/Social_graph> and I talk about in more
detail later. Unfortunately, there doesn't exist a single social graph
(or even multiple which interoperate) that's comprehensive and
decentralized. Rather, there exists hundreds of disperse social graphs,
most of dubious quality and many of them walled gardens. . . . .*
# Ultimately make the social graph a community asset, utilizing the data
from all the different sites, but not depending on any company or
organization as "the" central graph owner.
1. Establish a non-profit and open source software (with copyrights held
by the non-profit) which collects, merges, and redistributes the graphs
from all other social network sites into one global aggregated graph.
This is then made available to other sites (or users) via both public
APIs (for small/casual users) and downloadable data dumps, with an
update stream / APIs, to get iterative updates to the graph (for larger
2. While the non-profit's servers and databases will initially be
centralized, ensure that the design is such that others can run their
own instances, sharing data with each other. Think 'git', not 'svn'.
Then whose APIs/servers you use is up to you, as a site owner. Or run
your own instance.
# For developers who don't want to do their own graph analysis from the
raw data, the following high-level APIs should be provided:
1. Node Equivalence, given a single node, say "brad on LiveJournal",
return all equivalent nodes: "brad" on LiveJournal, "bradfitz" on Vox,
and 4caa1d6f6203d21705a00a7aca86203e82a9cf7a (my FOAF mbox_sha1sum). See
the slides for more info
2. Edges out and in, by node. Find all outgoing edges (where edges are
equivalence claims, equivalence truths, friends, recommendations, etc).
Also find all incoming edges.
3. Find all of a node's aggregate friends from all equivalent nodes,
expand all those friends' equivalent nodes, and then filter on
destination node type. This combines steps 1 and 2 and 1 in one call.
For instance, Given 'brad' on LJ, return me all of Brad's friends, from
all of his equivalent nodes, if those [friend] nodes are either
'mbox_sha1sum' or 'Twitter' nodes.
4. Find missing friends of a node. Given a node, expand all equivalent
nodes, find aggregate friends, expand them, and then report any missing
edges. This is the "let the user sync their social networking sites"
API. It lets them know if they were friends with somebody on Friendster
and they didn't know they were both friends on MySpace, they might want
But more generally, for developers, enabling new kinds of apps we
haven't been able to think of yet.
SOCNET is a service of INSNA, the professional association for social
network researchers (http://www.insna.org). To unsubscribe, send
an email message to [log in to unmask] containing the line
UNSUBSCRIBE SOCNET in the body of the message.