网络相对技术产物来说更象是社会产物。我为了社会作用设计它——帮助人们一起工作——而不是一种技术玩具。网络的最终目标是支持和改善世界上象网络一样的生存。我们丛生于家庭,组织和公司里。我们改善距离千里之外的信任,以及在对面的不信任(有缘千里来相会,无缘对面不相逢)。
Tim Berners-Lee, 编织网络
XFN 把人们放到链接上,当很多人开始在线并开始组织社会网络,象Technorati
和Feedster服务的兴起就是尝试显示多种不同的节点是如何连结在一起的。 这样的服务对于发现节点间的机械连接很有用。但他们没有揭开对这些节点后面的人类关系。
XFN 描绘了利用定义关于个人之间的关系的一小套的值来描述个体之间的关系。在HTML和XHTML文档里,这些作为超链接属性rel的值给出。 XFN 允许作者指出哪些网志是属于他们亲身接触到朋友及和其它人的关系。使用任何顺序排列XFN值,人们可以让他们的blog链和链接页面更有人情味,这两者已经是网志的共同特性。
在足够时髦的浏览器里,使用XFN值的作者可以容易的把特殊类型的链接风格化,这样朋友可以加粗显示,同事可以是斜体等等。创建者还希望这个习惯能被广泛推广,这样就可以允许他们制作链接于其网志后面的个人关系图表(相对于纯机械)。
Joe正着手进入它的Blog世界,在他的Blog链上有五个链接:
他的女朋友Jane;
他的朋友 Dave 和 Darryl;
产业专家 James, Joe在一个讨论会上遇见过一次。
和MetaFilter.
在Joe的Blog链象这样:
<a href="http://jane-blog.example.org/" rel="sweetheart date met">Jane</a> <a href="http://dave-blog.example.org/" rel="friend met">Dave</a> <a href="http://darryl-blog.example.org/" rel="friend met">Darryl</a> <a href="http://www.metafilter.com/">MetaFilter</a> <a href="http://james-blog.example.com/" rel="met">James专家</a>
MetaFilter 因没有表示一个实际的人时还没有值。列表的其它给予一个有空格分开的适于链接目标的值。这样,当Joe与他的小甜心Jane约会时(也许无须惊讶她是他亲自遇上的),他给她的链接值sweetheart date met。如果Joe没有终于Jane,并实际上与有时其它人约会。则值sweetheart就被拿开。
Adam和Brad通过个自的熟人相识。通过聚会上的几次谈话他们发现有共同兴趣。他们按如下相互链接:
<a href="http://brad-log.example.org/" rel="met friend">Brad</a> <a href="http://adam-log.example.org/" rel="met acquaintance">Adam</a>
注意象friend的值的定义是相称的,这样不需Blogs之间的链接是同一类型的。这里,Adam觉得Brad是一个朋友,但Brad把Adam作为一个熟人。
同样,对称值可能是单向的,例如,假如Adam决定迷恋Drad。然后他更新他的链接如下:
<a href="http://brad-log.example.org/" rel="met friend crush">Brad</a>
如果Brad没有吸引Adam,显然,他不想把类似的值加到他到Adam的链接上。如是是的话,他可以添加crush 的值到他到Adam的链接上。 任何得用XFN值作表的服务能注意到这个,把他们的值加到“相互吸引”列表里。更高级的服务可通知Adam和Brad并指出他们看来是相互吸引的。
让我们考虑五人闭群,所有人互相链接但不链到其它地方。该组的成员为:
我们再假设所有这些人都在blogging, 并有Blog链列出所有该组中的其它成员。在第一个例子中,Ingrid将有以下链接:
<a href="http://josh.example.com/" rel="friend met">Josh</a> <a href="http://kat.example.com/" rel="met acquaintance">Kat</a> <a href="http://mary.example.com/" rel="co-worker friend met">Mary</a> <a href="http://nick.example.com/">Nick</a>
注意Nick的rel属性空缺。因没有XFN值定义给Nick(从Ingrid的观点来看,所以无需rel。如果Ingrid 和 Nick 没有亲自认识。她可以简单的把rel="met" 加到链接上。
在这些组成员之间的 rel值如下:
| ...to Ingrid | ...to Josh | ...to Kat | ...to Mary | ...to Nick | |
|---|---|---|---|---|---|
| From Ingrid... | x | friend met | acquaintance met | co-worker friend met | |
| From Josh... | friend met | x | parent met | crush muse met | friend met |
| From Kat... | colleague met | child met | x | friend colleague met | acquaintance met |
| From Mary... | co-worker friend met | met | friend colleague met | x | met |
| From Nick... | friend met | crush met | met | x |
这一套关系还可以用不同的方法用图形表示。
例如,一个简单的相互认识图表象这样 | |
还可能把朋友关系和熟人链接如图表示。在该图形中,绿色线表示了朋友关籀»,线灰线表示熟人关系。如果一条线是虚线或有箭头,则该链接是单向的。也就是他们两人中只有一个声明了该关系。 | |
同样,我们可以作更专业的关系图。这里,厚灰线表示同事,线灰线表示校友。象前面一样,带箭头虚线表示一个单向链接。 | |
这样,组成员的爱人和家族链接能被表现为家族链接。这里,红线表示爱恋,绿线表示家庭链接。在这个假定里,家族关系从父亲画到孩子。 |
还有很多其它的方法来画组图,当然,有很多方法来表示链接。我们认为家庭成员之间的线就象一条双螺旋线,例如.
利用 认识CSS2的浏览器, 可以基于他们的rel 值对链接进行格式化(样式)。让我们再重新看一下Ingrid的链接:
<a href="http://josh.example.com/" rel="friend met">Josh</a> <a href="http://kat.example.com/" rel="met acquaintance">Kat</a> <a href="http://mary.example.com/" rel="co-worker friend met">Mary</a> <a href="http://nick.example.com/">Nick</a>
假设Ingrids想把任何朋友的链接做成粗体,对同事的链接加下划线,对其它熟悉的人做成斜体。使用
href="http://www.w3.org/TR/CSS21/selector.html#attribute-selectors">在CSS2.1中定义的属性选择器语法 , 以下的样式表可以满足他的目的:
a[rel~="friend"] {font-weight: bold;}
a[rel~="co-worker"] {text-decoration: underline;}
a[rel~="acquaintance"] {font-style: italic;}
The resulting links would look something like this:
还可以使用增强CSS2来在元素后面插入内容。这可以用来重建“打星”的习惯的链接到新身认识的人如下::
a[rel~="met"]:after {content: " *";}
这将给每个有XFNmet值的链接后面插入一个空格和一个星号。其优点是在同时加强社会网络时不需手工在Blog链里的源文件里添加星号了。把该规则加到Ingridr的链接可以产生象这样的效果:
一个 XFN 蜘蛛或爬虫程序必须至少:
<BASE>, <base />, xml:base).rel'属性值根踪链接标记(如 <a href>, <link />) 而略去不认识的值。注意HTML 'rel' 属性是以空格分开的一套值。