<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "http://xml.resource.org/authoring/rfc2629.dtd"
[
  <!ENTITY RFC2119 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
  <!ENTITY RFC6350 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6350.xml'>
  <!ENTITY RFC6473 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6473.xml'>
  <!ENTITY RFC6474 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6474.xml'>
  <!ENTITY RFC6715 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6715.xml'>
  <!ENTITY RFC6869 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6869.xml'>
  <!ENTITY RFC7095 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7095.xml'>
  <!ENTITY RFC7942 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7942.xml'>
  <!ENTITY RFC8605 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8605.xml'>
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>

<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="4"?>
<?rfc compact="yes"?>
<?rfc subcompact="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc iprnotified="no"?>

<rfc category="info" docName="draft-ietf-jmap-jscontact-vcard-01" ipr="trust200902">
  <front>
    <title abbrev="jscontact-vcard">JSContact: Converting from and to vCard</title>
       
    <author fullname="Mario Loffredo" initials="M." surname="Loffredo">
      <organization>IIT-CNR/Registro.it</organization>
      <address>
        <postal>
          <street>Via Moruzzi,1</street>
          <city>Pisa</city>
          <country>IT</country>
          <code>56124</code>
        </postal>
        <email>mario.loffredo@iit.cnr.it</email>
        <uri>http://www.iit.cnr.it</uri>
      </address>
    </author>

    <author fullname="Robert Stepanek" initials="R." surname="Stepanek">
      <organization>FastMail</organization>
      <address>
        <postal>
          <street>PO Box 234, Collins St West</street>
          <city>Melbourne</city>
          <country>AU</country>
          <code>VIC 8007</code>
        </postal>
        <email>rsto@fastmailteam.com</email>
        <uri>https://www.fastmail.com</uri>
      </address>
    </author>

    <date/>
    <area>Applications</area>
    <workgroup>jmap</workgroup>
    <keyword>JSON</keyword>
    <keyword>contacts</keyword>
    <keyword>vCard</keyword>
    <keyword>jCard</keyword>
    
    <abstract>
      <t>This document provides informational guidance for converting the contact card defined by JSContact specification, namely JSCard, from and to vCard.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">

    <section title="Motivation">

      <t>The JSContact specification <xref target="draft-ietf-jmap-jscontact"/> has been defined to represent contact card information as a more efficient alternative to vCard <xref target="RFC6350"/> and its JSON-based version named jCard <xref target="RFC7095"/>.</t>
      <t>While new applications might adopt JSContact as their main format to exchange contact card data, they are likely to interoperate with services and clients that just support vCard/jCard.  Similarly, existing contact data providers and consumers already using vCard/jCard might want to represent their data also according to the JSContact specification.</t>
      <t>To facilitate this use cases, this document provides informational guidance about how to convert the card defined in JSContact, namely JSCard, from and to vCard.</t>
    </section>

    <section title="Scope and Caveats">

      <t>JSContact and vCard have a lot of semantics in common, however some differences must be outlined:
       <list style="symbols">
      <t>The JSContact data model defines some contact information that doesn't have a direct mapping with vCard elements.  In particular, unlike vCard, JSContact distinguishes between a single contact card, named JSCard, and a group of contact cards, named JSCardGroup.<vspace blankLines='1' /></t>
      <t>The vCard specification includes some features (like parameters) that have been formally removed from JSCard due to a complete refactoring of vCard content.  Anyway, the vCard parameters may appear as JSCard features.<vspace blankLines='1' /></t>
      <t>Some vCard elements represented individually have been mapped onto members of JSCard objects.<vspace blankLines='1' /></t>
      <t>The vCard custom elements, identified by the prefix &quot;x-&quot;, don't have a direct counterpart in the JSContact specification.</t>
      </list></t>

    </section>

      <section title="Conventions Used in This Document">
      	<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as described in <xref target="RFC2119"/>.</t>
      </section>
   </section>

    <section title="Mapping">

      <t>This section contains the mapping between vCard and JSCard.  The vCard properties are grouped according to the categories defined by <xref target="RFC6350"/>.</t>
      <t>Where it is needed, the JCardGroup is taken into account.</t>
      <t>In the following of this document, the vCard features, namely properties and parameters, are written in uppercase while the JSCard features are written in camel case.</t>

      <section title="General Properties">

          <section title="BEGIN and END">
              <t>The BEGIN and END properties don't have a direct match with a JSCard feature.</t>
          </section>

          <section title="SOURCE">
          <t>A SOURCE element is represented as a &quot;Resource&quot; object in the &quot;online&quot; array (<xref target="source_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;source&quot;,true&gt;.</t>
            <t>The PREF and MEDIATYPE parameters are mapped onto the &quot;isPreferred&quot; and &quot;mediaType&quot; members respectively.</t>

            <figure anchor="source_mapping" title="SOURCE mapping example">
                <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    SOURCE:http://directory.example.com/addressbooks/jdoe/Jean%20Dupont.vcf
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "source": true },
               "value": "http://directory.example.com/addressbooks/jdoe/Jean%20Dupont.vcf"
              },
              ...
            ],
    ...
    }
        ]]></artwork>
            </figure>
        </section>

        <section title="KIND">
          <t>The KIND element is mapped onto the &quot;kind&quot; member (<xref target="kind_mapping"/>).  Allowed values are those, except &quot;group&quot;, described in section 6.1.4 of <xref target="RFC6350"/> and extended with the values declared in <xref target="RFC6473"/> and <xref target="RFC6869"/>.  A group of cards is represented through a JSCardGroup.</t>

            <figure anchor="kind_mapping" title="KIND mapping example">
                <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    KIND:individual
    ...
    END:VCARD

    {
    ...
    "kind": "individual",
    ...
    }
        ]]></artwork>
            </figure>
        </section>

          <section title="XML">
              <t>The XML property doesn't have a direct match with a JSCard feature.</t>
          </section>

      </section>

      <section title="Identification Properties">

          <section title="FN">
              <t>All the FN elements are globally represented through the &quot;fullName&quot; member.  The presence of more than one name is implicitly associated with the full name translations in various languages regardless of the presence of the ALTID parameter.  Each translation corresponds to a different entry of the &quot;localizations&quot; map (<xref target="fn_n_nickname_mapping"/>).</t>
          </section>

          <section title="N and NICKNAME">
              <t>Both the N and NICKNAME elements are converted into equivalent items of the &quot;name&quot; array (<xref target="fn_n_nickname_mapping"/>):</t>
              <t><list style="symbols">
                  <t>the N components are transformed into related &quot;NameComponent&quot; objects as presented in <xref target="n_components"/>.  Name components SHOULD be ordered such that their values joined by whitespace produce a valid full name of this entity;<vspace blankLines='1' /></t>
                  <t>Each NICKNAME element is mapped onto an object whose &quot;type&quot; member is set to &quot;nickname&quot;</t>
              </list></t>

              <texttable anchor="n_components" title="N components mapping">
                  <ttcol align="left">N component</ttcol>
                  <ttcol align="left">&quot;type&quot; value</ttcol>
                  <c>Honorific Prefixes</c><c>prefix</c>
                  <c>Given Names</c><c>personal</c>
                  <c>Family Names</c><c>surname</c>
                  <c>Additional Names</c><c>additional</c>
                  <c>Honorific Suffixes</c><c>suffix</c>
              </texttable>

              <figure anchor="fn_n_nickname_mapping" title="FN, N, NICKNAME mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    FN:Mr. John Q. Public\, Esq.
    N:Public;John;Quinlan;Mr.;Esq.
    NICKNAME:Johnny
    ...
    END:VCARD

    {
    ...
    "fullName":{
               "value": "Mr. John Q. Public, Esq."
               },
    "name":[
             { "value":"Mr.", "type": "prefix" },
             { "value":"John", "type": "personal" },
             { "value":"Public", "type": "surname" },
             { "value":"Quinlan", "type": "additional" },
             { "value":"Esq.", "type": "suffix" },
             { "value":"Johnny", "type": "nickname" }
           ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="PHOTO">
              <t>A PHOTO element is represented as a &quot;Resource&quot; object in the &quot;online&quot; array (<xref target="photo_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;photo&quot;,true&gt;.</t>
              <t>The PREF and MEDIATYPE parameters are mapped onto the &quot;isPreferred&quot; and &quot;mediaType&quot; members respectively.</t>

              <figure anchor="photo_mapping" title="PHOTO mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    PHOTO:http://www.example.com/pub/photos/jqpublic.gif
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "photo": true },
               "value": "http://www.example.com/pub/photos/jqpublic.gif"
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, ANNIVERSARY">
              <t>The BDAY and ANNIVERSARY elements and the extensions BIRTHPLACE, DEATHDATE, DEATHPLACE described in <xref target="RFC6350"/> are represented as &quot;Anniversary&quot; objects included in the &quot;anniversaries&quot; array (<xref target="anniversary_mapping"/>):</t>
              <t><list style="symbols">
                  <t>BDAY and BIRTHPLACE are mapped onto &quot;date&quot; and &quot;place&quot; where &quot;type&quot; is set to &quot;birth&quot;;<vspace blankLines='1' /></t>
                  <t>DEATHDATE and DEATHPLACE are mapped onto &quot;date&quot; and &quot;place&quot; where &quot;type&quot; is set to &quot;death&quot;;<vspace blankLines='1' /></t>
                  <t>ANNIVERSARY is mapped onto &quot;date&quot; where &quot;type&quot; is set to &quot;other&quot; and &quot;label&quot; is set to a value describing in detail the kind of anniversary (e.g. &quot;marriage date&quot; for the wedding anniversary).</t>
              </list></t>

              <t>Both birth and death places are represented as instances of the &quot;Address&quot; object.  BIRTHPLACE and DEATHPLACE that are represented as geo URIs are converted into &quot;Address&quot; instances including only the &quot;coordinates&quot; member.  If the URI value is not a geo URI, the place is ignored.  The LANGUAGE parameter values of both BIRTHPLACE and DEATHPLACE elements are represented as corresponding entries of the &quot;fullAddress.localizations&quot; map.</t>

              <figure anchor="anniversary_mapping" title="BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, ANNIVERSARY mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    BDAY:19531015T231000Z
    BIRTHPLACE:Mail Drop: TNE QB\n123 Main Street\nAny Town, CA 91921-1234\nU.S.A.
    DEATHDATE:19960415
    DEATHPLACE:4445 Courtright Street\nNew England, ND 58647\nU.S.A.
    ANNIVERSARY:19860201
    ...
    END:VCARD

    {
    ...
    "anniversaries":[
              {
               "type": "birth",
               "date": "19531015T231000Z",
               "place":
                      {
                      "fullAddress":
                                  {
                                   "value": "Mail Drop: TNE QB\n123 Main Street\nAny Town, CA 91921-1234\nU.S.A."
                                  }
                      }
              },
              {
               "type": "birth",
               "date": "19531015T231000Z",
               "place":
                      {
                      "fullAddress":
                                  {
                                   "value": "4445 Courtright Street\nNew England, ND 58647\nU.S.A."
                                  }
                      }
              },
              {
               "type": "other",
               "label": "marriage date",
               "date": "19860201"
              }
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="GENDER">
                <t>TBD</t>
          </section>

      </section>

      <section title="Delivery Addressing Properties">

          <section title="ADR">
              <t>An ADR element is represented as an &quot;Address&quot; object in the &quot;addresses&quot; array (<xref target="adr_mapping"/>).</t>
              <t>The ADR components are transformed into the &quot;Address&quot; members as presented in <xref target="adr_components"/>.</t>

              <texttable anchor="adr_components" title="ADR components mapping">
                  <ttcol align="left">ADR component</ttcol>
                  <ttcol align="left">Address member</ttcol>
                  <c>p.o. box</c><c>postOfficeBox</c>
                  <c>extended address</c><c>extension</c>
                  <c>street address</c><c>street</c>
                  <c>locality</c><c>locality</c>
                  <c>region</c><c>region</c>
                  <c>postal code</c><c>postcode</c>
                  <c>country name</c><c>country</c>
              </texttable>

              <t>The LABEL parameter is converted into the &quot;fullAddress&quot; member.</t>
              <t>The PREF parameter is converted into the &quot;isPreferred&quot; member.</t>
              <t>The GEO parameter is converted into the &quot;coordinates&quot; member.</t>
              <t>The TZ parameter is converted into by the &quot;timeZone&quot; member.</t>
              <t>The TYPE parameter is converted into the &quot;context&quot; member.  The &quot;home&quot; value is replaced with the &quot;private&quot; value.</t>
              <t>The LANGUAGE parameter values are represented as different entries of the &quot;fullAddress.localizations&quot; map.</t>
              <t>The CC parameter defined by <xref target="RFC8605"/> is converted into the &quot;countryCode&quot; member.</t>

              <figure anchor="adr_mapping" title="ADR mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    ADR;TYPE=work;CC=US:;;54321 Oak St;Reston;VA;20190;USA
    ADR;TYPE=home;CC=US:;;12345 Elm St;Reston;VA;20190;USA
    ...
    END:VCARD

    {
    ...
    "addresses": [
          {
           "context": "work",
           "fullAddress":
                        {
                         "value": "54321 Oak St\nReston\nVA\n20190\nUSA"
                        },
           "street": "54321 Oak St",
           "locality": "Reston",
           "region": "VA",
           "country": "USA",
           "postcode": "20190",
           "countryCode": "US"
          },
          {
           "context": "private",
           "fullAddress":
                        {
                         "value": "12345 Elm St\nReston\nVA\n20190\nUSA"
                        },
           "street": "12345 Elm St",
           "locality": "Reston",
           "region": "VA",
           "country": "USA",
           "postcode": "20190",
           "countryCode": "US"
          }
    ]
    ...
    }
        ]]></artwork>
              </figure>
          </section>
      </section>

      <section title="Communications Properties">

          <section title="TEL">
              <t>A TEL element is represented as a &quot;Resource&quot; object in the &quot;phones&quot; array (<xref target="tel_mapping"/>).  The vCard &quot;type-param-tel&quot; values are mapped onto the &quot;type&quot; member values.  Those vCard &quot;type-param-tel&quot; values that don't have a counterpart among the &quot;type&quot; member values are represented as entry keys of the &quot;labels&quot; map with the corresponding entry value set to true.  The &quot;type-param&quot; values are are mapped onto the &quot;context&quot; member values.  The &quot;home&quot; value is replaced with the &quot;private&quot; value.</t>
              <t>The PREF parameter is mapped onto the &quot;isPreferred&quot; member.</t>

              <figure anchor="tel_mapping" title="TEL mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    TEL;VALUE=uri;PREF=1;TYPE="voice,home":tel:+1-555-555-5555;ext=5555
    TEL;VALUE=uri;TYPE=home:tel:+33-01-23-45-67
    ...
    END:VCARD

    {
    ...
    "phones":[
              {
               "context": "private",
               "type": "voice",
               "value": "tel:+1-555-555-5555;ext=5555",
               "isPreferred": true
              },
              {
               "context": "private",
               "value": "tel:+33-01-23-45-67"
              }
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="EMAIL">
              <t>An EMAIL element is represented as a &quot;Resource&quot; object in the &quot;emails&quot; array (<xref target="email_mapping"/>).  The vCard &quot;type-param&quot; values are mapped onto the &quot;context&quot; member values.  The &quot;home&quot; value is replaced with the &quot;private&quot; value.</t>
              <t>The PREF parameter is mapped onto the &quot;isPreferred&quot; member.</t>

              <figure anchor="email_mapping" title="EMAIL mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    EMAIL;TYPE=work:jqpublic@xyz.example.com
    EMAIL;PREF=1:jane_doe@example.com
    ...
    END:VCARD

    {
    ...
    "emails":[
              {
               "context": "work",
               "value": "jqpublic@xyz.example.com",
              },
              {
               "context": "private",
               "value": "jane_doe@example.com"
               "isPreferred": true
              }
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="IMPP">
              <t>An IMPP element is represented as a &quot;Resource&quot; object in the &quot;online&quot; array (<xref target="impp_mapping"/>) whose &quot;type&quot; member is set to &quot;username&quot; and &quot;labels&quot; map contains the entry &lt;&quot;XMPP&quot;,true&gt;.</t>
              <t>In case of a contact card related to an acconunt on another online service, the entry key SHOULD be the canonical service name, including capitalisation (e.g. &quot;Twitter&quot;, &quot;Facebook&quot;, &quot;Skype&quot;, &quot;GitHub&quot;)</t>
              <t>The PREF and MEDIATYPE parameters are mapped onto the &quot;isPreferred&quot; and &quot;mediaType&quot; members respectively.</t>
              <figure anchor="impp_mapping" title="IMPP mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    IMPP;PREF=1:xmpp:alice@example.com
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "username",
               "labels": { "XMPP": true },
               "value": "alice@example.com"
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="LANG">
              <t>A LANG element is represented through the &quot;preferredContactLanguages&quot; map (<xref target="lang_mapping"/>): an entry for each language that may be used for contacting the entity associated with the JSCard.  The entry keys correspond to the language tags, the corresponding entry values are arrays of &quot;ContactLanguage&quot; objects.</t>
              <t>The TYPE and PREF parameters are mapped onto the &quot;ContactLanguage&quot; members &quot;type&quot; and &quot;preference&quot; respectively.</t>
              <t>If both PREF and TYPE parameters are missing, the array of &quot;ContactLanguage&quot; objects MUST be empty.</t>

              <figure anchor="lang_mapping" title="LANG mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    LANG;TYPE=work;PREF=1:en
    LANG;TYPE=work;PREF=2:fr
    LANG;TYPE=home:fr
    ...
    END:VCARD

    {
    ...
    "preferredContactLanguages" : {
                                   "en": [
                                          {
                                           "type": "work",
                                           "preference": 1
                                          }
                                         ],
                                   "fr": [
                                          {
                                           "type": "work",
                                           "preference": 2
                                          },
                                          {
                                           "type": "home",
                                          }
                                         ]
                                  },
    ...
    }
        ]]></artwork>
              </figure>
          </section>
      </section>

      <section title="Geographical Properties">
        <t>The GEO and TZ elements are not directly mapped into equivalent topmost JSCard members because the same information is represented through equivalent &quot;Address&quot; members.</t>
          <t>The ALTID parameter is used for associating both GEO and TZ elements with the related address information.  When the ALTID parameter is missing, the element should be associated with the first contact address.</t>
      </section>

      <section title="Organizational Properties">

          <section title="TITLE">
              <t>A TITLE element is mapped onto a &quot;LocalizedString&quot; object included in the &quot;jobTitle&quot; array (<xref target="title_mapping"/>).</t>
              <t>The ALTID parameter is used for for associating the language-dependent alternatives with a given element.</t>
              <t>The LANGUAGE parameter values are represented as corresponding entries of the &quot;localizations&quot; map.</t>

              <figure anchor="title_mapping" title="TITLE mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    TITLE:Research Scientist
    ...
    END:VCARD

    {
    ...
    "jobTitle":[
                {
                 "value": "Research Scientist"
                }
               ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="ROLE">
              <t>A ROLE element is mapped onto a &quot;LocalizedString&quot; object included in the &quot;role&quot; array (<xref target="role_mapping"/>).</t>
              <t>The ALTID parameter is used for for associating the language-dependent alternatives with a given element.</t>
              <t>The LANGUAGE parameter values are represented as corresponding entries of the &quot;localizations&quot; map.</t>

              <figure anchor="role_mapping" title="ROLE mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    ROLE:Project Leader
    ...
    END:VCARD

    {
    ...
    "role":[
            {
             "value": "Project Leader"
            }
           ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="LOGO">
              <t>A LOGO element is represented as a &quot;Resource&quot; object in the &quot;online&quot; array (<xref target="logo_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;logo&quot;,true&gt;.</t>
              <t>The PREF and MEDIATYPE parameters are mapped onto the &quot;isPreferred&quot; and &quot;mediaType&quot; members respectively.</t>

              <figure anchor="logo_mapping" title="LOGO mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    LOGO:http://www.example.com/pub/logos/abccorp.jpg
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "logo": true },
               "value": "http://www.example.com/pub/logos/abccorp.jpg"
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="ORG">
              <t>An ORG element is mapped onto a &quot;LocalizedString&quot; object included in the &quot;organization&quot; array (<xref target="org_mapping"/>).  The organization name includes the organizational units if any.</t>
              <t>The ALTID parameter is used for for associating the language-dependent alternatives with a given element.</t>
              <t>The LANGUAGE parameter values are represented as corresponding entries of the &quot;localizations&quot; map.</t>

              <figure anchor="org_mapping" title="ORG mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    ORG:ABC\, Inc.;North American Division;Marketing
    ...
    END:VCARD

    {
    ...
    "organization":[
                {
                 "value": "ABC, Inc.;North American Division;Marketing"
                 }
                ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="MEMBER">
              <t>According to the JSContact specification, a group of contact cards is represented through a JSCardGroup (<xref target="group_example"/>).  The contact cards composing the group are included in the &quot;cards&quot; array.  Therefore, the MEMBER element doesn't have a direct match with a JSCard feature.</t>

              <figure anchor="group_example" title="Group example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    KIND:group
    FN:The Doe family
    MEMBER:urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af
    MEMBER:urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519
    END:VCARD
    BEGIN:VCARD
    VERSION:4.0
    FN:John Doe
    UID:urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af
    END:VCARD
    BEGIN:VCARD
    VERSION:4.0
    FN:Jane Doe
    UID:urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519
    END:VCARD

    {
    "uid": "urn:uuid:ab4310aa-fa43-11e9-8f0b-362b9e155667",
    "name": "The Doe family",
    "cards": [
              {
               "name": {
                        "fullName": {
                                     "value": "John Doe"
                                    }
                       },
               "uid": "urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af"
              },
              {
               "name": {
                        "fullName": {
                                     "value": "Jane Doe"
                                    }
                       },
               "uid": "urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519f"
              }
             ]
    }
        ]]></artwork>
              </figure>
          </section>


          <section title="RELATED">
              <t>All the RELATED elements are globally converted into the &quot;relatedTo&quot; map (<xref target="related_mapping"/>): an entry for each entity the entity described by the JSCard is associated with.  The map keys are the &quot;uid&quot; values of the associated cards.</t>
              <t>Each map value is a &quot;Relation&quot; object including only the &quot;relation&quot; member represented as a set of relation types described in section 6.6.6 of <xref target="RFC6350"/>.</t>
              <t>If the relation type is unspecified, the &quot;relation&quot; is empty.</t>

              <figure anchor="related_mapping" title="RELATED mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    RELATED;TYPE=friend:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
    RELATED;TYPE=contact:http://example.com/directory/jdoe.vcf
    RELATED;VALUE=text:Please contact my assistant Jane Doe for any inquiries.
    ...
    END:VCARD

    {
    ...
    "relatedTo":{
                  {
                   "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6":
                        {
                         "relation": {
                                      "friend": true
                                     }
                        }
                  },
                  {
                   "http://example.com/directory/jdoe.vcf":
                        {
                         "relation": {
                                      "contact": true
                                     }
                        }
                  },
                  {
                   "Please contact my assistant Jane Doe for any inquiries.":
                        {
                         "relation": { }
                        }
                  }
                }
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="CONTACT-URI">
              <t>A CONTACT-URI element defined by <xref target="RFC8605"/> is represented as a &quot;Resource&quot; object of the &quot;online&quot; array (<xref target="contact_uri_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;contact-uri&quot;,true&gt;.</t>
              <t>The PREF parameter is mapped onto the &quot;isPreferred&quot; member.</t>

              <figure anchor="contact_uri_mapping" title="CONTACT-URI mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    CONTACT-URI;PREF=1:mailto:contact@example.com
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "contact-uri": true },
               "value": "mailto:contact@example.com",
               "isPreferred": true
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>
      </section>

      <section title="Personal Information Properties">

          <section title="EXPERTISE">
              <t>An EXPERTISE element defined by <xref target="RFC6715"/> is represented as a &quot;PersonalInformation&quot; object in the &quot;personalInfo&quot; array (<xref target="expertise_mapping"/>).  The &quot;type&quot; member is set to &quot;expertise&quot;.</t>
              <t>The LEVEL parameter is mapped onto the &quot;level&quot; member with following mapping:</t>
              <t><list style="symbols">
                  <t>&quot;beginner&quot; is converted into &quot;low&quot;;</t>
                  <t>&quot;average&quot; is converted into &quot;medium&quot;;</t>
                  <t>&quot;expert&quot; is converted into &quot;high&quot;.</t>
              </list></t>
              <t>The INDEX parameter is represented as the index of the expertise among the declared expertises.</t>

              <figure anchor="expertise_mapping" title="EXPERTISE mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    EXPERTISE;LEVEL=beginner;INDEX=2:chinese literature
    EXPERTISE;INDEX=1;LEVEL=expert:chemistry
    ...
    END:VCARD

    {
    ...
    "personalInfo":[
                    ...
                    {
                     "type": "expertise",
                     "value": "chemistry",
                     "level": "high"
                    },
                    {
                     "type": "expertise",
                     "value": "chinese literature",
                     "level": "low"
                    }
                    ...
                   ]
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="HOBBY">
              <t>An HOBBY element defined by <xref target="RFC6715"/> is represented as a &quot;PersonalInformation&quot; object in the &quot;personalInfo&quot; array (<xref target="hobby_mapping"/>).  The &quot;type&quot; member is set to &quot;hobby&quot;.</t>
              <t>The LEVEL parameter is mapped onto the &quot;level&quot; member with a direct mapping.</t>
              <t>The INDEX parameter is represented as the index of the hobby among the declared hobbies.</t>

              <figure anchor="hobby_mapping" title="HOBBY mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    HOBBY;INDEX=1;LEVEL=high:reading
    HOBBY;INDEX=2;LEVEL=high:sewing
    ...
    END:VCARD

    {
    ...
    "personalInfo":[
                    ...
                    {
                     "type": "hobby",
                     "value": "reading",
                     "level": "high"
                    },
                    {
                     "type": "hobby",
                     "value": "sewing",
                     "level": "high"
                    }
                    ...
                   ]
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="INTEREST">
              <t>An INTEREST element defined by <xref target="RFC6715"/> is represented as a &quot;PersonalInformation&quot; object in the &quot;personalInfo&quot; array (<xref target="interest_mapping"/>).  The &quot;type&quot; member is set to &quot;interest&quot;.</t>
              <t>The LEVEL parameter is mapped onto the &quot;level&quot; member with a direct mapping.</t>
              <t>The INDEX parameter is represented as the index of the interest among the declared interests.</t>

              <figure anchor="interest_mapping" title="INTEREST mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    INTEREST;INDEX=1;LEVEL=medium:r&b music
    INTEREST;INDEX=2;LEVEL=high:rock ’n’ roll music
    ...
    END:VCARD

    {
    ...
    "personalInfo":[
                    ...
                    {
                     "type": "interest",
                     "value": "r&b music",
                     "level": "medium"
                    },
                    {
                     "type": "interest",
                     "value": "rock ’n’ roll music",
                     "level": "high"
                    }
                    ...
                   ]
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="ORG-DIRECTORY">
              <t>An ORG-DIRECTORY element is represented as a &quot;Resource&quot; object in the &quot;online&quot; array (<xref target="org_directory_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;org-directory&quot;,true&gt;.</t>
              <t>The PREF parameter is mapped onto the &quot;isPreferred&quot; member.</t>
              <t>The INDEX parameter is represented as the index of the directory among the online resources with the &quot;org-directory&quot; key in the &quot;labels&quot; map.</t>

              <figure anchor="org_directory_mapping" title="ORG-DIRECTORY mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    ORG-DIRECTORY;INDEX=1:http://directory.mycompany.example.com
    ORG-DIRECTORY;PREF=1:ldap://ldap.tech.example/o=Example%20Tech,ou=Engineering
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "org-directory": true },
               "value": "http://directory.mycompany.example.com"
              },
              {
               "type": "uri",
               "labels": { "org-directory": true },
               "value": "ldap://ldap.tech.example/o=Example%20Tech,ou=Engineering",
               "isPreferred": true
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>
      </section>

      <section title="Explanatory Properties">

          <section title="CATEGORIES">
              <t>A CATEGORIES element is converted into an object in the &quot;categories&quot; array (<xref target="categories_mapping"/>).</t>

              <figure anchor="categories_mapping" title="CATEGORIES mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    CATEGORIES:INTERNET,IETF,INDUSTRY,INFORMATION TECHNOLOGY
    ...
    END:VCARD

    {
    ...
    "categories":[
                  "INTERNET",
                  "IETF",
                  "INDUSTRY",
                  "INFORMATION TECHNOLOGY"
                 ]
    ...
    }
        ]]></artwork>
              </figure>
          </section>


          <section title="NOTE">
              <t>A NOTE element is mapped onto a &quot;LocalizedString&quot; object included in the &quot;notes&quot; array (<xref target="notes_mapping"/>).</t>
              <t>The ALTID parameter is used for associating the language-dependent alternatives with a given element.</t>
              <t>The LANGUAGE parameter values are represented as corresponding entries of the &quot;localizations&quot; map.</t>

              <figure anchor="notes_mapping" title="NOTE mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    NOTE:This fax number is operational 0800 to 1715 EST\, Mon-Fri.
    ...
    END:VCARD

    {
    ...
    "notes":[
             {
              "value": "This fax number is operational 0800 to 1715 EST, Mon-Fri."
             }
            ]
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="PRODID">
              <t>The PRODID element is converted into the &quot;prodId&quot; member (<xref target="prodid_mapping"/>).</t>

              <figure anchor="prodid_mapping" title="PRODID mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    PRODID:-//ONLINE DIRECTORY//NONSGML Version 1//EN
    ...
    END:VCARD

    {
    ...
    "prodId": "-//ONLINE DIRECTORY//NONSGML Version 1//EN"
    ...
    }
        ]]></artwork>
              </figure>
          </section>


          <section title="REV">
              <t>The REV element is transformed into the &quot;updated&quot; member (<xref target="rev_mapping"/>).</t>

              <figure anchor="rev_mapping" title="REV mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    REV:19951031T222710Z
    ...
    END:VCARD

    {
    ...
    "updated": "19951031T222710Z"
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="SOUND">
              <t>A SOUND element is represented as a &quot;Resource&quot; object in the &quot;online&quot; array (<xref target="sound_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;sound&quot;,true&gt;.</t>
              <t>The PREF and MEDIATYPE parameters are mapped onto the &quot;isPreferred&quot; and &quot;mediaType&quot; members respectively.</t>

              <figure anchor="sound_mapping" title="SOUND mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    SOUND:CID:JOHNQPUBLIC.part8.19960229T080000.xyzMail@example.com
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "sound": true },
               "value": "CID:JOHNQPUBLIC.part8.19960229T080000.xyzMail@example.com"
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="UID">
              <t>The UID element corresponds to the &quot;uid&quot; member (<xref target="uid_mapping"/>).</t>

              <figure anchor="uid_mapping" title="UID mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    UID:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
    ...
    END:VCARD

    {
    ...
    "uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="CLIENTPIDMAP and PID Parameter">
            <t>TBD</t>
          </section>

          <section title="URL">
              <t>An URL element is represented as a &quot;Resource&quot; object in the &quot;online&quot; array (<xref target="url_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;url&quot;,true&gt;.</t>
              <t>The PREF and MEDIATYPE parameters are mapped onto the &quot;isPreferred&quot; and &quot;mediaType&quot; members respectively.</t>

              <figure anchor="url_mapping" title="URL mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    URL:http://example.org/restaurant.french/~chezchic.html
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "url": true },
               "value": "http://example.org/restaurant.french/~chezchic.html"
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="VERSION">
              <t>The VERSION property doesn't have a direct match with a JSCard feature.</t>
          </section>

      </section>

      <section title="Security Properties">
          <section title="KEY">
              <t>A KEY element is represented as a &quot;Resource&quot; object in the &quot;online&quot; array (<xref target="key_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;key&quot;,true&gt;.</t>
              <t>The PREF and MEDIATYPE parameters are mapped onto the &quot;isPreferred&quot; and &quot;mediaType&quot; members respectively.</t>

              <figure anchor="key_mapping" title="KEY mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    KEY:http://www.example.com/keys/jdoe.cer
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "key": true },
               "value": "http://www.example.com/keys/jdoe.cer"
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
         </section>
      </section>


      <section title="Calendar Properties">

          <section title="FBURL">
              <t>A FBURL element is represented as a &quot;Resource&quot; object of the &quot;online&quot; array (<xref target="fburl_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;fburl&quot;,true&gt;.</t>
              <t>The PREF and MEDIATYPE parameters are mapped ontoy the &quot;isPreferred&quot; and &quot;mediaType&quot; members respectively.</t>

              <figure anchor="fburl_mapping" title="FBURL mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    FBURL;PREF=1:http://www.example.com/busy/janedoe
    FBURL;MEDIATYPE=text/calendar:ftp://example.com/busy/project-a.ifb
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "fburl": true },
               "value": "http://www.example.com/busy/janedoe",
               "isPreferred": true
              },
              {
               "type": "uri",
               "labels": { "fburl": true },
               "value": "ftp://example.com/busy/project-a.ifb",
               "mediaType": "text/calendar"
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="CALADRURI">
              <t>A CALADRURI element is represented as a &quot;Resource&quot; object of the &quot;online&quot; array (<xref target="caladruri_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;caladruri&quot;,true&gt;.</t>
              <t>The PREF and MEDIATYPE parameters are mapped onto the &quot;isPreferred&quot; and &quot;mediaType&quot; members respectively.</t>

              <figure anchor="caladruri_mapping" title="CALADRURI mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    CALADRURI;PREF=1:mailto:janedoe@example.com
    CALADRURI:http://example.com/calendar/jdoe
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "caladruri": true },
               "value": "mailto:janedoe@example.com",
               "isPreferred": true
              },
              {
               "type": "uri",
               "labels": { "caladruri": true },
               "value": "http://example.com/calendar/jdoe"
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>

          <section title="CALURI">
              <t>A CALURI element is represented as a &quot;Resource&quot; object of the &quot;online&quot; array (<xref target="caluri_mapping"/>) whose &quot;type&quot; member is set to &quot;uri&quot; and &quot;labels&quot; map contains the entry &lt;&quot;caluri&quot;,true&gt;.</t>
              <t>The PREF and MEDIATYPE parameters are mapped onto the &quot;isPreferred&quot; and &quot;mediaType&quot; members respectively.</t>

              <figure anchor="caluri_mapping" title="CALURI mapping example">
                  <artwork xml:space="preserve"><![CDATA[
    BEGIN:VCARD
    VERSION:4.0
    ...
    CALURI;PREF=1:http://cal.example.com/calA
    CALURI;MEDIATYPE=text/calendar:ftp://ftp.example.com/calA.ics
    ...
    END:VCARD

    {
    ...
    "online":[
              ...
              {
               "type": "uri",
               "labels": { "caluri": true },
               "value": "http://cal.example.com/calA",
               "isPreferred": true
              },
              {
               "type": "uri",
               "labels": { "caluri": true },
               "value": "ftp://ftp.example.com/calA.ics",
               "mediaType": "text/calendar"
              },
              ...
            ],
    ...
    }
        ]]></artwork>
              </figure>
          </section>
      </section>

        <section title="Additional Clarifications about Mapping">
            <section title="Media type">
                <t>As described in section 5.7 of <xref target="RFC6350"/>, the media type of a resource can be identified by its URI.  For example, &quot;image/gif&quot; can be derived from the &quot;.gif&quot; extension of a GIF image URI.  JSContact producers MAY provide the media type information even when it is not specified in the vCard.</t>
            </section>

            <section title="Timezone">
                <t>As specified in section 6.5.1 of <xref target="RFC6350"/>, the time zone information can be represented in three ways: as a time zone name, as an UTC offset or as an URI.
                <list style="symbols">
                <t>The time zone name is directly matched by the &quot;timeZone&quot; member in JSContact.<vspace blankLines='1'/></t>
                <t>An UTC offset MUST be converted into the related &quot;Etc/GMT&quot; time zone (e.g. the value &quot;-0500&quot; converts to &quot;Etc/GMT+5&quot;).  If the UTC offset value contains minutes information, it MUST be mapped to map it to the zone &quot;Etc/GMT&lt;sign&gt;&lt;hour&gt;:&lt;minute&gt;&quot;.<vspace blankLines='1'/></t>
                <t>Since there is no URI scheme defined for time zones <xref target="uri-schemes"/>, any implementation that does use some a custom URI for a time zone is not interoperable anyway.  In this case, if the URI corresponds to an a IANA time zone <xref target="time-zones"/>, this latter SHOULD be used.  Otherwise, the URI value is dumped into a string.</t>
                </list></t>
            </section>
        </section>

        <section title="Extended Properties">
          <t>If an extended property is a resource, JSCard already allows to represent it by setting the &quot;type&quot; member to &quot;other&quot; and specifying a value for the &quot;labels&quot; map.</t>
          <t>Any other property supporting a custom feature MAY be added and its name MUST be prefixed with a specific domain name to avoid conflict, e.g. &quot;example.com/customprop&quot;.</t>
        </section>

        <section title="vCard Unmatched Properties">
            <t>Any vCard property that doesn't have a direct counterpart in JSContact is treated as an extended property whose name is prefixed by &quot;ietf.org/rfc6350/&quot;.</t>
            <t>The resulting name MUST be in lowercase.</t>
        </section>

        <section title="JSCard Required Properties">
            <t>While converting a vCard into a JSCard, only the topmost &quot;uid&quot; member is required.</t>
        </section>

        <section title="JSCard Unmatched Properties">
            <t>The &quot;preferredContactMethod&quot; member doesn't match any vCard element.</t>
        </section>

    </section>

   <section anchor="IANA-considerations" title="IANA Considerations">
       <t>This document has no actions for IANA.</t>
   </section>

      <section anchor="impl-status" title="Implementation Status">
          <t>NOTE: Please remove this section and the reference to RFC 7942 prior to publication as an RFC.</t>

          <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.  The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.  Please note that the listing of any individual implementation here does not imply endorsement by the IETF.  Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors.  This is not intended as, and must not be construed to be, a catalog of available implementations or their features.  Readers are advised to note that other implementations may exist.</t>

          <t>According to RFC 7942, &quot;this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.  It is up to the individual working groups to use this information as they see fit&quot;.</t>

          <section anchor="it-cnr-iit" title="CNR">
              <t><list style="none">
                  <t>Responsible Organization: National Research Council (CNR) of Italy</t>
                  <t>Location: https://github.com/consiglionazionaledellericerche/jscontact-tools</t>
                  <t>Description: This implementation includes tools for JSContact creation, validation, serialization/deserialization and conversion from vCard, xCard and jCard.</t>
                  <t>Level of Maturity: This is an "alpha" test implementation.</t>
                  <t>Coverage: This implementation includes all of the features described in this specification.</t>
                  <t>Contact Information: Mario Loffredo, mario.loffredo@iit.cnr.it</t>
              </list></t>
          </section>

      </section>

      <section anchor="security-considerations" title="Security Considerations">
       <t>This document doesn't present any security consideration.</t>
   </section>

  </middle>
  <back>
    <references title="Normative References">
      &RFC2119;
      &RFC6350;
      &RFC6473;
      &RFC6474;
      &RFC6715;
      &RFC6869;
      &RFC7095;
      &RFC7942;
      &RFC8605;
    </references>
    
    <references title="Informative References">
      <reference anchor="draft-ietf-jmap-jscontact" target="https://datatracker.ietf.org/doc/draft-ietf-jmap-jscontact/">
        <front><title>JSContact: A JSON representation of contact data</title>
          <author/>
          <date/>
        </front>
      </reference>
        <reference anchor="time-zones" target="https://www.iana.org/time-zones">
            <front><title>Time Zone Database</title>
                <author/>
                <date/>
            </front>
        </reference>
        <reference anchor="uri-schemes" target="https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml">
            <front><title>Uniform Resource Identifier (URI) Schemes</title>
                <author/>
                <date/>
            </front>
        </reference>
    </references>
  </back>
</rfc>
