Wer schonmal versucht hat hCard Profile zu importieren wird sicherlich auf ein Problem stoßen: Welche hCard ist die richtige?

Vor ein paar Tagen habe ich ein Gespräch zwischen Dirk Olbertz und Tantek Çelik via Twitter verfolgt, bei dem es genau um dieses Problem ging…

Das Problem der representative hCard kann auf zwei verschiedene Weisen gelöst werden:

…in short 1. url==uid==source. 2. url has rel-me

url==uid==source

Die einfachste Möglichkeit ist, zu überprüfen ob eine der (unter der angegebenen Source-URL) gefundenen hCards als URL die die Source-URL enthält. Wenn man sicher gehen will, sollte man die URL zusätzlich noch als UID (RFC2426) auszeichnen.

Ein Beispiel für eine representative hCard für wäre:

<span class="vcard"> <span class="fn">Carsten Pötter</span> <span class="url uid">http://notsorelevant.com</span> </span>
Code-Sprache: HTML, XML (xml)

rel-me

Die zweite Möglichkeit ist, nach hCards mit rel="me" URLs zu suchen.

Diese Variante lässt sich natürlich auch mit der Ersten verbinden:

<span class="vcard"> <span class="fn">Carsten Pötter</span> <span class="url uid" rel="me">http://notsorelevant.com</span> </span>
Code-Sprache: HTML, XML (xml)

Wer also ganz sicher gehen möchte sollte das letzte Beispiel nutzen 🙂

Für Web-Seiten die gar keine Profile oder zumindest keine Profile auf der Startseite haben, könnte rel="me" auch als Delegation zu einer (anderen) Seite mit einer representative hCard genutzt werden.

Beispiel: <link rel="me" href="http://www.notsorelevant.com/ueber/" />

Da es für PHP (meines Wissens) noch keinen XFN-Parser gibt, habe ich mich beim hCard-Commenting WordPress Plugin für die erste Variante (url==uid==source) entschieden… Ich hoffe es funktioniert 🙂

Weitere Informationen zu representative hCards im Microformats-Wiki:

Wer sich viel mit Microformats beschäftigt, ist sicher schon öfters über den Begriff RDFa gestolpert. Die Idee, (X)HTML semantischer zu machen, ist bei beiden Formaten gleich, der Unterschied liegt hauptsächlich in der Syntax.
Während Microformats ausschließlich auf HTML 4.01 bzw. XHTML 1.0 validen Tags und Attributen basiert:

<div class="vcard"> <span class="fn">Max Mustermann</span> <a class="email" href="mailto:max.mustermann@example.org"> max.mustermann@example.org </a> </div>
Code-Sprache: HTML, XML (xml)

Beispiel hCard

…basiert RDFa auf dem klassischen RDF und mit XHTML 2.0 neu eingeführten Attributen wie z.B. property und about:

<body xmlns:contact="http://www.w3.org/2001/vcard-rdf/3.0#"> <span property="contact:fn">Max Mustermann</span> <a rel="contact:email" href="mailto:max.mustermann@example.org"> max.mustermann@example.org </a> </body>
Code-Sprache: HTML, XML (xml)

Beispiel vCard RDF in RDFa

Eine gute Einführung in das Thema RDFa bietet das Video von Manu Sporny:

Rein Technisch gesehen ist RDFa, durch die Nutzung von Namespaces und die bessere Skalierbarkeit durch URIs, definitiv der bessere Standard. Ich denke trotzdem nicht dass RDFa die Microformats in näherer Zukunft ablösen wird, da RDFa nur unter XHTML 2.0 möglich ist und (meines Wissens) im Konkurrenz-Format (X)HTML 5.0 nicht angedacht wird. Es ist deshalb notwendig beide Formate weiter voranzutreiben und so weit wie möglich auf einem einheitlichen Standard, wie z.B. der vCard im oben beschriebenen Beispiel, aufzubauen. Während der Übergangsphase ist es so relativ einfach mit GRDDL zwischen den beiden Formaten zu transformieren.

In seinem Artikel „RDFa vs microformats“ beschreibt Evan Prodromou die für ihn notwendigen Schritte für die Zukunft von RDFa:

  1. RDFa gets acknowledged and embraced by microformats.org as the future of semantic-data-in-XHTML
  2. The RDFa group makes an effort to encompass existing microformats with a minimum of changes
  3. microformats.org leaders join in on the RDFa authorship process
  4. microformats.org becomes a focus for developing real-world RDFa vocabularies

Mal schauen wie es wirklich kommt und was sich in Zukunft durchsetzen wird…

Wer sich für das Thema interessiert, kann ja mal Semantic Radar für Firefox ausprobieren. Semantic Radar macht (ähnlich wie Operator für Microformats) RDF und RDFa Inhalte in Webseiten sichtbar.

Gestern vor vier Jahren hielten Tantek Çelik and Kevin Marks eine Präsentation über „real world semantics“. Die Präsentation machte an Beispielen wie XFN und einigen rel-Design-Pattern klar, wie es Designern und Entwicklern möglich ist, mit bestehenden Formaten wie X/HTML semantisch zu arbeiten.

Mittlerweile hat sich aus ein paar HTML Design Pattern eine große Open-Standards-Bewegung entwickelt, aus der noch mind. ein Duzent neuer (sog.) Mikroformate heraus entstanden sind. Microformats wie z.B. die hCard oder XFN sind heute Basis von weiteren Open-Standard-Groups wie z.B. Data- oder Social-Network-Portability und große Unternehmen wie Google, Yahoo, Apple oder Mozilla setzen auf ein breites Spektrum dieser „real world semantics“.

Wahrscheinlich haben Microformats gerade durch ihren pragmatischen Ansatz die Semantic Web Idee einen ganzen Schritt voran getrieben und gezeigt, dass Semantiken nicht nur mit RDF oder OWL sondern auch mit simplen HTML class– und rel-Attributen möglich ist.

Vielen Dank an alle Entwickler und Designer die die Microformats Idee voran getrieben haben und vor allem an Tantek…

via zeldman

OpenID Delegation ermöglicht es den OpenID Nutzern eine beliebige URL als OpenID zu verwenden. Für die „Delegation“ sind zwei <link /> Einträge im HTML-Header notwendig:

<link rel="openid.server" href="http://example.com" />
<link rel="openid.delegate me" href="http://id.example.com/" />

Der erste Eintrag (openid.server) gibt den Server an, der den eigentlichen OpenID Service anbietet, der zweite Eintrag (openid.delegate) gibt an, welches die eigentliche OpenID URL ist.

Bei den Arbeiten an hCard-Commenting kam mir die Idee, diese Art der „Delegation“ auch für Microformats, speziell hCards, zu verwenden.

<link rel="hcard.delegate me" href="http://example.com/hcard/" />

Der Vorteil dieser Variante wäre, dass man schon bestehende hCards wie z.B. die Profilseite von flickr (http://flickr.com/people/<username>) oder das Public-Profile von myOpenID (http://<username>.myopenid.com) wiederverwenden könnte, ohne sie nochmals im eigenen Blog veröffentlichen zu müssen.

<link rel="hcard.delegate me" href="http://www.flickr.com/people/pfefferle" />

Ein weiterer Vorteil der „Delegation“ ist, dass die Weblog URL meistens kürzer und viel einfacher zu merken ist, als ein Community Profil:

Weblog URL: https://notiz.blog
flickr URL: http://www.flickr.com/people/pfefferle

Einige WordPress Plugins wie z.B. das oben erwähnte hCard-Commenting oder hAvatar nutzen das Website Feld eines Blogs, um die URL einer hCard anzugeben und widersprechen dabei eigentlich ein wenig der Idee des „adapting to current behaviors“1 der Microformats Community. Wenn ich einen Weblog Eintrag kommentiere gebe ich eigentlich meine normale Blog-URL in das Website Feld ein, das heißt ich müsste eigentlich ein Verhalten ändern, was ich mit hCard-Delegation beibehalten könnte 😉

Aber der eigentliche Vorteil der „Delegation“ liegt in der zentralen Nutzung der hCard. Ich müsste im besten Fall also nur noch eine hCard anlegen und pflegen.

I wrote a small Plugin that allows your users to easily fill out the comment forms of your WordPress Blog using an hCard. I got this Idea from SignUp pages like bragster.com or getsatisfaction.com.

After the installation, you get a small (import hCard) link behind your URL field in the comment form (if not, use <?php hcard_commenting_link() ?>).

hCard Commenting Step 1

If you want to write a comment using this festure, you simply have to fill out the „Website“ field with an URL to one of your hCards and to klick the „import hCard“ link.

hCard Commenting Step 2

…and thats it.

hCard Commenting Step 3

To try out this plugin, you can use my comment form.

One of the next steps would be some kind of avatar feature using the hCard photo (thanks to Brian Suda for the idea).

You can download this version on the WordPress Plugin area: http://wordpress.org/extend/plugins/hcard-commenting/

Ich bin vor einiger Zeit schon auf das microJSON Projekt gestoßen und fand die Idee, ein einheitliches JSON Format für alle Microformats zu erstellen, prinzipiell nicht schlecht, deshalb habe ich auch versucht microJSON für mein hCard-Commenting Script einzusetzen.

Bei genauerem Betrachten gibt es bei der jCard aber zwei unschöne Eigenschaften:

  1. Das n Attribut wird in JSON als name dargestellt.
  2. Das fn Attribut wird gat nicht abgebildet.

Da ich, um den Username in den WordPress Kommentaren darzustellen, auf fn angewiesen bin, habe ich mir verschiedene andere „hCard to JSON“ Services angeschaut.

Test-hCard: http://pfefferle.org/static/microformats/hcard-test.html

Weiterlesen

Bei myOpenID gibt es seit kurzem zwei große Erweiterungen:

  • Identity Pages (das öffentliche Profil: http://username.myopenid.com) unterstützt jetzt neben verschiedenen Themes auch einige „Web 2.0 technologies“ wie z.B. hCard, Pavatar und MicroID.
  • Über Attribute Exchange ist es zusätzlich möglich, mehrere Personen-Profile abzugleichen.

Wer das ganze im Sinne von DiSo mit seinem WordPress Blog nachbauen will, braucht nur folgende Plugins:

  • hCard: Themes wie K2 zeichnen generell jeden Autor als hCard aus, ohne dass man irgendein Plugin benötigt und wp-diso-contactlist zeichnet die komplette Blogrolle mit hCard und XFN aus.
  • Pavatar: Das Identikit von John Noone bietet neben einigen Avatar-Implementierungen auch Support für Pavartar.
  • MicroID: Das MicroID WordPress Plugin von Will Norris bietet die Möglichkeit, mehrere IDs anhand verschiedener E-Mail Adressen oder OpenIDs zu erstellen.
  • OpenID/Attribute Exchange: WP OpenID ist offizieller Teil des DiSo-Projekts und bietet einen umfangreichen OpenID Client, basierend auf der PHP OpenID Library von JanRain. Ein OpenID Server ist noch nicht vorhanden, es gibt jedoch einige Delegation Plugins und DiSo plant auch noch eine ganze Menge in Richtung OpenID

Falls ihr noch einige gute Plugins kennt, die hier nicht gelistet sind (vielleicht eine alternative zum Pavatar Plugin) würde ich mich über ein Kommentar freuen.

Safari Microformats plugin

Neben zwei Notlösungen, Microformats in Safari zu nutzen, gibt es jetzt eine weitere Version für das Cocoa Plugin System SIMBL.

Das Safari Microformats plugin erkennt die Microformats hCard und hCalendar und zeigt sie über ein kleines Microformats-Logo in der Adresszeile an.

Safari Microformats plugin

Per Klick auf das Logo, lassen sich die gefundenen Formate bequem in ein entsprechendes, lokal installiertes Programm wie iCal oder Address Book importieren. Wer Growl installiert hat, erhält außerdem eine Growl-Meldung, wenn die Daten erfolgreich importiert wurden.
Via: Dataportability Feed

Leider funktioniert das Plugin nur mit der aktuellen Version von Safari (V. 3) in Verbindung mit Mac OS X Leopard, deshalb konnte ich es auch noch nicht testen.

Wenn ihr Fragen zum Plugin habt, versuchts einfach mal bei Manuela Hoffmann.

dataportability

Standardized Data Portability is the next great frontier for the web. As users, our identity, photos, videos and other forms of personal data should be discoverable by, and shared between our chosen tools or vendors. We need a DHCP for Identity. A distributed File System for data. This page will list the standards and contributors who are making it happen.

Mal gespannt was aus dataportability.org wird, hört sich auf alle Fälle schon mal sehr spannend an. Vielleicht findet ja endlich jemand die Musterlösung für Social Network Portability.
Wer interessiert ist, kann schon mal den Feed abonnieren.