<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Simon says ... - im tag</title>
  <link>http://simon.bloody-byte.net:8080/de/tags/im/</link>
  <description>Musik und das moderne Web</description>
  <language>de</language>
  <copyright>Simon Reinhardt</copyright>
  <lastBuildDate>Mon, 20 Oct 2008 20:44:27 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>Miranda-Kontakte als FOAF exportieren</title>
    <link>http://simon.bloody-byte.net:8080/de/2008/01/24/1201203780000.html</link>
    
      
        <description>
          &lt;p&gt;Alle Kontakte von meinen diversen Adressbüchern und Netzwerken in einer Adressbuchdatei im &lt;a href=&#034;http://en.wikipedia.org/wiki/FOAF_(software)&#034;&gt;&lt;acronym title=&#034;Friend of a Friend&#034; xml:lang=&#034;en&#034; lang=&#034;en&#034;&gt;FOAF&lt;/acronym&gt;&lt;/a&gt;-Format zu speichern ist Teil meiner Vision, wie ich mein digitales Leben mit &lt;span lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Semantic Web&lt;/span&gt; Technologien besser organisieren kann. Ich hab&#039; &lt;a href=&#034;http://blogs.sun.com/bblfish/entry/beatnik_change_your_mind&#034;&gt;Beatnik&lt;/a&gt; noch nicht ausprobiert, aber das könnte dabei auch ganz hilfreich sein. Das Ganze ist auch Teil meines Plans, semantisches Zeug ein bißchen tiefer in meine &lt;a href=&#034;http://simon-reinhardt.de/&#034;&gt;Website&lt;/a&gt; zu integrieren und schlussendlich zu zeigen, dass wir diese eingezäunten Datensilos von &lt;span lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Social Network&lt;/span&gt; Plattformen nicht brauchen, aber dazu mehr, sobald ich mit meinen Ideen etwas Fortschritt erreicht habe.&lt;/p&gt;

&lt;p&gt;Zunächst mal werden wir nur versuchen, ein paar Kontaktdaten zu konvertieren. Ich bin nicht gerade bei vielen &lt;span lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Social Network&lt;/span&gt; Seiten angemeldet, weil ich sie nicht mag; ich gebe denen einfach nicht gern meine Daten. Wenn ich also mein soziales Netz mit FOAF selbst verwalten will, wo könnte ich Anfangen, meine Kontakte herzuholen? Die meisten meiner Freunde benutzen &lt;acronym title=&#034;I seek you&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;ICQ&lt;/acronym&gt;, also wären &lt;acronym title=&#034;Instant Messaging&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;IM&lt;/acronym&gt;-Kontakte schonmal ein guter Anfang. Glücklicherweise kann ich aus dem &lt;span lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Messenger&lt;/span&gt;, den ich benutze (&lt;a href=&#034;http://www.miranda-im.org/&#034;&gt;Miranda IM&lt;/a&gt;), meine ganzen Kontakte in eine relativ simpel handlebare .ini-Datei exportieren. Um das zu tun, klicke auf das Hauptmenü, dann »Kontaktlisten Im-/Export«, dann »Export Kontaktliste«, bestätige die Warnung, wähle die Zieldatei und sag, dass Du Deinen Verlauf nicht speichern willst.&lt;/p&gt;

&lt;p&gt;Diese Datei ist recht einfach aufgebaut: zu jedem Kontakt gibt es einen Abschnitt mit einer Nummer und in jedem Abschnitt finden sich mehrere Attribute. Wir werden nur die folgenden brauchen: »&lt;code&gt;ID&lt;/code&gt;«, »&lt;code&gt;CListNick&lt;/code&gt;«, »&lt;code&gt;CListGroup&lt;/code&gt;«, »&lt;code&gt;Proto&lt;/code&gt;« und »&lt;code&gt;Hidden&lt;/code&gt;«. Jetzt brauchen wir noch etwas, um die Datei parsen zu können. Ich arbeite mit Java und hab&#039; dafür die Bibliothek &lt;a href=&#034;http://ini4j.org/&#034;&gt;ini4j&lt;/a&gt; eingesetzt. Damit lesen wir die Datei ein und haben dann Zugriff auf die einzelnen Abschnitte und die Attribute eines Abschnitts als Java-Maps. Danach öffnen wir einfach eine andere Datei und schreiben das passende &lt;acronym title=&#034;Resource Description Framework / Extensible Markup Language&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;RDF/XML&lt;/acronym&gt; als Plaintext rein (wir brauchen übrigens noch unsere &lt;acronym title=&#034;Uniform Resource Identifier&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;URI&lt;/acronym&gt; um andere mit uns in Beziehung setzen zu können).&lt;/p&gt;

&lt;p&gt;Also, wir gehen durch die Abschnitte und überspringen jeden, der das Attribut »&lt;code&gt;Hidden&lt;/code&gt;« hat (ich denke mal, das sind die Leute, die einen vergeblich anschreiben wollten oder die auf &lt;span lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;ignore&lt;/span&gt; gesetzt wurden). Wir benutzen das Attribut »&lt;code&gt;CListGroup&lt;/code&gt;« um Mitgliedschaftsbeziehungen zu &lt;code&gt;foaf:Group&lt;/code&gt;s herzustellen. »&lt;code&gt;CListNick&lt;/code&gt;« dient als &lt;code&gt;foaf:nick&lt;/code&gt; einer Person. Um »&lt;code&gt;ID&lt;/code&gt;« als Identifikationsnummer benutzen zu können, müssen wir erst die passende Eigenschaft finden, wo wir diese reintun können. Daher ordnen wir den Wert in »&lt;code&gt;Proto&lt;/code&gt;« (Protokoll) dem Namen eines FOAF-Attributs zu: »&lt;code&gt;JABBER&lt;/code&gt;« nach &lt;code&gt;foaf:jabberID&lt;/code&gt;, »&lt;code&gt;ICQ&lt;/code&gt;« nach &lt;code&gt;foaf:icqChatID&lt;/code&gt; und so weiter. Nachdem wir alle Kontakte geschrieben haben, schreiben wir die Gruppen und beenden dann die Datei. Das ist alles.&lt;/p&gt;

&lt;p&gt;Jetzt hast Du eine valide FOAF-Datei mit den Daten aus Deiner IM-Kontaktliste. Das Ganze ist noch nicht perfekt, die Personen da drin sind zwar eindeutig durch ihre IM-&lt;acronym title=&#034;Identifikationsnummer&#034;&gt;IDs&lt;/acronym&gt; identifizierbar, aber sie haben noch keine URIs - und die Gruppen, die wir erstellt haben, auch nicht. Außerdem ist die Zuordnung dieser Einträge zu Leuten aus anderen Quellen eventuell nur manuell möglich. LiveJournal hat IM-IDs in seinen FOAF-Daten, aber ich glaube nicht, dass man danach suchen kann, also könnte man die Zuordnung nur mit Leuten machen, deren Account dort man schon kennt.&lt;/p&gt;

&lt;p&gt;Mehr Details gibt&#039;s in der &lt;a href=&#034;files/ContactListTransformer.java&#034;&gt;Java-Datei&lt;/a&gt;.&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://simon.bloody-byte.net:8080/de/2008/01/24/1201203780000.html#comments</comments>
    <guid isPermaLink="true">http://simon.bloody-byte.net:8080/de/2008/01/24/1201203780000.html</guid>
    <pubDate>Thu, 24 Jan 2008 19:43:00 GMT</pubDate>
  </item>
  
  </channel>
</rss>
