microformats2-brainstorming
Brainstorming experimental / undeveloped / rejected ideas for microformats-2.
further simplifications
more on allow root class name only
This has been stable for a while, see:
incorporate rel
Many microformats use 'rel' attribute values, e.g. rel-tag, rel-license, rel-me. It would be good to continue supporting 'rel' values explicitly in the microformats2 model. Here are some existing use-cases and ways we would support them.
profile h-card rel-me
Many sites have profile pages (personal home pages, and social networks), marked up with hCard, and permitting one or more rel-me values to other profiles, e.g. if this content were on http://tantek.com/ :
Tantek Çelik (@t, github.com/tantek)
with source:
<span class="h-card">
<span class="p-name">Tantek Çelik</span>
(<a class="u-url" rel="me"
href="https://twitter.com/t"
>@t</a>,
<a class="u-url" rel="me"
href="http://github.com/tantek"
>github.com/tantek</a>)
</span>
Parsed JSON per microformats2 properties:
[{
"type": ["h-card"],
"properties": {
"name": ["Tantek Çelik"],
"url": ["https://twitter.com/t",
"http://github.com/tantek"]
}
}]
We could incorporate rel property parsing either as just another property (like a 'u-' property) scoped to the microformat:
[{
"type": ["h-card"],
"properties": {
"name": ["Tantek Çelik"],
"url": ["https://twitter.com/t",
"http://github.com/tantek"],
"rel-me": ["https://twitter.com/t",
"http://github.com/tantek"]
}
}]
Or as always within global scope (closer to HTML5's currently defined scoping for 'rel' attributed links in a document):
[{"url": "http://tantek.com/",
"rel-stylesheet": ["...", "..."],
"rel-me": ["https://twitter.com/t",
"http://github.com/tantek"]
},
{
"type": ["h-card"],
"properties": {
"name": ["Tantek Çelik"],
"url": ["https://twitter.com/t",
"http://github.com/tantek"],
}
}]
Note: "url" in that root level object is the URL of the document itself, which is necessary for:
- 'rel' semantics: which URL from to which other URL the rels apply to.
- vCard .vcf export "SOURCE:" property (URL that the vCards were derived from).
document url
As described above in the rel section, it's useful to have a root context object which provides the URL of the document itself.
adopt itemref
There many existing real-world use-cases where either:
- several microformats in a page want to share some common data without repeating it.
- e.g. a page about a product with multiple reviews of that product (very common, products sites, Amazon/CNET et al, review aggregators, Yelp et al)
- e.g. representing the author of multiple hAtom entries on a page. Currently this is possible with the
<address class="hcard">
optimisation, which would be rendered obsolete by the proposed new generic parsing rules.
- a microformat in a page needs to incorporate information spread across different parts of a page, without assigning the entire page to that microformat
The include-pattern provides the necessary functionality for existing microformats (1.0).
For 2.0 it may be reasonable to simply re-use the nice itemref
attribute from microdata, with identical/analogous functionality.
That is, when present on the root element of a microformat, the itemref
attribute provides a space separated list of ids of elements in the document which are then incorporated as children of the microformat, before its actual children in the document. This is a simple coarse summary of course, and the actual itemref inclusion algorithm should be followed.
Questions and possible issues:
- Does use of 'itemref' mean requiring HTML5?
- No,
itemref
is not part of the HTML5 specification, it is currently only part of the microdata last call working draft. Thus we would be adding a "new" attribute to HTML above and beyond HTML5, though one that is already specified, and validated by current HTML validators.
- No,
- Is 'itemref' documented as a stable draft?
- 'itemref' is defined in the Last Call Working Draft of microdata. Being "last call" it has some amount of stability, but could still change before it goes to candidate recommendation (CR).
- Doesn't microformats try to avoid introducing new attributes? (e.g. from RDFa in the past).
- Yes, in general microformats try to avoid introducing new attributes. It may be ok for the set of use-cases that need "itemref". That is, they *are* a minority of actual use-cases, and thus making them use a new attribute is probably ok.
- Wouldn't it be dangerous to adopt features of separate technologies that are unstable, may change, or may disappear?
- Indeed any time we consider adopting anything from technologies in working drafts we should consider their stability and dependability on a case-by-case basis. When we do decide to re-use such technologies, we should be sure to copy their definition/functionality and provide a non-normative reference to the source, rather than normatively depend on anything that could change or disappear. In the case of 'itemref', it's been stable for a while, and if we believe the schema.org implementation announcements, there are multiple real-world implementations that surface it in common (search) user interfaces.
- Wasn't RDFa a stable augmentation of HTML, and yet we resisted incorporated attributes from it?
- In practice, no, RDFa has continued to change evolve (which is good) in response to market feedback about its complexity. There was very little real world use (and thus exercising) of RDFa until Google provided it as a Rich Snippets alternative syntax in 2009. At this point, it may be reasonable to also consider attributes from RDFa (e.g. 'vocab' instead of 'profile'), however for this particular purpose (providing inclusion functionality), the 'itemref' attribute/feature makes the most sense.
rejected ideas
n prefix for multiple numbers
Idea:
- "n-*" for (one or more) numbers, e.g. "n-rating", "n-geo", leaving the semantics of more than one number up to specific format. e.g. for an "n-rating" inside an "h-review", the first number would presumably be the rating value, when only two numbers the second would be the "best" value (e.g. rated
<span class="n-rating">3 out of 4</span>
), when three numbers the second would be the "worst" and the third would be the "best" (e.g.<span class="n-rating">7.5 out of 1 to 10</span>
). similarly "n-geo" would specify the first number to be the latitude and the second to be the longitude.
Rejected because while this *might* work for some properties in *English* it will NOT localize/internationalize well (orders of numbers in phrases change in different languages), and it will also limit the human expressivity of the plain text. Thanks to Ben Ward for this feedback at the 2011-06-02 microformats dinner. Tantek 14:25, 9 June 2011 (UTC)