chat-formats

From Microformats Wiki
Jump to navigation Jump to search

chat formats

Various formats that are used to represent chat conversations, typically internally. With the use cases from the chat-examples, and the vocabularies used here, the next steps are to start chat-brainstorming on proposals for a chat microformat.

Contributors

  • ChristopherStJohn
  • Tantek Çelik
  • Jude Robinson
  • Chris Messina

ChatZilla Internal Format

Note that there is no proof that this format is being used "in the wild" for publishing. ChatZilla uses HTML as its presentation layer. This heavily elided excerpt shows two lines from a chat. It gives the flavor (a very big table with each row a chat message divided up into three columns: timestamp, user name and the message itself) but there are many more classes in use in a full log.

<div id="messages-outer">
 ...
 <div id="output">
  ...
  <table view-type="IRCChannel" class="msg-table">
   <tbody>
    <tr mark="even" msg-user="cks_ ME!"
     statusText="01/31/2006 01:39 PM, cks_!n=chatzill@ppp-70-248-121-149.dsl.rcsntx.swbell.net"
     view-type="IRCChannel" dest-type="IRCChannel" msg-dest="#microformats"
     msg-type="PRIVMSG" class="msg">
     <td time-s="57" time-n="39" time-h="13" time-d="31" time-m="01" time-y="2006" class="msg-timestamp">
     </td>
     <td class="msg-user">
      <span>cks_</span>
     </td>
     <td class="msg-data">
      <span>so, using chatzilla for just a minute so i can extract the logs.</span>
     </td>
    </tr>
    <tr mark="odd" msg-user="Atamido" statusText="01/31/2006 01:43 PM, Atamido!n=atamido@cpe-67-9-173-252.austin.res.rr.com"
     view-type="IRCChannel" dest-type="IRCChannel" msg-dest="#microformats"
     msg-type="PRIVMSG" class="msg">
     <td time-s="25" time-n="43" time-h="13" time-d="31" time-m="01" time-y="2006" class="msg-timestamp">
     </td>
     <td class="msg-user">
      <a href="irc://irc.freenode.net/Atamido,isnick" class="chatzilla-link">
       <span>Atamido</span>
      </a>
     </td>
     <td class="msg-data">
      <span>
       Here are some examples.
       <a target="_content" class="chatzilla-link" href="http://www.hacksrus.com/%7Eginda/chatzilla/motifs.html">
        http://www.hacksrus.<wbr>
        com/~ginda/chatzilla/<wbr>
        motifs.html<wbr>
       </a>
      </span>
     </td>
    </tr>
   </tbody>
  </table>
 </div>
</div>

Google Talk Format Logs

Again, user1 is local.

3
17b5df8a
01c61af0
outgoing
%3Ccli%3Amessage+from%3D%22user1%40gmail.com%2FTalk.v66EC7D7137%22+to%3D%22user2%40gmail.com%2FTalk.v66EC841CB6%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3Esome+but+not+much%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
incoming
%3Ccli%3Amessage+from%3D%22user2%40gmail.com%2FTalk.v66EC841CB6%22+to%3D%22user1%40gmail.com%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3EI'm+ready+to+crawl+in+bed+and+read.++Do+well+on+your+paper.++Love++Mom%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
outgoing
%3Ccli%3Amessage+from%3D%22user1%40gmail.com%2FTalk.v66EC7D7137%22+to%3D%22user2%40gmail.com%2FTalk.v66EC841CB6%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3Ethanks%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
outgoing
%3Ccli%3Amessage+from%3D%22user1%40gmail.com%2FTalk.v68701EBF07%22+to%3D%22user2%40gmail.com%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3Emom%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
incoming
%3Ccli%3Amessage+from%3D%22user2%40gmail.com%2FTalk.v687050428D%22+to%3D%22user1%40gmail.com%2FTalk.v68701EBF07%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3EHi%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
outgoing
%3Ccli%3Amessage+from%3D%22user1%40gmail.com%2FTalk.v68701EBF07%22+to%3D%22user2%40gmail.com%2FTalk.v687050428D%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3Ei+totally+forgot+about+the+awning%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
outgoing
%3Ccli%3Amessage+from%3D%22user1%40gmail.com%2FTalk.v68701EBF07%22+to%3D%22user2%40gmail.com%2FTalk.v687050428D%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3Edo+you+want+me+to+come+over%3F%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
incoming
%3Ccli%3Amessage+from%3D%22user2%40gmail.com%2FTalk.v687050428D%22+to%3D%22user1%40gmail.com%2FTalk.v68701EBF07%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3EI+have+tomorrow+off.++Is+the+wind+supposed+to+get+bad+before+then%3F%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
outgoing
%3Ccli%3Amessage+from%3D%22user1%40gmail.com%2FTalk.v68701EBF07%22+to%3D%22user2%40gmail.com%2FTalk.v687050428D%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3Enot+sure.+its+stormy+now%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
incoming
%3Ccli%3Amessage+from%3D%22user2%40gmail.com%2FTalk.v687050428D%22+to%3D%22user1%40gmail.com%2FTalk.v68701EBF07%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3EI'm+ready+if+yo+are.++I+thought+you+would+be+here+anyway+about+the+boat+or+I+would+have+called.%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
outgoing
%3Ccli%3Amessage+from%3D%22user1%40gmail.com%2FTalk.v68701EBF07%22+to%3D%22user2%40gmail.com%2FTalk.v687050428D%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3EI+think+we+decided+to+do+the+boat+on+a+dry+night%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E
outgoing
%3Ccli%3Amessage+from%3D%22user1%40gmail.com%2FTalk.v68701EBF07%22+to%3D%22user2%40gmail.com%2FTalk.v687050428D%22+type%3D%22chat%22+xmlns%3Acli%3D%22jabber%3Aclient%22%3E%3Ccli%3Abody%3Ei'll+come+over+now%3C%2Fcli%3Abody%3E%3Cactive+xmlns%3D%22http%3A%2F%2Fjabber.org%2Fprotocol%2Fchatstates%22%2F%3E%3C%2Fcli%3Amessage%3E

Adium X

Adium X is currently developing an XML-based log format. This is version 0.4:

<chat account="mactigerz" service="AIM" version="0.4">
    <event type="windowOpened" time=""/>
    <message sender="chz16" time="">'sup?</message>
    <message sender="mactigerz" time="">trying to get to work on the the new XML log format</message>
    <message sender="chz16" time="">Doesn't sound bad.</message>
    <message sender="chz16" time="">Providing you have the log specs, of course.</message>
    <message sender="mactigerz" time="">that's what I'm creating.</message>
    <status type="offline" sender="chz16" time=""/>
    <status type="online" sender="chz16" time=""/>
    <status type="away" sender="mactigerz" time="">brb, working on the XML log format</status>
    <event type="windowClosed" time=""/>
</chat>

This format remains under development, so this page may not reflect the current version of the format. This is now specified by the Unified Log Format Working Group

ILRT Logger Bot Format

Found at: http://chatlogs.planetrdf.com/swig/, generated by: http://cvs.ilrt.org/cvsweb/redland/logger/, there are three formats: HTML, plain text, and RDF. The entry discussed the RDF format, as it's presumably directed at machines and not people.

Taking RDF first just because that's kind of fun and is presumably 100% semantics. Pretty straightforward RDF Sequence with date/description/creator, except for the line with a Dublin Core relation stuck in there. As is normal with RDF, semantics are reused, so to fully grok it there's some followon work to do, see: http://www.w3.org/2004/Talks/0522-rrs/ The foaf group got involved with IRC chat since IRC names are one of the ways to identify people, looks like it snowballed, not sure if the ChatChannel stuff is official or not. The Dublin Core and WordNet stuff is mentioned in the FOAF spec index, but seems to be missing from the actual text, I might have been looking at an old version.

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:wn="http://xmlns.com/wordnet/1.6/"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">
<foaf:ChatChannel rdf:about="irc://irc.freenode.net/swig">
  <foaf:chatEventList>
    <rdf:Seq>
      <rdf:li>
       <foaf:chatEvent rdf:ID="T00-01-19">
        <dc:date>2006-02-01T00:01:19Z</dc:date>
        <dc:description>keithalexander has quit</dc:description>
        <dc:creator><wn:Person foaf:nick="keithalexander"/></dc:creator>
       </foaf:chatEvent>
      </rdf:li>
      <rdf:li>
       <foaf:chatEvent rdf:ID="T00-27-42">
        <dc:date>2006-02-01T00:27:42Z</dc:date>
        <dc:description>Gromgull: nice quote re. x years later</dc:description>
        <dc:creator><wn:Person foaf:nick="CaptSolo"/></dc:creator>
       </foaf:chatEvent>
      </rdf:li>
      <rdf:li>
       <foaf:chatEvent rdf:ID="T01-38-49">
        <dc:date>2006-02-01T01:38:49Z</dc:date>
        <dc:description>A: http://aaronland.info/python/pyupcoming/ from karlUshi</dc:description>
        <dc:creator><wn:Person foaf:nick="dc_swig"/></dc:creator>
        <dc:relation rdf:resource="http://aaronland.info/python/pyupcoming/"/>
       </foaf:chatEvent>
      </rdf:li>
    </rdf:Seq>
  </foaf:chatEventList>
</foaf:ChatChannel>
</rdf:RDF>

Trillian Internal Format

This is for an AIM chat, but one for a Yahoo! chat looks the same. It is saved as plaintext as well as XML. (user1 is local). This is a description of the XML format, as it is presumably intended for machines and not humans.

The same in XML:

<session type="start" time="1112395386" medium="AIM" to="user2" from="user1"/>
<message type="incoming_privateMessage" time="1112395386" medium="AIM" to="user1" from="user2" from_display="user2" text="ping"/>
<message type="information_standard" time="1112395387" medium="AIM" text="Auto%2Dresponse%20sent%20to%20user2%3A%20My%20hovercraft%20is%20full%20of%20eels%2E"/>
<message type="outgoing_privateMessage" time="1112395573" medium="AIM" to="user2" from="user1" from_display="user1" text="hey"/>
<session type="stop" time="1112395619" medium="AIM" to="user2" from="user1"/>

There is also a "user2-assets.xml" file for stuff like Buddy icons & file transers:

<asset medium="AIM" name="user2" link="C%3A%5CProgram%20Files%5CTrillian%5Cusers%5Cdefault%5Cbuddyicons%5Cassets%5CAIM%2Duser2%2D1118046544%2Ejpg"/>
<asset medium="AIM" name="user2" link="D%3A%5CPIX%5CY2005%5C0619%5CMOV02050%2EMPG"/>
<asset medium="AIM" name="user2" link="C%3A%5CDocuments%20and%20Settings%5Cant%5CDesktop%5CDSCN0372_resize%2EJPG"/>
<asset medium="AIM" name="user2" link="C%3A%5CProgram%20Files%5CTrillian%5Cusers%5Cdefault%5Cbuddyicons%5Cassets%5CAIM%2Duser2%2D1133932754%2Ejpg"/>


Nature podcast format

Snippets of XML from Nature journal's podcast of 6 April 2006. Differences from chat formats above include the (current) lack of any timestamps, and defined "roles", ie: presenter/interviewer/interviewee.

<?xml version="1.0" encoding="utf-8"?>
<podcast id="nature-2006-04-06"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="NPG_podcast_transcript.xsd">
  <source>
    <jtl>Nature</jtl>
    <vol>440</vol>
    <iss>7085</iss>
    <idt>20060406</idt>
    <issn type="print">0028-0836</issn>
    <issn type="electronic">1476-4679</issn>
    <cpg>
      <cpy>2006</cpy>
      <cpn>Nature Publishing Group</cpn>
    </cpg>
  </source>
  <fm>
    <doi>10.1038/pod-nature-2006-04-06</doi>
    <title>Nature Podcast</title>
    <presenter>
      <name>
        <fname>Chris</fname>
        <sname>Smith</sname>
      </name>
    </presenter>
    <intro>
      <p>
        This is a transcript of the 6 April edition of the weekly  podcast.
	Audio files for the current show and archive episodes can be accessed
	from the  podcast index page (<weblink url="http://www.nature.com/nature/podcast"/>)...
      </p>
      <p>Sponsor: The  podcast from...</p>
      <p>This week Tiktaalik and what it can tell us about how early life invaded the land..</p>
    </intro>
  </fm>
  <body>
    <interview>
      <interviewer>
        <name>
          <fname>Chris</fname>
          <sname>Smith</sname>
        </name>
        <p>Hello, I'm Chris Smith. Welcome to the 6th April edition of Nature's podcast.
	  First this week we're winding our watches back about 380 million years to the time when
	  the first animals substituted feet for fins and began to heave themselves out of the
	  sea and onto land... (<cite>
            <jtl>Nature</jtl>
            <vid>440</vid>, <ppf>747</ppf>-<ppl>749</ppl>; <cd>2006</cd>
            <refdoi>10.1038/440747a</refdoi>
          </cite>).</p>
      </interviewer>
      <interviewee>
        <name>
          <fname>Neil</fname>
          <sname>Shubin</sname>
        </name>
        <p>The transition from a fish that lives in water to an animal that's able to live on land
	  is one of the great transitions in the history of life. We know from a variety of...</p>
      </interviewee>
      ...
    </interview>
    <filler>
      <p>Well that's it for this week, and thanks for listening. Remember that...</p>
      <p>Next week we are fighting malaria and finding out how parasites can...</p>
      <p>Production on this week's  podcast was by Anna Lacey in the Department of Pathology
        at Cambridge University, and I'm Chris Smith.</p>
      <p>Sponsor: The  podcast is sponsored by Bio-Rad at the centre of scientific discovery
        for over 50 years, and on the web at <weblink url="http://www.discover.biorad.com"/>.</p>
    </filler>
  </body>
</podcast>