The Community Engine Blog
News, tools, and analysis for innovating in the information economy
« xFolk: An xhtml microformat for folksonomy | | Blog Interaction: Write Like a Tadpole »
xFolk: Iteration in Response to Comments
Readers raised several useful issues with the first iteration of the microformat. This new iteration addresses those issues. Further comment is appreciated.
Sections: Emerging Practice Tools and Analytics
Topics: folksonomy SXSW IASummit xFolk
This post is somewhat of an insider's post. I am assuming you have read and are following with interest the xFolk topic I started here.
After some feedback from Thomas Vander Wal and Tantek Çelik, it appears that xFolk is going to require some iterations. There were eight issues with the initial proposal:
- My creative use of the rel attribute might be hard to get accepted (several issues here)
- How would uses of attribute values in xFolk mix in with other microformats. In particular, what would I do if my uses of the an attribute collided with other uses?
- It would be nice to constrain attribute value terms before they are used. People expect to know possible attribute values before they are used. Listing them in the XMDP after they are used breaks standard web processing models.
- In xhtml (and to some extent generally in xml), attribute values tend not to contain user data. Tags are best considered user data.
- Regardless of whether one agrees with the prior point, people prefer that user data be contained in elements for the practical reason that it is more visible that way and therefore less likely to be a spam attempt.
- It would be nice if a more direct tie could be made between this microformat and people's current practices with link blogs and exporting their del.icio.us entries.
- How would non-hypertechnical users deal with this format?
- What about privacy? You're publishing everything on the web.
Believe it or not, these all seem surmountable, but they will require redefining important aspects of the microformat.
A New Iteration of the Microformat
I'll start with a concrete example of how one would render a folksonomy entry in the new format using the exact entry I showed in the last iteration:
<div class=“folkEntry”>
<p>
<a href=“http://www.hyperorg.com/blogger/mtarchive/003733.html”
class=“tagged”>
<span class=“folkTitle”>Authors tags and topics</span>
</a>
<span class=“folkExtended”>
This essentially reflects the view that one might be able to
marry folksonomy to the topic maps idea of Public Subject
Indicators. How would these trickle up from the bottom? How
about clustering or other statistical aggregation?
</span>
</p>
<p><a href=“http://thecommunityengine.com/home/archives/folksonomy”
class=“tag”>folksonomy</a></p>
<p><a href=“http://thecommunityengine.com/home/archives/popularization”
class=“tag”>popularization</a></p>
<p><a href=“http://thecommunityengine.com/home/archives/KM”
class=“tag”>KM</a></p>
<p><a href=“http://thecommunityengine.com/home/archives/communityCreation” class=“tag”>communityCreation</a></p>
</div>
Translating the example into English, I have created a folksonomy entry by enclosing a lot of mark-up in a <div> element of class folkEntry. Within that <div>, there is an <a> element with the class attribute set to tagged. This means that the <a> element points to the resource to be tagged. The title of the entry is in a <span> of class folkTitle, and the extended description of the entry is in a <span> of class folkExtended.
The folksonomy tags are applied to the entry using the technorati tagging mechanism with almost the exact semantics described by Kevin Marks. There are, however, two changes from standard technorati practice. First, the class attribute is used instead of the rel attribute. Second, The tags apply only to the entry described within the folkEntry <div>. They do not apply to the whole blog post. This specialization does not seem like it would cause any compatibility issues if it were added to crawlers following technorati's methodology.
For this post, I am going to largely ignore the issue of defining explicit folksonomy tagging semantics, but it is not hard to do. I will take the definition of explicit folksonomy tag semantics back up once I feel certain I can get some agreement on the soundness of the basic elements I am showing here.
An example using Jason Kottke's Remaindered Links
Jason Kottke publishes a rather popular link blog called remaindered links. Links are currently in an unordered list format with each link similar to the following, actual example from his blog:
<li>
<a href=“http://www.guardian.co.uk/arts/news/story/0,11711,1188015,00.html”>
A previous Banksy unauthorized art placement took place in the
Natural History Museum in London
</a>
<span class=“nocmt”>
<a href=“http://www.kottke.org/remainder/05/03/7937.html”>
 # 
</a><br />
“The graffiti artist Banksy has managed to smuggle in his latest
work, a dead rat in a glass-fronted box, into the Natural History
Museum where it was exhibited on a wall for several hours.”
</li>
One thing we will note in passing is that Kottke has not closed his <span class=“nocmt”> element. Other than that one foible, this link blog entry looks ripe for transformation into xFolk with no loss of Jason's current formatting and only a small alteration in approach.
Without further ado, here is Jason's post with xFolk semantic mark-up applied:
<div class=“folkEntry”>
<li>
<a href=“http://www.guardian.co.uk/arts/news/story/0,11711,1188015,00.html”
rel=“tagged”>
<span class=“folkTitle”>
A previous Banksy unauthorized art placement took place in the
Natural History Museum in London
</span>
</a>
<span class=“nocmt”>
<a href=“http://www.kottke.org/remainder/05/03/7937.html”>
 # 
</a><br />
“<span class=folkExtended>
The graffiti artist Banksy has managed to smuggle in his latest
work, a dead rat in a glass-fronted box, into the Natural History
Museum where it was exhibited on a wall for several hours.
</span>”
</span>
</li>
</div>
For Kottke's entries, little work is required to adopt xFolk. We simply wrapped his entry in the appropriate <div> and the components of the entry in the appropriate <span> elements. We did have to alter his markup to be well-formed (closed the <span class=“nocmt”> element he left open). We also note that he is not currently tagging his entries.
An example using exported del.icio.us html
As mentioned in my earlier post, del.icio.us provides a REST interface for exporting html. The mark-up is semantic, and one can easily see how to render it in xFolk. Here is the default rendition before converting to xFolk:
<div class=“delPost”>»
<a class=“delLink”
title=“This essentially reflects the view that one might be able to
marry folksonomy to the topic maps idea of Public
Subject Indicators. How would these trickle up from the bottom.
How about clustering or other statistical aggregation?”
href=“http://www.hyperorg.com/blogger/mtarchive/003733.html”>
Authors tags and topics
</a><span class=“delTagSep”>/</span>
<a class=“delTag”
href=“http://del.icio.us/fpgibson/folksonomy”>folksonomy
</a>
<a class=“delTag”
href=“http://del.icio.us/fpgibson/popularization”>popularization
</a>
<a class=“delTag”
href=“http://del.icio.us/fpgibson/KM”>KM
</a>
<a class=“delTag”
href=“http://del.icio.us/fpgibson/communityCreation”>communityCreation
</a>
</div>
Here's the markup converted to xFolk:
<div class=“folkEntry”>»
<a class=“tagged”
href=“http://www.hyperorg.com/blogger/mtarchive/003733.html”>
<span class=“folkTitle”>Authors tags and topics</span>
</a>
<p>
<span class=“folkExtended”>
This essentially reflects the view that one might be able to
marry folksonomy to the topic maps idea of Public Subject
Indicators. How would these trickle up from the bottom? How
about clustering or other statistical aggregation?
</span>
<span class=“delTagSep”>/</span>
<a class=“tag”
href=“http://del.icio.us/fpgibson/folksonomy”>folksonomy
</a>
<a class=“tag”
href=“http://del.icio.us/fpgibson/popularization”>popularization
</a>
<a class=“tag”
href=“http://del.icio.us/fpgibson/KM”>KM
</a>
<a class=“tag”
href=“http://del.icio.us/fpgibson/communityCreation”>communityCreation
</a>
</p>
</div>
One important note is that the del.icio.us REST interface allows us to almost reach the result just shown. Missing is the ability to insert a <span> for the folkTitle. Further the del.icio.us interface handles the extended entry somewhat differently. In future iterations, I may alter xFolk to be more fully compatible with the defalut del.icio.us REST interface.
Responding to the eight issues
Here is how this iteration deals with each of the eight issues raised earlier.
Issue 1 — Creative use of the rel attribute
I dropped use of the rel attribute in favor of the class attribute.
Issue 2 — Mixing attribute values from other formats
There are a few points here. First, the use of any attributes is contextualized by the presence of the folkEntry <div>. Second, the class attribute values are fairly unique and therefore less likely to conflict with other usages.
Issue 3 — Constraining attribute values before use
The current approach constrains allowed values of the class attribute in advance.
Issues 4 & 5 — Move user data into elements so it is visible
This is now complete.
Issue 6 — Create a direct tie with ongoing practice
Well in-process with the examples of Kottke and del.icio.us. More needs to be done as new examples are popping up all over the place.
Issue 7 — How about the nontechnical user
I expect they will most likely be shielded from all of this. Some of the more complicated components such as the XMDP will be dropped entirely once I return to specifying explicit semantics.
Issue 8 — Privacy
For the most part, this is beyond the scope of the microformat.
Next Steps
This new version needs to be re-vetted and the feasibility of pursuing this approach needs to be established. After that, more use cases and examples need to be established. Finally, the issue of explicit folksonomy tag semantics needs to be addressed.
Tagback by copying this link xFolk.
Bud posted this on March 23, 2005
Trackback Pings
TrackBack URL for this entry:
http://thecommunityengine.com/cgi-sys/cgiwrap/fpgibson/thecommunityengine.com/mt/mt-tb.cgi/561