rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">
【vCard 3.0】
Technical Report: http://www.w3.org/TR/vcard-rdf
The namespace: http://www.w3.org/2001/vcard-rdf/3.0#
Basic Properties
FN
NICKNAME
BDAY
MAILER
GEO
TITLE
ROLE
CATEGORIES
NAME:此Name并不是指当前描述的人的名字
SOURCE:对应RDF中的about属性,用于描述唯一的指定一个人
NOTE
PRODID
REV
SORT-STRING
CLASS
e.g. <vCard:FN> Corky Crystal </vCard:FN>
<vCard:BDAY> 1980-01-01 </vCard:BDAY>
<vCard:TITLE> Computer Officer Class 3 </vCard:TITLE>
<vCard:ROLE> Programmer </vCard:ROLE>
Grouping & Ordering
若vCard某个属性有多个值,RDF提供三种机制:Bags多值且顺序不重要,Sequences多值且顺序重要,Alternatives多者择一且第一个为默认值,Group。
e.g. <vCard:ROLE> <rdf:bag>
<rdf:li> Programmer </rdf:li>
<rdf:li> Fire Warden </rdf:li>
</rdf:bag>
</vCard:ROLE>
<vCard:TITLE> <rdf:seq>
<rdf:li> Principal Research Scientist </rdf:li>
<rdf:li> Visiting Professor </rdf:li>
</rdf:seq>
</vCard:TITLE>
<vCard:EMAIL> <rdf:alt>
<rdf:li> corky@qqqfoo.com </rdf:li>
<rdf:li> info@qqqfoo.com </rdf:li>
<rdf:li> corky2000cool@hotmail.com </rdf:li>
</rdf:alt>
</vCard:EMAIL>
<vCard:GROUP>
<rdf:bag>
<rdf:li rdf:parseType="Resource">
<vCard:NICKNAME> Corky Porky </vCard:NICKNAME>
<vCard:NOTE> Only used by close friends </vCard:NOTE>
</rdf:li> <rdf:li rdf:parseType="Resource">
<vCard:NICKNAME> Princess Corky </vCard:NICKNAME>
<vCard:NOTE> Only used by my Mother </vCard:NOTE>
</rdf:li>
</rdf:bag>
</vCard:GROUP>
rdf:parseType=Resource指明,虽然<rdf:li>是一个<rdf:Description>的元素,但是也要进行处理(应该是指在智能代理中进行分析,不能单单把它当作一个<rdf:Description>的元素)。
Properties with Attributes
使用http://www.w3.org/2001/vcard-rdf/3.0#<type>来声明一个资源的类型,其中<type>是正式定义的vCard类型,而属性值必须通过<rdf:value>给出。
e.g. <vCard:TEL rdf:parseType="Resource">
<rdf:value> +61 7 555 5555 </rdf:value>
<rdf:type rdf:resource="http://www.w3.org/2001/vcard-rdf/3.0#work"/>
<rdf:type rdf:resource="http://www.w3.org/2001/vcard-rdf/3.0#voice"/>
</vCard:TEL>
vCard属性可能有的类型参数:
vCard Property Type Parameter Values
-------------- -----------------------------------------------
TEL home, msg, work, pref, voice, fax, cell, video,
pager, bbs, modem, car, isdn, pcs
EMAIL internet, x400, pref
ADR dom, intl, postal, parcel, home, work, pref
LABEL dom, intl, postal, parcel, home, work, pref
TZ text
如果这个类型参数是在外部定义的(即不是vCard中的已有类型),就需要使用"vCard:TYPE"来声明。
e.g. 将UID指定为"United States Social Security Number"类型
<vCard:UID vCard:TYPE="US-SSN">987-65-4320</vCard:UID>
除了UID之外,vCard中还未指定的参数类型包括:
vCard Property Type Parameter Values
-------------- -----------------------------------------------
UID Any IANA registered or non-standard identifier formats
LOGO Any IANA registered or non-standard image formats
PHOTO Any IANA registered or non-standard image formats
SOUND Any IANA registered or non-standard audio formats
注意1、URL属性的值必须是已验证的URI,RDF提供了一个速记机制即使用"rdf:resource"属性对其进行编码,如<vCard:URL rdf:resource="http://qqqfoo.com/me.html"/>
2、LABEL property可能有一个包含XML标记的格式化文本,可以通过将"rdf:parseType"设置为Literal来指定不解释这个文本,而是当作纯文本进行处理,如
<vCard:LABEL rdf:parseType="Resource">
<rdf:type rdf:resource="http://www.w3.org/2001/vcard-rdf/3.0#postal"/>
<rdf:value rdf:parseType="Literal">
Corky Crystal<br/>
<b>qqqfoo.com Pty Ltd</b><br/>
PO Box 555<br/>
Coolville, AUSTRALIA
</rdf:value>
</vCard:LABEL>
Structured Properties
很多vCard属性定义了子结构,维护和表达它们很重要,而且RDF模式下完全支持这种子结构。
vCard Property Substructure Name Property Type Name
-------------- -------------------- ------------------
N Family Name Family
Given Name Given
Additional Names Other
Honorific Prefixes Prefix
Honorific Suffixes Suffix
ADR Post Office Box Pobox
Extended Address Extadd
Street Address Street
Locality Locality
Region Region
Postal Code Pcode
Country Country
ORG Organisation Name Orgname
Organisation Unit Orgunit
e.g. <vCard:N rdf:parseType="Resource">
<vCard:Family> Crystal </vCard:Family>
<vCard:Given> Corky </vCard:Given>
<vCard:Other> Jacky </vCard:Other>
<vCard:Prefix> Dr </vCard:Prefix>
<vCard:Suffix> III </vCard:Suffix>
</vCard:N>
注意 1、即使Label propery有使用N和ADR定义的相同的结构,我们也不能使用这些值,因为Label的值是不准备被解释说明的格式化文本
2、Organisational Units隐含了顺序特征(由高到低),所以需要使用<rdf:seq>来声明。
Binary Values
vCard中很多属性可以通过两种方式指定二进制值:内部的可以编码成Base64,或这通过URI引用外部的。这些属性有:
PHOTO
LOGO
SOUND
KEY
内部: <vCard:PHOTO vCard:ENCODING="b" vCard:TYPE="image/jpeg">
MSJD9s99DS(S@W99329(#9....</vCard:PHOTO>
外部: <vCard:PHOTO vCard:TYPE="image/gif" rdf:resource="http://qqqfoo.com/me.gif"/>
Agent Property
Agent属性允许声明描述另一个vCard资源。RDF允许一个vCard资源内联在另一个里。
e.g. <vCard:FN> Corky Crystal </vCard:FN>
<vCard:TITLE> Research Director </vCard:TITLE>
<vCard:AGENT rdf:parseType="Resource">
<vCard:FN> John Mutton </vCard:FN>
<vCard:TITLE> Personal Assistant </vCard:TITLE>
<vCard:EMAIL> john@qqqfoo.com </vCard:EMAIL>
</vCard:AGENT>
也可以通过URI指定对一个外部资源的引用:
<vCard:FN> Corky Crystal </vCard:FN>
<vCard:TITLE> Research Director </vCard:TITLE>
<vCard:AGENT rdf:resource="http://qqqfoo.com/staff/mutton/"/>
RDF vCard Language
使用"xml:lang"属性(取值定义在RFC1766文档中)来指定vCard中属性值的语言类型:
<vCard:FN xml:lang="en"> Corky Crystal </vCard:FN>
<vCard:TITLE xml:lang="en"> Computer Officer Class 3 </vCard:TITLE>
<vCard:ROLE xml:lang="en"> Programmer </vCard:ROLE>
也可以使用Alternative来指定同一个概念的不用语言表示:
<vCard:ROLE> <rdf:alt>
<rdf:li xml:lang="en"> Programmer </rdf:li>
<rdf:li xml:lang="fr"> Programmeur </rdf:li>
<rdf:li xml:lang="it"> Programmatore </rdf:li>
</rdf:alt>
</vCard:ROLE>