XMDP Brainstorming

Jump to: navigation, search



Tantek Çelik developed XMDP to define extensions to XHTML including rel values, class names, and <meta name> properties and values. Per the XMDP spec, a link to a microformat's XMDP in the profile attribute of head element indicates that that microformat's vocabulary is formally defined in the document. A parser could read the allowed attribute values from the linked XMDP and thus know explicitly which microformats may be in use, and which class names are meant to convey which meanings.

This page is for exploring possible additions / extensions to XMDP, contributed by numerous folks in the microformats community.

See xmdp-faq and xmdp-issues for questions and issues.

Some of the below are probably better addressed as questions and/or issues and should be moved to those pages accordingly. -- Tantek

requests from TimBL

At the 2009 W3C Technical Plenary I (Tantek) had a conversation with Tim Berners-Lee about what he would like to see in XMDP to enable rich(er) translation into RDFSchema (RDFS).

The following subsections represent my notes on specific asks/requests/feedback from Tim. Tantek 01:16, 5 November 2009 (UTC)


serve RDFS using conneg

It would be useful/nice if requests to microformats profiles, e.g. http://microformats.org/profile/hcard - if made with the Accept header requesting the mime type of RDFS (conneg / content negotiation), would be returned as an automatic translation (perhaps using XSLT) of the XMDP to RDFS.


TimBL likes to be able to say this term is the same as this other term.

atomic types

It would be useful to specify the atomic type of a microformats property, e.g. one of the following:

TimBL also suggested location lat/long/altitude, however that's more of a composite type (e.g. geo) that is made of multiple atomic types

Possible XMDP Additions

resolving when microformats may be in use

Currently the potential existence of microformats in a document can be declared by referencing the profile URLs for those microformats in the profile attribute of the head element of that document.

In addition to the profile attribute, the rel-profile value is being strongly considered for inclusion in an update to XMDP. See the rel-profile page for details.

In short: another way would be to include the <a rel="profile" href="XMDP URL">powered by microformat xyz</a> within the container element for the microformat. The XMDP spec could then specify that when the <a> element is used in this way, it indicates that the microformat is used by the element containing the <a> element.


root class name identification


It could be quite convenient for "generic/universal" microformat parsers if they could read an XMDP profile and understand which of the defined class names were root class names for microformats, and thus be able to distinguish those object boundaries.

XMDP profiles can and do contain definitions for multiple root class names (e.g. http://microformats.org/wiki/hcard defines "vcard", "adr", and "geo").

possible solutions

XMDP definition flag

Introduce some sort of markup or textual flag that indicates inside an XMDP definition (<dd>) for a class name that the class name may be used as a root class name.

rejected solutions

first class name defined in a profile

One simple thought would be that the first class name defined in a profile (e.g. hcard-profile) is the root class for that microformat.

Critical problem(s):

publisher linking to root class name

The author including a reference to the XMDP could link directly to the root class name.

<!-- This profile link indicates that "vcard" is a root class name. -->
<head profile="http://www.w3.org/2006/03/hcard#vcard">

Critical problem(s):

publisher inline additional class name

Another possibility that may be worth exploring, is the ability to indicate inline in the code that a class name is the root class name for a microformat, rather than (or perhaps in addition to) the XMDP.


<span class="vcard ufroot">
 <span class="fn">Tantek Çelik</fn>

would indicate that the element with classname of "vcard" is the root of a microformatted piece of information.

Critical problem(s):

Possible drawbacks:

This is also very similar to, but not the same as, the mfo problem, and should be considered in that context as an independent solution.

linking to the XMDP

As hinted in the note on "when microformats may be in use", there are additional methods under discussion for linking to the XMDP in addition to the current method of using the profile attribute of the head element:

includes / aggregate profiles

Methods for including one or more values, properties, or an entire XMDP into an other XMDP as a way of creating an aggregate profile that effectively contains definitions from multiple profiles would be quite useful. They would enable documents with microformats to simply refer to a single profile URL rather than a complete space separated set of all the profile URLs of the microformats that may be in use.

vocabulary aliasing

An XMDP document could be used to define a microformat profile that is nothing more than a simple dictionary mapping between an existing, non-standard set of HTML classes and the terms in a standard microformat profile. This would allow a publisher to support a given microformat by merely using the URI of a new profile document as the value of an individual document's head/profile attribute, rather than modifying the individual class values throughout each document to conform to an existing profile. Initial suggestion with use case description in this microformats-discuss post. Note (from Kevin's response) that HTML class attributes can contain multiple values, e.g. class="post hentry", so a publisher doesn't have to discard their existing class values to use those of a microformat.

subclassing / ontology addition

One may want to introduce a new property (or value) and base it on an existing property (or value). In this sample XMDP, the value "self" is defined, based on the value "me" from XFN 1.1:

<dl class="rel">
  <dt id='self'><a href="http://www.gmpg.org/xfn/11#me" rev="extends">self</a></dt>
   <dd>This is a pointer to me, it extends the "me" value of XFN</dd>

There are two interesting pieces that have been added, a URL with an anchor to another XMDP profile and a rev attribute. The rev value in this example is 'extends'. These means that the page this is refering too, is extended by the property SELF. So you could make an XMDP that lists all the possible rev attributes, 'extends', 'inverse', 'equivalent', etc. Then you could 'alias' one microformat property to another.

A universal XMDP validator/parser/etc could extract data across two or more XMDP profiles and potentially reason between them. This could create a small ontology.

It is not clear if this idea actually has utility or is simply a solution looking for a problem.


The link shows a bad example of creating XMDP from an XSD schema. The big question I guess is why? Having XMDP defined in XSD should make it easier for machines to read Microformats, rules and strict data typing will allow Microformats to be validated when contained within an XML/XHTML document. If a document is using microformats with and XSD behind simple XPath queries can be used to harvest the information, this can then be rendered to straight XML for translation to RDF or other XML transport formats.

XSD behind XMDP also has distinct advantages for CMS authors, the XSD sitting behind xforms or sxforms to allow data entry into a CMS can be used to generate XMDP and valid Microformats when rendering content. This in theory should make it easier for CMS authors to develop a semantic core around data before exporting to XHTML + Microformats, RDF etc. and/or make data querying via web services a little more straightforward.

Follow up

Having looked into Microformats a little more I realise how bad that example is; however I still feel that placing a schema behind XMDP is a worthwhile exercise. I don't mind spending a little time on this if anyone feels it's a worthwhile exercise, but I'd propose the following:

There would still need to be some form of link between the XMDP and the defining XSD (profile attribute or link element?). With these in place it should be possible for an application like tails, or new apps to pick up on any Microformat in a page and display the data, without the application having to be aware of the specific Microformat standard.

Microformats are cool, especially the fact that you don't have to be a rocket scientist to start using them. However if there can be a way of interleaving grassroots microformat adoption into the more complex semantic forms (RDF etc.), through XML then that's got to be a bonus?

more here

ID Attribute

  • A problem that I've had using XDMP is that it requires the use of the ID attribute (e.g. <dt id="foo">foo</dt>) to define the term "foo". As (X)HTML only allows one element with any given ID, this raises problems if you need to define the same term multiple times -- e.g. to define "category" as a class within both hcard and hcalendar, or to define "copyright" as both a class value and a rel value. TobyInk 06:26, 18 Feb 2008 (PST)
    • Two things. First, "category" MUST NOT be different between hCard and hCalendar, and thus it is a feature, not a problem, that there can only be one id="category" between the two of them. Second, for the rel case, this is solved by using ID values prefixed with "rel-" for rel values. E.g. in http://gmpg.org/xmdp/1, rel-profile is defined with id="rel-profile", and the class name "profile" is defined with id="profile". Tantek 17:48, 4 October 2009 (UTC)

automatic parsability enabling

The current XMDP is useful for people to read and learn about a microformat, but of very limited utility to automate parsing microformats/poshformats (simply identification of vocabulary to parse for, and what attributes to parse for them). It would be nice if people could design their own poshformats, create an XMDP profile, and for the poshformat to be thus instantly parsable by machines. Here is the information that I think would need to be added to XMDP for this to be possible:

For each profile defined:

For each property defined:

We must expect that there will always be some parsing rules (e.g. hAtom's "hunt the author" game) which will not be expressible in a machine readable profile format, but it may be possible to cover 90% of the information a parser should need for most microformats.

Indeed experience has shown that any "real world" semantic markup languages that get significant use requires LOTS of special custom parsing rules (e.g. HTML is not fully parseable simply from the DTD, nor is RSS from the RSS DTD).

Thus while it may make sense to take incremental steps towards capturing more about a microformat in XMDP, full enabling of machine parsability should not be a short-term (nor even medium-term) goal, as others have tried (DTD, RelaxNG, XML Schema) and failed to achieve this.

See Also

XMDP Brainstorming was last modified: Thursday, November 5th, 2009