Semantic Web, Web

What is the problem I have with MicroFormats: there is no URI

I started to take a deeper look at microformats in the last days and it leaves me a little bit on my appetite. I implemented the hCard microformat on my main page, I pinged Pingorati, and I took a look at my face in Technocrati Kitchen’s Microformat Search Engine. The operation was easy to do, take me a couple of minutes and I was already indexed in their system.

Then I started to dig the available microformat: this one is cool, this other one too, etc.

I took a deeper look at the hReview microformat: cool a way to review anything: movies, books, persons, etc.



Where are URIs?

I can describe my personal home page using an hCard and someone can review my profile using a hReview. Wow, it’s cool!

But wait a minute, how can I make the link between my hCard and the hReview? Is there a way to describe a resource (in this case the resource is myself) with a URI (in this case the URI that “point” to “myself” is

I performed a search on the microformat Wiki with the term “URI”: 0 results.

I wonder: is it possible to assign a URI to a microformat? It seems that it is not possible.

I don’t understand, it is so important in my point of view. I want to be able to say: that information (hCard) is relation to that resource (myself, my profile). I want to say:

  • This hCard belongs to that URI:
  • I want that Bob (who wrote a hReview about me) could be able to say: that hReview belongs to that URI:

That way, the “Technorati Microformat Search Engine” could merge the information from my hCard and the review Bob wrote about me with the hReview. That way someone that search for “Frederick Giasson” in the search engine would come up not just with my hCard but also with the reviews people would have wrote about me.

Unfortunately, I don’t think it is possible to assign a URI to an hCard for the moment. So, what could we do?


UNAPI microformat seems to help revolve a part of the problem

Then I started to dig the Web trying to figure out if it was possible. Then I found the UNAPI microformat. From their website, UNAPI is:

unAPI is a tiny HTTP API any web application may use to co-publish discretely identified objects in both HTML pages and disparate bare object formats. It consists of three parts: an identifier microformat, an HTML autodiscovery link, and three HTTP interface functions, two of which have a standardized response format.

Check the Revision 3 APi for more information

I wasn’t satisfied by this approach.


From microformat to RDF using GRDDL

I also found a solution wrote by Danny about a year ago. The idea is to transform a microformat document into a RDF one using GRDDL (so XSLT).

I’ll not explain all the procedure here, but I would strongly suggest you to read the clear explanation on Danny’s blog:

Microformats on the GRDDL


Forget microformat and adopt Embedded RDF

This is the first “solution” I had in mind when I started to think about that “problem”: why people are using microformat instead of Embedded RDF?

I have to confess: it is sure that it is a little bit more “complex” to implement, but with good tools it would not.

However, in my humble opinion, the eRDF solution is much more powerful.

What is Embedded RDF (eRDF)? Embeded RDF is a way to embed RDF triples into a XHTML file. But “all HTML Embeddable RDF is valid RDF, not all RDF is Embeddable RDF”.

So, if it is possible to embed RDF document into XHTML documents, it tells me that I can use any existing and widespread ontologies such as DC, FOAF, GEO, SIOC, etc. to describe any content available of my XHTML files, exactly as I can do with microformats but with the power of RDF.

Swoogle, the semantic web search engine, is able to parse eRDF content from web pages (in fact, it already index 350 000 eRDF documents). So why the Microformat search engine developed by Technorati would not do the same?

Personally I prefer that method to microformat because it lets me defining my content in a much more powerful way. However it is true: it’s not as simple as microformat to implement.


Tools for eRDF

Some tools exists to handle eRDF:



Technorati: | | | | | | | | | | | | | |

8 thoughts on “What is the problem I have with MicroFormats: there is no URI

  1. I performed a search on the microformat Wiki with the term “URI”: 0 results.

    That’s acutally a MySQL thing – it won’t do fulltext matches on words less than 4 characters long.

  2. A broader comment now….

    If you’d look a bit closer, you’d find that a number of microformats have URLs associated with them. hCards can have URLs, hReviews can review URLs or people who have URLs, hCalendar events can have URLs, etc.

  3. Hi Ryan,

    Your first comment: you got it right, I totally forgot that little detail that change everything 🙂

    Your second comment: yes, you are right, however the problem is that a URL is a URI but a URI is not a URL. So, what happen is I don’t want to use a URL as a URI? Or what happen is I want to use the URL field with a URL but describe the resource with another URI? This is the problem I see.

    Thanks for your comments!



  4. Hi Ryan,

    Certainly I can. I’ll illustrate it with two examples:

    1- I would like to do a review (using hReview) of a book. I would like to give it a URI such as anyone who talk-about/review it could refer to the same book. I would also like to refer to a place where I could buy it: on for example. But one could like Amazon, but another one could like B&B, so the URL to the book’s Amazon page is not a good unique identifier. The perfect URI to refer to a book would be: “isbn:140190131X” that is a valid URI and not a HTTP URL.

    2- As I said, I could want to use the URL property of the hCard to describe my new personal website. But what happen is, for example, my old personal website was “” and that I change it for “” 5 years later. What I would like to do is changing the URL in my hCard profile for “” but I would like to use “” as the URI that refer to me. That way, all the stuff a produce that describe that resource (me) will continue, over time, in a consistent way.

    Are these two examples convincing enough to show how URIs describing resources are essentials in my point of view?



  5. Hi Ed,

    Thanks for pointing me that out. It’s interesting to see that there is an effort in that direction.

    I scanned the brainstorming page and found this question from Xiaoming:

    “Xiaoming proposed leaving UID intact in hcalendar and hcard, because whatever written in rfc2426/rfc2445 and their examples cannot be easily changed, and they seem to work well with hcalendar/hcard. Instead a new “URI” microformat should be established for the purpose of indicating something *is* an identifier in general.In this case you can easily reference URI RFC and no further elaboration about persistence, resolvability or uniqueness will be necessary because these issues are addressed by various URI specifications.

    and the answer from Tantek:

    “The problem with “just use URI” is that URI (or URL for that matter) merely is a *type* of data. What that data *means* to the microformat still needs additional semantics, and that’s why we need a property name like UID (even if it is defined to be of type URI or URL) which specifies this particular semantic. Thanks to Joe Andrieu for asking the questions which lead to this clarification. – Tantek”

    Would it be possible to clarify Tantek’s answer? In my humble opinion, if a URI is a *type* or data, a UID is one too. There is probably a little semantic difference between the two (in fact could you redirect me to your definition of a UID (in microformats?)?)

    If I check the “Uniform Resource Identifier (URI): Generic Syntax” document, I can read:

    ”A URI is an identifier consisting of a sequence of characters matching the syntax rule named in Section 3. It enables uniform identification of resources via a separately defined extensible set of naming schemes (Section 3.1). How that identification is accomplished, assigned, or enabled is delegated to each scheme specification.”

    Do you agree that a microformat instance is a resource? In that case, why not using URI to identify them?

    Thanks for clarifying that point because my mind is a little bit confuse.

    Take care,



Leave a Reply