This proposal specifies how to represent Jabber profile data in terms of the Resource Description Framework.
WARNING: This document has not yet been accepted for consideration or approved in any official manner by the Jabber Software Foundation, and this document must not be referred to as a Jabber Enhancement Proposal (JEP). If this document is accepted as a JEP by the Jabber Council, it will be published at <http://www.jabber.org/jeps/> and announced on the <standards-jig@jabber.org> mailing list.
Status: Experimental
Type: Standards Track
Number: 0xxx
Version: 0.0.2
Last Updated: 2005-02-06
JIG: Standards JIG
Approving Body: Jabber Council
Dependencies: XMPP Core, XMPP Instant Messaging and Presence
Supersedes: JEP-0054
Superseded By: None
Short Name: rdfcard
Email: dominik.tomaszuk@gmail.com
JID: domel@chrome.pl
This Jabber Enhancement Proposal is copyright 1999 - 2005 by the Jabber Software Foundation (JSF) and is in full conformance with the JSF's Intellectual Property Rights Policy <http://www.jabber.org/jsf/ipr-policy.php>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at <http://www.opencontent.org/openpub/>).
The preferred venue for discussion of this document is the Standards-JIG discussion list: <http://mail.jabber.org/mailman/listinfo/standards-jig>.
The Extensible Messaging and Presence Protocol (XMPP) is defined in the XMPP Core and XMPP IM specifications contributed by the Jabber Software Foundation to the Internet Standards Process, which is managed by the Internet Engineering Task Force in accordance with RFC 2026. Any protocols defined in this JEP have been developed outside the Internet Standards Process and are to be understood as extensions to XMPP rather than as an evolution, development, or modification of XMPP itself.
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
This JEP defines metainformation about personal user.
RDF is an existing and widely-used standard for personal user information storage, somewhat like a vCard. The RDF format is defined in RDF Primer [1].
A user MAY retrieve his or her own RDFCard by sending XML of the following form to his or her server (the 'to' attibute SHOULD NOT be included):
Example 1. Requesting One's Own RDFCard
<iq
from='domel@chrome.pl/Home'
type='get'
id='v1'>
<query xmlns='http://jabber.org/protocol/rdfcard'/>
</iq>
The server SHOULD then return the RDFCard to the user:
Example 2. Receiving One's Own RDFCard
<iq
to='domel@chrome.pl/Home'
type='result'
id='v1'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://jabber.org/protocol/rdfcard'>
<rdf:Description rdf:about='xmpp:domel@chrome.pl'>
<person>
<family>Tomaszuk</family>
<given>Dominik</given>
<nick>Domel</nick>
<homepage rdf:resource='http://www.xhtml.b7.pl/'/>
<bday>1983-03-31</bday>
<language>
<rdf:Seq>
<rdf:li>Pl</rdf:li>
<rdf:li>En</rdf:li>
<rdf:li>Ru</rdf:li>
<rdf:li>Fr</rdf:li>
</rdf:Seq>
</language>
<keywords>
<rdf:Bag>
<rdf:li>Jabber</rdf:li>
<rdf:li>Mozilla</rdf:li>
<rdf:li>Music</rdf:li>
</rdf:Bag>
</keywords>
<organization>
<name>MozillaPL.org</name>
</organization>
<home>
<locality>Białystok</locality>
<country>Poland</country>
<email rdf:resource='mailto:dominik.tomaszuk@gmail.com'/>
</home>
</rdf:Description>
</rdf:RDF>
</iq>
A user MAY update his or her RDFCard by sending an IQ of type "set" to the
server, following the format in the previous use case.
If a user attempts to perform an IQ set on another user's RDFCard, the server
MUST return a <forbidden/> error.
A user MAY view another user's RDFCard by sending an IQ of type "get" to the other user's bare JID. A compliant server MUST return the RDFCard to the requestor and not forward the IQ to the requestee's connected resource.
Example 3. Requesting Another User's RDFCard
<iq
to='stpeter@jabber.org/Home'
type='get'
id='v2'>
<query xmlns='http://jabber.org/protocol/rdfcard'/>
</iq>
The server SHOULD then return the other user's RDFCard to the requestor:
Example 4. Receiving Another User's RDFCard
<iq
from='stpeter@jabber.org'
to='domel@chrome.pl/Home'
type='result'
id='v2'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://jabber.org/protocol/rdfcard'>
<rdf:Description rdf:about='xmpp:stpeter@jabber.org'>
<person>
<family>Saint-Andre</family>
<given>Peter</given>
<nick>stpeter</nick>
<homepage rdf:resource='http://www.jabber.org/people/stpeter.php' />
<bday>1966-08-06</bday>
<language>
<rdf:Seq>
<rdf:li>En</rdf:li>
</rdf:Seq>
</language>
<keywords>
<rdf:Bag>
<rdf:li>Jabber</rdf:li>
<rdf:li>Music</rdf:li>
<rdf:li>Poems</rdf:li>
</rdf:Bag>
</keywords>
<note>
More information about me is located on my
personal website: http://www.saint-andre.com/
</note>
</person>
<organization>
<name>Jabber Software Foundation</name>
<title>Executive Director</title>
<role>Patron Saint</role>
</organization>
<work>
<street>1899 Wynkoop Street</street>
<locality>Denver</locality>
<region>CO</region>
<postalcode>80202</postalcode>
<country>USA</country>
<email rdf:resource='mailto:stpeter@jabber.org'/>
</work>
<home>
<locality>Denver</locality>
<region>CO</region>
<postalcode>80209</postalcode>
<country>USA</country>
<email rdf:resource='mailto:stpeter@jabber.org'/>
</home>
</rdf:Description>
</rdf:RDF>
</iq>
Because the character data is intended to be readable by
humans, the <rdf:Description/> element SHOULD possess an xml:lang attribute
specifying the natural language of such character data.
A user MAY send XML with xml:lang attribute to view only one language defined in xml:lang attribute:
Example 5. Requesting One's Own RDFCard with xml:lang
<iq
from='domel@chrome.pl/Home'
type='get'
id='v3'>
<query xmlns='http://jabber.org/protocol/rdfcard' xml:lang='en'/>
</iq>
The server SHOULD then return the RDFCard to the user:
Example 6. Receiving One's Own RDFCard (one language)
<iq
from='domel@chrome.pl'
to='domel@chrome.pl/Home'
type='result'
id='v3'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://jabber.org/protocol/rdfcard'>
<rdf:Description rdf:about='xmpp:domel@chrome.pl' xml:lang='en'>
<person>
<family>Tomaszuk</family>
<given>Dominik</given>
<keywords>
<rdf:Bag>
<rdf:li>Music</rdf:li>
<rdf:li>Browsers</rdf:li>
</rdf:Bag>
</keywords>
<note>My homepage: http://xhtml.b7.pl/</note>
</person>
<home>
<country>Poland</country>
</home>
</rdf:Description>
</rdf:RDF>
</iq>
A user MAY send XML without xml:lang attribute to view all languages:
Example 7. Requesting One's Own RDFCard without xml:lang
<iq
to='domel@chrome.pl/Home'
type='get'
id='v4'>
<query xmlns='http://jabber.org/protocol/rdfcard'/>
</iq>
The server SHOULD then return the RDFCard to the user:
Example 8. Receiving One's Own RDFCard (all languages)
<iq
from='domel@chrome.pl'
to='domel@chrome.pl/Home'
type='result'
id='v4'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://jabber.org/protocol/rdfcard'>
<rdf:Description rdf:about='xmpp:domel@chrome.pl' xml:lang='en'>
<person>
<family>Tomaszuk</family>
<given>Dominik</given>
<keywords>
<rdf:Bag>
<rdf:li>Music</rdf:li>
<rdf:li>Browsers</rdf:li>
</rdf:Bag>
</keywords>
<note>My homepage: http://xhtml.b7.pl/</note>
</person>
<home>
<country>Poland</country>
</home>
</rdf:Description>
<rdf:Description rdf:about='xmpp:domel@chrome.pl' xml:lang='pl'>
<person>
<family>Tomaszuk</family>
<given>Dominik</given>
<keywords>
<rdf:Bag>
<rdf:li>Muzyka</rdf:li>
<rdf:li>Przeglądarki</rdf:li>
</rdf:Bag>
</keywords>
<note>Moja strona domowa: http://xhtml.b7.pl/</note>
</person>
<home>
<country>Polska</country>
</home>
</rdf:Description>
</rdf:RDF>
</iq>
| Element | Parent |
|---|---|
| rdf:RDF | none |
<rdf:RDF/> is the root element. It
MUST have namespace declaration.
| Element | Parent |
|---|---|
| rdf:Description | rdf:RDF |
<rdf:Description/>
SHOULD have rdf:about with user JID.
Example xx. rdf: RDF and rdf:Description
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://jabber.org/protocol/rdfcard'> <rdf:Description rdf:about='xmpp:domel@chrome.pl'> </rdf:Description> </rdf:RDF>
Group of person informations.
| Element | Parent |
|---|---|
| person | rdf:Description |
Example xx. person
<person> <family>Tomaszuk</family> </person>
Group of home informations.
| Element | Parent |
|---|---|
| home | rdf:Description |
Example xx. home
<home> <locality>Bialystok</locality> </home>
Group of work informations.
| Element | Parent |
|---|---|
| work | rdf:Description |
Example xx. work
<work> <country>Poland</country> </work>
Group of organization informations.
| Element | Parent |
|---|---|
| organization | rdf:Description |
Example xx. organization
<organization> <name>MozillaPL.org</name> </organization>
A family name is that part of a person's name which signifies the person's primary family association. Sometimes also called a "last name" or "surname".
Family name represents family element.
| Element | Parent | Range | Module |
|---|---|---|---|
| family | person | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. family
<family>Tomaszuk</family>
A given name is that part of a person's name which signifies the person's primary individual identity. Sometimes also called a "first name" or (in some countries) a "Christian name".
Given name represents given element.
| Element | Parent | Range | Module |
|---|---|---|---|
| given | person | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. given
<given>Dominik</given>
A middle name is that part of a person's name which signifies the person's secondary individual identity. Sometimes also called a "middle initial".
Middle name represents middle element.
| Element | Parent | Range | Module |
|---|---|---|---|
| middle | person | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. middle
<middle>Peter</middle>
A name prefix is that part of a person's name which prepends the person's full name (e.g., Mr or Dr). Sometimes also called an "honorific" or "title".
Name prefix represents prefix element.
| Element | Parent | Range | Module |
|---|---|---|---|
| prefix | person | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. prefix
<prefix>Dr</prefix>
A name suffix is that part of a person's name which is appended to the person's full name (e.g., Jr or Esq).
Name suffix represents suffix element.
| Element | Parent | Range | Module |
|---|---|---|---|
| suffix | person | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. suffix
<suffix>Jr</suffix>
A nick is a familiar name by which a person is called in informal contexts. Sometimes also called an "alias" or "nickname".
Nick represents nick element.
| Element | Parent | Range | Module |
|---|---|---|---|
| nick | person | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. nick
<nick>Domel</nick>
Gender is the self-defined gender of a person (this is not limited to "male" and "female", although those are the expected values in most instances). Sometimes also called "sex" or "gender identification".
Gender represents gender element.
| Element | Parent | Range | Module |
|---|---|---|---|
| gender | person | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. gender
<genter>male</genter>
A birthday is the date (day, month, year) in which a person was born.
Birthday represents bday element.
| Element | Parent | Range | Module |
|---|---|---|---|
| bday | person | http://www.w3.org/2001/XMLSchema#date | none |
Value of <pager/> SHOULD be
consonant with Jabber Date and Time Profiles [14].
Example xx. bday
<bday>1983-31-03</bday>
A note is comment and other supplemental informations which do not match to specify RDFCard elements.
Note represents note element.
| Element | Parent | Range | Module |
|---|---|---|---|
| note | person | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. note
<note>My homepage: http://xhtml.b7.pl/</note>
A photo provides a pictorial representation of a person. Sometimes also called a "mugshot".
Photo represents photo element.
| Element | Parent | Range | Module |
|---|---|---|---|
| photo | person | http://www.w3.org/2001/XMLSchema#anyURI | Image module |
Photos MAY be insert by data: scheme [4] or by traditional URI (for example http:// scheme) [6]. First is internal. Second is external. If the URI is external, client SHOULD download an image. If the URI is internal it SHOULD be coded in Base64 [8].
Example xx. photo
<i:photo rdf:resource="data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH hhx4dbgYKAAA7"/>
A avatar is a small image with user application. Sometimes also called a "buddy icon".
Avatar represents avatar element.
| Element | Parent | Range | Module |
|---|---|---|---|
| avatar | person | http://www.w3.org/2001/XMLSchema#anyURI | Image module |
Avatar MAY be insert by data: scheme [4] or by traditional URI (for example http:// scheme) [6]. First is internal. Second is external. If the URI is external, client SHOULD download an image. If the URI is internal it SHOULD be coded in Base64 [8].
Example xx. avatar
<i:avatar rdf:resource="http://example.com/av.png"/>
A homepage is personal webpage.
Homepage represents homepage element.
| Element | Parent | Range | Module |
|---|---|---|---|
| homepage | person | http://www.w3.org/2001/XMLSchema#anyURI | none |
Links SHOULD insert by traditional URI (for example http:// scheme) [6].
Example xx. homepage
<homepage rdf:resource="http://www.xhtml.b7.pl/"/>
A keywords is self-defined area of interest.
Keywords represents keywords element.
| Element | Parent | Range (rdf:li) | Module |
|---|---|---|---|
| keywords | person | http://www.w3.org/2001/XMLSchema#string | none |
Keywords sequence is not important so <rdf:Bag/> element
SHOULD be used. It
MAY have more then one value.
Example 25. keywords
<keywords>
<rdf:Bag>
<rdf:li>Jabber</rdf:li>
<rdf:li>Mozilla</rdf:li>
<rdf:li>Music</rdf:li>
</rdf:Bag>
</keywords>
A quote is a phrase or saying that a person identifies with in some way.
Quote represents quote element.
| Element | Parent | Range (rdf:li) | Module |
|---|---|---|---|
| quote | person | http://www.w3.org/2001/XMLSchema#string | none |
Quote sequence is not important so <rdf:Bag/> element
SHOULD be used. It MAY
have more then one value.
Example xx. quote
<quote>
<rdf:Bag>
<rdf:li>I am large, I contain contradictions.</rdf:li>
<rdf:li>One crowded hour of glorious life is worth an age without a name.</rdf:li>
</rdf:Bag>
</quote>
A languages define which language does person know.
Languages represents languages element.
| Element | Parent | Range (rdf:li) | Module |
|---|---|---|---|
| languages | person | http://www.w3.org/2001/XMLSchema#language | none |
Languages sequence is important so <rdf:Seq/> element
SHOULD be used. First language code [7] means that person know this language the best. Last means that person know this language the worst. It
MAY have more then one value.
Example xx. languages
<language>
<rdf:Seq>
<rdf:li>En</rdf:li>
<rdf:li>Pl</rdf:li>
<rdf:li>Fr</rdf:li>
</rdf:Seq>
</language>
A country is the sovereign nation in which a person is located. Sometimes also called a "nation".
Country represents country element.
| Element | Parent | Range | Module |
|---|---|---|---|
| country | home, work, organization | http://www.w3.org/2001/XMLSchema#string | none |
<country/> element is the same as <country/> element from User
Physical Location [5]
Example xx. country
<country>Poland</country>
A region is a second-level administrative unit within the nation in which a person is located. Sometimes also called a "province", "state", or "administrative area".
Region represents region element.
| Element | Parent | Range | Module |
|---|---|---|---|
| region | home, work, organization | http://www.w3.org/2001/XMLSchema#string | none |
<region/> element is the same as <region/> element from User
Physical Location [5]
Example xx. region
<region>Texas</region>
A locality is a defined place within the region in which a person is located. Sometimes also called a "city", "town", or "village".
Locality represents locality element.
| Element | Parent | Range | Module |
|---|---|---|---|
| locality | home, work, organization | http://www.w3.org/2001/XMLSchema#string | none |
<locality/> element is the same as <locality/> element from User
Physical Location [5]
Example xx. locality
<locality>New York City</locality>
An area is a sub-division within the locality in which a person is located. Sometimes also called a "neighborhood", "suburb", "district", or "section".
Area represents area element.
| Element | Parent | Range | Module |
|---|---|---|---|
| area | home, work, organization | http://www.w3.org/2001/XMLSchema#string | none |
<area/> element is the same as <area/> element from User
Physical Location [5]
Example xx. bcbcvb
<area>Manhattan</area>
A street is the street address. Sometimes also called a "thoroughfare".
Street represents street element.
| Element | Parent | Range | Module |
|---|---|---|---|
| street | home, work, organization | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. street
<street>Fifth Avenue</street>
A building is the name for a specific structure on a street or within an area.
Building represents building element.
| Element | Parent | Range | Module |
|---|---|---|---|
| building | work, organization | http://www.w3.org/2001/XMLSchema#string | none |
<building/> element is the same as <building/> element from User
Physical Location [5]
Example xx. building
<building>Empire State Building</building>
A floor is a named or numbered floor or level within a building. Sometimes also called a "level", "block", or "suite".
Floor represents floor element.
| Element | Parent | Range | Module |
|---|---|---|---|
| floor | work, organization | http://www.w3.org/2001/XMLSchema#string | none |
<floor/> element is the same as <floor/> element from User
Physical Location [5]
Example xx. floor
<floor>58</floor>
A room is a named or numbered subdivision of a floor. Sometimes also called a "unit" or "apartment".
Room represents room element.
| Element | Parent | Range | Module |
|---|---|---|---|
| room | work, organization | http://www.w3.org/2001/XMLSchema#string | none |
<room/> element is the same as <room/> element from User
Physical Location [5]
Example xx. room
<room>584</room>
A postal code is a set of numeric or alphanumeric characters used to identify an area for postal delivery. Sometimes also called a "ZIP code".
Postal code represents postalcode element.
| Element | Parent | Range | Module |
|---|---|---|---|
| postalcode | home, work, organization | http://www.w3.org/2001/XMLSchema#string | none |
<postalcode/> element is the same as <postalcode/> element from User
Physical Location [5]
Example xx. postalcode
<postalcode>10002</postalcode>
A postal box is a number for physical mail delivery.
Postal box represents pobox element.
| Element | Parent | Range | Module |
|---|---|---|---|
| pobox | home, work, organization | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. pobox
<pobox>773</pobox>
A pager number is a number to pager contact.
Pager number represents pager element.
| Element | Parent | Range | Module |
|---|---|---|---|
| pager | home, work, organization | http://www.w3.org/2001/XMLSchema#anyURI | none |
Value of <pager/> SHOULD be reprezent by tel: scheme [9].
Example xx. pager
<pager rdf:resource="tel:+1-111-111-1111"/>
A cell number is a number to cell contact. Sometimes also called a "mobile".
Cell number represents cell element.
| Element | Parent | Range | Module |
|---|---|---|---|
| cell | home, work, organization | http://www.w3.org/2001/XMLSchema#anyURI | none |
Value of <cell/> SHOULD be reprezent by tel: scheme [9].
Example xx. cell
<cell rdf:resource="tel:+1-111-111-1111"/>
A landline number is a number to landline contact.
Landline number represents landline element.
| Element | Parent | Range | Module |
|---|---|---|---|
| landline | home, work, organization | http://www.w3.org/2001/XMLSchema#anyURI | none |
Value of <landline/> SHOULD be reprezent by tel: scheme [9].
Example xx. landline
<landline rdf:resource="tel:+1-111-111-1111"/>
A fax number is a number to fax contact.
Fax number represents fax element.
| Element | Parent | Range | Module |
|---|---|---|---|
| fax | home, work, organization | http://www.w3.org/2001/XMLSchema#anyURI | none |
Value of <fax/> SHOULD be reprezent by tel: scheme [9].
Example xx. fax
<fax rdf:resource="tel:+1-111-111-1111"/>
A message number is a number to send messages. Sometimes also called a "sms" ("Short Message Service"), or a "mms" ("Multimedia Messaging System").
Message number represents message element.
| Element | Parent | Range | Module |
|---|---|---|---|
| name | home, work, organization | http://www.w3.org/2001/XMLSchema#anyURI | none |
Value of <message/> SHOULD be reprezent by tel: scheme [9].
Example xx. name
<message rdf:resource="tel:+1-111-111-1111"/>
An email address is electronic address to send mails. Sometimes also called a "mbox" or "electronic mail".
Email represents email element.
| Element | Parent | Range | Module |
|---|---|---|---|
| home, work, organization | http://www.w3.org/2001/XMLSchema#anyURI | none |
Value of <email/> SHOULD be reprezent by mailto: scheme
[6].
Example xx. email
<email rdf:resource="mailto:dominik.tomaszuk@gmail.com"/>
Latitude is a person's latitude in relation to the equator, where positive latitude is north of the equator and negative latitude is south of the equator.
Latitude represents lat element.
| Element | Parent | Range | Module |
|---|---|---|---|
| lat | home, work, organization | http://www.w3.org/2001/XMLSchema#decimal | none |
<lat/> element is the same as <lat/> element from User
Geolocation [3]
Example xx. lat
<lat>39.75477</lat>
Longitude is a person's longitude in relation to the equator, where positive longitude is east of the meridian and negative longitude is west of the equator.
Longitude represents lon element.
| Element | Parent | Range | Module |
|---|---|---|---|
| lon | home, work, organization | http://www.w3.org/2001/XMLSchema#decimal | none |
<lon/> element is the same as <lon/> element from User
Geolocation [3]
Example xx. lon
<lon>-104.99768</lon>
Altitude is a person's height or depth in relationship to sea level, where positive altitude is meters above sea level and negative altitude is meters below sea level.
Altitude represents alt element.
| Element | Parent | Range | Module |
|---|---|---|---|
| alt | home, work, organization | http://www.w3.org/2001/XMLSchema#decimal | none |
<alt/> element is the same as <alt/> element from User
Geolocation [3]
Example xx. alt
<alt>1609</alt>
Title is a job title or organization title. Sometimes also called a "functional position".
Title represents title element.
| Element | Parent | Range | Module |
|---|---|---|---|
| title | work, organization | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. title
<title>Executive Director</title>
Role is a person's role in work or organization. Sometimes also called a "occupation".
Role represents role element.
| Element | Parent | Range | Module |
|---|---|---|---|
| role | work, organization | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. role
<role>Programmer</role>
Name is a work name or organizations name.
Name represents name element.
| Element | Parent | Range | Module |
|---|---|---|---|
| name | work, organization | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. name
<name>Jabber Software Foundation</name>
Unit is a name of organization or work unit.
Unit represents unit element.
| Element | Parent | Range | Module |
|---|---|---|---|
| name | work, organization | http://www.w3.org/2001/XMLSchema#string | none |
Example xx. unit
<unit>marketing</unit>
Link is an URI to work or organization webpage. Sometimes also called a "webpage" or a "website"
Link represents link element.
| Element | Parent | Range | Module |
|---|---|---|---|
| link | work, organization | http://www.w3.org/2001/XMLSchema#anyURI | none |
Links SHOULD insert by traditional URI (for example http:// scheme) [6].
Example xx. link
<link rdf:resource="http://www.jabber.org/"/>
Logo is a graphic image of a work or organization logo.
Logo represents logo element.
| Element | Parent | Range | Module |
|---|---|---|---|
| logo | work, organization | http://www.w3.org/2001/XMLSchema#anyURI | Image module |
Photos MAY be insert by data: scheme [4] or by traditional URI (for example http:// scheme) [6]. First is internal. Second is external. If the URI is external client SHOULD download an image. If the URI is internal it SHOULD be coded in Base64 [8].
Example xx. link
<i:logo rdf:resource="http://www.jabber.org/images/jsf-banner.png"/>
A user MAY define one or more privacy lists, which are stored by the user's server. Each
<list/> element contains one or more rules in the form of <item/> elements, and each
<item/> element uses attributes to define a privacy rule type, a specific value to which the rule applies,
the relevant action, and the place of the item in the processing order.
Example 9. Sending privacy lists
<iq
from='stpeter@jabber.org'
type='set'
id='v5'>
<query xmlns='jabber:iq:privacy'>
<list name='block'>
<item type='subscribe'
value='none'
action='deny'
order='1'/>
</list>
</query>
</iq>
Example 10. Sending RDFCard reference to privacy lists
<iq
from='stpeter@jabber.org'
type='set'
id='v5'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://jabber.org/protocol/rdfcard'>
<rdf:Description rdf:about='xmpp:stpeter@jabber.org'>
<person>
<family>Saint-Andre</family>
<given>Peter</given>
<nick>stpeter</nick>
</person>
<work>
<street access='block'>1899 Wynkoop Street</street>
<locality>Denver</locality>
<region>CO</region>
<postalcode>80202</postalcode>
<country>USA</country>
<email access='block' rdf:resource='mailto:stpeter@jabber.org'/>
</work>
</rdf:Description>
</rdf:RDF>
</iq>
When user do not have subscription:
Example 11. Receiving Another User's RDFCard without blocking information
<iq
from='stpeter@jabber.org'
to='domel@chrome.pl/Home'
type='result'
id='v5'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://jabber.org/protocol/rdfcard'>
<rdf:Description rdf:about='xmpp:stpeter@jabber.org'>
<person>
<family>Saint-Andre</family>
<given>Peter</given>
<nick>stpeter</nick>
</person>
<work>
<locality>Denver</locality>
<region>CO</region>
<postalcode>80202</postalcode>
<country>USA</country>
</work>
</rdf:Description>
</rdf:RDF>
</iq>
When we define more then one home, work, or organization we SHOULD add to this elements rdf:ID attribute.
Example 12. Define more then one organization
<iq
to='domel@chrome.pl/Home'
type='result'
id='v6'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://jabber.org/protocol/rdfcard'>
<rdf:Description rdf:about='xmpp:domel@chrome.pl'>
<person>
<family>Tomaszuk</family>
<given>Dominik</given>
<nick>Domel</nick>
</person>
<organization rdf:ID='moz'>
<name>MozillaPL.org</name>
</organization>
<organization rdf:ID='jab'>
<name>JabberPL.org</name>
</organization>
<home>
<locality>Białystok</locality>
<country>Poland</country>
</home>
</rdf:Description>
</rdf:RDF>
</iq>
RDFCard MAY be expand to others elements. Modules MUST have own namespace.
Image module MAY be supported. Image module consists of
<photo/>, <avatar/> and
<logo/>.
Example 1. Requesting One's Own RDFCard with Image Module
<iq
from='domel@chrome.pl/Home'
type='get'
id='v7'>
<query xmlns='http://jabber.org/protocol/rdfcard'
xmlns:i='http://jabber.org/protocol/rdfcard#image'/>
</iq>
The server SHOULD then return the RDFCard to the user:
Example 2. Receiving One's Own RDFCard with Image Module
<iq
to='domel@chrome.pl/Home'
type='result'
id='v7'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
xmlns='http://jabber.org/protocol/rdfcard'
xmlns:i='http://jabber.org/protocol/rdfcard#image'>
<rdf:Description rdf:about='xmpp:domel@chrome.pl'>
<person>
<family>Tomaszuk</family>
<given>Dominik</given>
<nick>Domel</nick>
<homepage rdf:resource='http://www.xhtml.b7.pl/'/>
<bday>1983-03-31</bday>
<i:photo rdf:resource='http://www.example.com/photo.png'/>
</person>
</rdf:Description>
</rdf:RDF>
</iq>
User can expand RDFCard to own but support is OPTIONAL.
There are no security features or concerns related to this proposal.
This JEP requires no interaction with the Internet Assigned Numbers Authority (IANA) [2].
The Jabber Registrar [10] shall include 'http://jabber.org/protocol/rdfcard' and 'http://jabber.org/protocol/rdfcard#image' in its registry of protocol namespaces.
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://jabber.org/protocol/rdfcard'
xmlns='http://jabber.org/protocol/rdfcard'
elementFormDefault='qualified'>
<xs:annotation>
<xs:documentation>
The protocol documented by this schema is defined in JEP-0xxx.
</xs:documentation>
</xs:annotation>
TBD
</xs:schema>
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://jabber.org/protocol/rdfcard#image'
xmlns='http://jabber.org/protocol/rdfcard#image'
elementFormDefault='qualified'>
<xs:annotation>
<xs:documentation>
The protocol documented by this schema is defined in JEP-0xxx.
</xs:documentation>
</xs:annotation>
TBD
</xs:schema>
There are many XML data formats for physical location, address information or person information. It is beyond the scope of this JEP to provide a mapping from the extension defined herein to every such format. However, it would be valuable to provide a mapping from the Jabber/XMPP format to the formats used in other presence or extended presence protocols.
Table 1: Mapping RDFCard to vCard XML, FOAF [12] and xNAL [13]
| Jabber/XMPP | vCard XML | FOAF 0.1 | xNL and xAL |
|---|---|---|---|
| family | FAMILY | family_name/surname | LastName |
| given | GIVEN | first_name/givenname | FirstName |
| middle | MIDDLE | MiddleName | |
| prefix | PREFIX | title | Title |
| suffix | SUFFIX | GeneralSuffix | |
| nick | NICKNAME | nick | Alias |
| gender | gender | ||
| bday | BDAY | ||
| note | NOTE | ||
| photo | PHOTO | depiction/img | |
| homepage | URL | homepage | |
| keywords | topic_interest | ||
| quote | |||
| languages | |||
| country | CTRY | CountryName | |
| region | REGION | AdministrativeAreaName | |
| locality | LOCALITY | LocalityName | |
| area | DependentLocalityName | ||
| street | STREET | ThoroughfareName | |
| building | EXTADD | BuildingName | |
| floor | EXTADD | SubPremiseNumber | |
| room | EXTADD | SubPremiseNumber | |
| postalcode | PCODE | PostalCodeNumber | |
| pobox | POBOX | PostBoxNumber | |
| pager | PAGER | phone | |
| cell | CELL | phone | |
| landline | phone | ||
| fax | FAX | phone | |
| message | phone | ||
| mbox | |||
| lat | LAT | ||
| lon | LON | ||
| alt | |||
| title | TITLE | ||
| role | ROLE | ||
| name | ORGNAME | ||
| unit | ORGUNIT | ||
| link | URL | workplaceHomepage/schoolHomepage | |
| logo | LOGO | logo |
1. RDF Primer <http://www.w3.org/TR/rdf-primer/>. For further information, see <http://www.w3.org/RDF/>
2. The Internet Assigned Numbers Authority (IANA) is the central coordinator for the assignment of unique parameter values for Internet protocols, such as port numbers and URI schemes. For further information, see <http://www.iana.org/>.
3. JEP-0080: User Geolocation <http://www.jabber.org/jeps/jep-0080.html>.
4. RFC 2397: "data" URL scheme <www.ietf.org/rfc/rfc2397.txt>.
5. JEP-0112: User Physical Location <http://www.jabber.org/jeps/jep-0112.html>.
6. RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax <http://www.ietf.org/rfc/rfc2396.txt>.
7. ISO 639: Language Codes. See <http://www.w3.org/WAI/ER/IG/ert/iso639.htm>
8. RFC 3548: The Base16, Base32, and Base64 Data Encodings <http://www.ietf.org/rfc/rfc3548.txt>.
9. RFC 3966: The tel URI for Telephone Numbers <http://www.ietf.org/rfc/rfc3966.txt>.
10. The Jabber Registrar maintains a list of reserved Jabber protocol namespaces as well as registries of parameters used in the context of protocols approved by the Jabber Software Foundation. For further information, see <http://www.jabber.org/registrar/>.
11. XML Schema Part 2: Datatypes <http://www.w3.org/TR/xmlschema-2/>.
12. Friend of a Friend (FOAF) 0.1 <http://xmlns.com/foaf/0.1/>.
13. Extensible Name and Address Language <http://xml.coverpages.org/xnal.html>. For further information, see <http://www.oasis-open.org/>.
14. JEP-0082: Jabber Date and Time Profiles <http://www.jabber.org/jeps/jep-0082.html>.