<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BenWard</id>
	<title>Microformats Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BenWard"/>
	<link rel="alternate" type="text/html" href="https://microformats.org/wiki/Special:Contributions/BenWard"/>
	<updated>2026-05-03T08:51:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44803</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44803"/>
		<updated>2011-10-10T09:35:26Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Other Interpretation/Parsing Notes */ Note/query about parsing the value and value-title patterns.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[[microformats-2|Microformats 2]] proposes a new, all encompassing syntax modification of [[microformats-2-prefixes|prefixes]] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
==Parsing Microformats 2.0 Syntax: Extraction vs. Interpretation==&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats 2.0 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats 2.0 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as microformats-2-parsing-faq to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats 2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats 1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats 1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing Literal Values==&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats 2.0 that all microformats be parseable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [hcard]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing properties from rel attributes==&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
***** The more I've thought about this and how consuming applications may want to treat rel semantics, the more it seems correct to keep rel semantics distinct from class semantics. Class semantics are quite general/flexible, whereas rel is quite specific, naming something else in terms of a relationship from the current page/microformat's perspective. I think we should consider putting rel values in their own 'rel' collection, separate from the 'properties' collection. E.g. the original rel-author p-author h-card markup example would be parsed into this:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': ['http://benward.me'] /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** and if a post had multiple authors:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Tantek Çelik'], /* from 2nd p-author     */&lt;br /&gt;
          'type': ['h-card'],        /* from 2nd h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Tantek Çelik'], &lt;br /&gt;
            'url': ['http://tantek.com']&lt;br /&gt;
        },&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': [&lt;br /&gt;
       'http://benward.me',      /* from rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
       'http://tantek.com'       /* from 2nd rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** This preserves the semantic distinction between rel and properties in general, and leaves it up to a higher-level application to implement any logic around showing &amp;quot;more info&amp;quot; about a rel-author, e.g. by correlating the rel-author URL with the 'url' of an hCard it found in the same entry. However, note that even in the earlier JSON data model, the rel-author value just shows up as another property value, and any higher level application would still have to do some correlation logic. At least with this JSON data model, applications that may be looking for a rel value in particular, or a property value in particular can do so without having one unintentionally pollute the other. [[User:Tantek|Tantek]] 17:33, 6 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation/Parsing Notes==&lt;br /&gt;
&lt;br /&gt;
Collection of other unresolved parsing issues in a generic model:&lt;br /&gt;
&lt;br /&gt;
This is good material for documenting as [[microformats-2-issues]], [[microformats-2-faq]], and perhaps some of the more technical details in [[microformats-2-parsing-faq]].&lt;br /&gt;
&lt;br /&gt;
* The include pattern references other elements from elsewhere in a document. A generic parser needs to track IDs and fill them in after walking the DOM. (also, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; if adopted.)&lt;br /&gt;
** The current thinking per [[microformats-2-brainstorming]] is to adopt &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; and drop the [[include-pattern]]. [[User:Tantek|Tantek]]&lt;br /&gt;
* Will &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; always map to an &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; property name?&lt;br /&gt;
** No, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; maps to one or more elements by ids, and their children. Those referenced elements may have property class names themselves, or they may contain elements that do. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] implies &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; from an hCard in a page that uses an &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element. This requires format knowledge, but a generic parser does not currently track the element type of a property node. Should it?&lt;br /&gt;
** It should not. element-specific handling (e.g. using &amp;quot;alt&amp;quot; from img, and &amp;quot;title&amp;quot; from abbr) is completely done at parse time. The JSON data model does not reflect which element type or attribute the value came from. Additionally, [[hAtom]] is an example where we created far too many vocabulary-specific rules, in practice they're not necessary, and only complicate the microformat for both publisher understanding and parser implementation. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that the highest level heading within an entry implies &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt;. This particular optimisation might be better off dead.&lt;br /&gt;
** Agreed, this is gone in microformats 2. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that permalinks be parsed from &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
** In practice this has been one of the more problematic/error prone aspects of hAtom implementations, and it's also inconsistent with other microformats (although [[hReview]] tried to use both rel permalinks and &amp;quot;url&amp;quot;). The dependence upon [[rel-bookmark]] for permalinks is dropped in h-atom in preference to re-using &amp;quot;u-url&amp;quot; and &amp;quot;u-uid&amp;quot;. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[XFN]] is entirely built on &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; (although, has various other differences from structural microformats, as do vote-links, so perhaps are excluded from this discussion and will always be handled by dedicated parsers/queries regardless?)&lt;br /&gt;
** The best (easiest and most reliable) use of 'rel' microformats in practice is when they are orthogonal to 'class' microformats. This is true both with [[XFN]] and some newer [[existing-rel-values|rel values]] like [[rel-author]]. In addition, it was very clear at the recent [[schema.org]] workshop's syntax session that RDFa's decision to apparently arbitrarily mix use of 'rel' and 'property' attributes for specifying different types of properties (it wasn't clear to people in the room when you use which for what) has caused a high degree of confusion among publishers and thus high error-rates. Thus if anything we should learn from both the mistakes of RDFa and our own experiences with even very deliberate/specific mixing of rel microformats in class microformats, and keep them defined as separate orthogonal building blocks that work together, but don't depend on each other. [[User:Tantek|Tantek]]&lt;br /&gt;
*** Relatedly to this: &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; in hAtom. --[[User:BenWard|BenWard]] 06:50, 5 October 2011 (UTC)&lt;br /&gt;
**** Yes, and two related things here. First, despite my (and others') objection and (past) interoperable post/entry-specific treatment by Technorati and Ice Rocket, Hixie has redefined rel-tag in [[HTML5]] to mean applying to the whole page, not a single post. Second, I've explicitly added 'p-category' to the draft 'h-atom' vocabulary in [[microformats-2]]. [[User:Tantek|Tantek]] 07:12, 5 October 2011 (UTC)&lt;br /&gt;
* HTML's &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element includes an optional &amp;lt;code&amp;gt;pubdate&amp;lt;/code&amp;gt; attribute. Simply: We should parse this as &amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;. --[[User:BenWard|BenWard]] 06:12, 10 October 2011 (UTC)&lt;br /&gt;
* Value pattern: In microformats-2, since there are no sub-properties, there will presumably no-longer be a 'value' property in any parsed model. Properties such as 'tel &amp;gt; type' in hCard are, as I recall, deprecated due to underuse anyway, so 'tel &amp;gt; value' becomes redundant. (There's also potentially some clarification around 'price &amp;gt; value' in hListing, whereby value was used in a pattern. So, what does this mean for value class parsing, with regard to value-title patterns and date separation patterns. Are we looking for a 'p-value' and 'p-value-title' classname, but treating them specially (excluding them from regular property parsing.) Or, are we giving them a special prefix (v-text, v-title? That seems confusing, but could be a concept.) I'm fine with p- for both, and just having the parser ignore them since they're special, but need clarification and naming confirmation. --[[User:BenWard|BenWard]] 09:35, 10 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;br /&gt;
* [[microformats-2-issues]]&lt;br /&gt;
* [[microformats-2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44802</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44802"/>
		<updated>2011-10-10T06:12:55Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Other Interpretation/Parsing Notes */ Suggest parsing time/@pubdate as .dt-published.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[[microformats-2|Microformats 2]] proposes a new, all encompassing syntax modification of [[microformats-2-prefixes|prefixes]] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
==Parsing Microformats 2.0 Syntax: Extraction vs. Interpretation==&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats 2.0 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats 2.0 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as microformats-2-parsing-faq to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats 2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats 1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats 1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing Literal Values==&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats 2.0 that all microformats be parseable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [hcard]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing properties from rel attributes==&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
***** The more I've thought about this and how consuming applications may want to treat rel semantics, the more it seems correct to keep rel semantics distinct from class semantics. Class semantics are quite general/flexible, whereas rel is quite specific, naming something else in terms of a relationship from the current page/microformat's perspective. I think we should consider putting rel values in their own 'rel' collection, separate from the 'properties' collection. E.g. the original rel-author p-author h-card markup example would be parsed into this:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': ['http://benward.me'] /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** and if a post had multiple authors:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Tantek Çelik'], /* from 2nd p-author     */&lt;br /&gt;
          'type': ['h-card'],        /* from 2nd h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Tantek Çelik'], &lt;br /&gt;
            'url': ['http://tantek.com']&lt;br /&gt;
        },&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': [&lt;br /&gt;
       'http://benward.me',      /* from rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
       'http://tantek.com'       /* from 2nd rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** This preserves the semantic distinction between rel and properties in general, and leaves it up to a higher-level application to implement any logic around showing &amp;quot;more info&amp;quot; about a rel-author, e.g. by correlating the rel-author URL with the 'url' of an hCard it found in the same entry. However, note that even in the earlier JSON data model, the rel-author value just shows up as another property value, and any higher level application would still have to do some correlation logic. At least with this JSON data model, applications that may be looking for a rel value in particular, or a property value in particular can do so without having one unintentionally pollute the other. [[User:Tantek|Tantek]] 17:33, 6 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation/Parsing Notes==&lt;br /&gt;
&lt;br /&gt;
Collection of other unresolved parsing issues in a generic model:&lt;br /&gt;
&lt;br /&gt;
This is good material for documenting as [[microformats-2-issues]], [[microformats-2-faq]], and perhaps some of the more technical details in [[microformats-2-parsing-faq]].&lt;br /&gt;
&lt;br /&gt;
* The include pattern references other elements from elsewhere in a document. A generic parser needs to track IDs and fill them in after walking the DOM. (also, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; if adopted.)&lt;br /&gt;
** The current thinking per [[microformats-2-brainstorming]] is to adopt &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; and drop the [[include-pattern]]. [[User:Tantek|Tantek]]&lt;br /&gt;
* Will &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; always map to an &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; property name?&lt;br /&gt;
** No, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; maps to one or more elements by ids, and their children. Those referenced elements may have property class names themselves, or they may contain elements that do. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] implies &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; from an hCard in a page that uses an &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element. This requires format knowledge, but a generic parser does not currently track the element type of a property node. Should it?&lt;br /&gt;
** It should not. element-specific handling (e.g. using &amp;quot;alt&amp;quot; from img, and &amp;quot;title&amp;quot; from abbr) is completely done at parse time. The JSON data model does not reflect which element type or attribute the value came from. Additionally, [[hAtom]] is an example where we created far too many vocabulary-specific rules, in practice they're not necessary, and only complicate the microformat for both publisher understanding and parser implementation. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that the highest level heading within an entry implies &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt;. This particular optimisation might be better off dead.&lt;br /&gt;
** Agreed, this is gone in microformats 2. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that permalinks be parsed from &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
** In practice this has been one of the more problematic/error prone aspects of hAtom implementations, and it's also inconsistent with other microformats (although [[hReview]] tried to use both rel permalinks and &amp;quot;url&amp;quot;). The dependence upon [[rel-bookmark]] for permalinks is dropped in h-atom in preference to re-using &amp;quot;u-url&amp;quot; and &amp;quot;u-uid&amp;quot;. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[XFN]] is entirely built on &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; (although, has various other differences from structural microformats, as do vote-links, so perhaps are excluded from this discussion and will always be handled by dedicated parsers/queries regardless?)&lt;br /&gt;
** The best (easiest and most reliable) use of 'rel' microformats in practice is when they are orthogonal to 'class' microformats. This is true both with [[XFN]] and some newer [[existing-rel-values|rel values]] like [[rel-author]]. In addition, it was very clear at the recent [[schema.org]] workshop's syntax session that RDFa's decision to apparently arbitrarily mix use of 'rel' and 'property' attributes for specifying different types of properties (it wasn't clear to people in the room when you use which for what) has caused a high degree of confusion among publishers and thus high error-rates. Thus if anything we should learn from both the mistakes of RDFa and our own experiences with even very deliberate/specific mixing of rel microformats in class microformats, and keep them defined as separate orthogonal building blocks that work together, but don't depend on each other. [[User:Tantek|Tantek]]&lt;br /&gt;
*** Relatedly to this: &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; in hAtom. --[[User:BenWard|BenWard]] 06:50, 5 October 2011 (UTC)&lt;br /&gt;
**** Yes, and two related things here. First, despite my (and others') objection and (past) interoperable post/entry-specific treatment by Technorati and Ice Rocket, Hixie has redefined rel-tag in [[HTML5]] to mean applying to the whole page, not a single post. Second, I've explicitly added 'p-category' to the draft 'h-atom' vocabulary in [[microformats-2]]. [[User:Tantek|Tantek]] 07:12, 5 October 2011 (UTC)&lt;br /&gt;
* HTML's &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element includes an optional &amp;lt;code&amp;gt;pubdate&amp;lt;/code&amp;gt; attribute. Simply: We should parse this as &amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;. --[[User:BenWard|BenWard]] 06:12, 10 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;br /&gt;
* [[microformats-2-issues]]&lt;br /&gt;
* [[microformats-2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44784</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44784"/>
		<updated>2011-10-06T08:14:01Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Agree that rel sourced properties should *not* combine with nested microformat objects.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[[microformats-2|Microformats 2]] proposes a new, all encompassing syntax modification of [[microformats-2-prefixes|prefixes]] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
==Parsing Microformats 2.0 Syntax: Extraction vs. Interpretation==&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats 2.0 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats 2.0 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as microformats-2-parsing-faq to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats 2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats 1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats 1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing Literal Values==&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats 2.0 that all microformats be parseable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [hcard]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing properties from rel attributes==&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation/Parsing Notes==&lt;br /&gt;
&lt;br /&gt;
Collection of other unresolved parsing issues in a generic model:&lt;br /&gt;
&lt;br /&gt;
This is good material for documenting as [[microformats-2-issues]], [[microformats-2-faq]], and perhaps some of the more technical details in [[microformats-2-parsing-faq]].&lt;br /&gt;
&lt;br /&gt;
* The include pattern references other elements from elsewhere in a document. A generic parser needs to track IDs and fill them in after walking the DOM. (also, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; if adopted.)&lt;br /&gt;
** The current thinking per [[microformats-2-brainstorming]] is to adopt &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; and drop the [[include-pattern]]. [[User:Tantek|Tantek]]&lt;br /&gt;
* Will &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; always map to an &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; property name?&lt;br /&gt;
** No, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; maps to one or more elements by ids, and their children. Those referenced elements may have property class names themselves, or they may contain elements that do. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] implies &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; from an hCard in a page that uses an &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element. This requires format knowledge, but a generic parser does not currently track the element type of a property node. Should it?&lt;br /&gt;
** It should not. element-specific handling (e.g. using &amp;quot;alt&amp;quot; from img, and &amp;quot;title&amp;quot; from abbr) is completely done at parse time. The JSON data model does not reflect which element type or attribute the value came from. Additionally, [[hAtom]] is an example where we created far too many vocabulary-specific rules, in practice they're not necessary, and only complicate the microformat for both publisher understanding and parser implementation. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that the highest level heading within an entry implies &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt;. This particular optimisation might be better off dead.&lt;br /&gt;
** Agreed, this is gone in microformats 2. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that permalinks be parsed from &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
** In practice this has been one of the more problematic/error prone aspects of hAtom implementations, and it's also inconsistent with other microformats (although [[hReview]] tried to use both rel permalinks and &amp;quot;url&amp;quot;). The dependence upon [[rel-bookmark]] for permalinks is dropped in h-atom in preference to re-using &amp;quot;u-url&amp;quot; and &amp;quot;u-uid&amp;quot;. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[XFN]] is entirely built on &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; (although, has various other differences from structural microformats, as do vote-links, so perhaps are excluded from this discussion and will always be handled by dedicated parsers/queries regardless?)&lt;br /&gt;
** The best (easiest and most reliable) use of 'rel' microformats in practice is when they are orthogonal to 'class' microformats. This is true both with [[XFN]] and some newer [[existing-rel-values|rel values]] like [[rel-author]]. In addition, it was very clear at the recent [[schema.org]] workshop's syntax session that RDFa's decision to apparently arbitrarily mix use of 'rel' and 'property' attributes for specifying different types of properties (it wasn't clear to people in the room when you use which for what) has caused a high degree of confusion among publishers and thus high error-rates. Thus if anything we should learn from both the mistakes of RDFa and our own experiences with even very deliberate/specific mixing of rel microformats in class microformats, and keep them defined as separate orthogonal building blocks that work together, but don't depend on each other. [[User:Tantek|Tantek]]&lt;br /&gt;
*** Relatedly to this: &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; in hAtom. --[[User:BenWard|BenWard]] 06:50, 5 October 2011 (UTC)&lt;br /&gt;
**** Yes, and two related things here. First, despite my (and others') objection and (past) interoperable post/entry-specific treatment by Technorati and Ice Rocket, Hixie has redefined rel-tag in [[HTML5]] to mean applying to the whole page, not a single post. Second, I've explicitly added 'p-category' to the draft 'h-atom' vocabulary in [[microformats-2]]. [[User:Tantek|Tantek]] 07:12, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;br /&gt;
* [[microformats-2-issues]]&lt;br /&gt;
* [[microformats-2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44780</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44780"/>
		<updated>2011-10-05T08:29:36Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Parsing properties from rel attributes */ Proposed handlings for possible rel/class conflicts (with 'author' example)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[[microformats-2|Microformats 2]] proposes a new, all encompassing syntax modification of [[microformats-2-prefixes|prefixes]] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
==Parsing Microformats 2.0 Syntax: Extraction vs. Interpretation==&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats 2.0 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats 2.0 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as microformats-2-parsing-faq to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats 2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats 1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats 1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing Literal Values==&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats 2.0 that all microformats be parseable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specific a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) let me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [hcard]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats. And I think I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing properties from rel attributes==&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &amp;lt;code&amp;gt;&amp;amp;lt;a href=&amp;quot;p-author h-card&amp;quot; rel=&amp;quot;author&amp;quot; href=&amp;quot;http://benward.me&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;. I can think of two quite reasonable solutions: 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [ &lt;br /&gt;
       { 'type': ['h-card'], 'properties': { 'name': 'Ben Ward', 'url': 'http://benward.me' },&lt;br /&gt;
       'http://benward.me'&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation/Parsing Notes==&lt;br /&gt;
&lt;br /&gt;
Collection of other unresolved parsing issues in a generic model:&lt;br /&gt;
&lt;br /&gt;
This is good material for documenting as [[microformats-2-issues]], [[microformats-2-faq]], and perhaps some of the more technical details in [[microformats-2-parsing-faq]].&lt;br /&gt;
&lt;br /&gt;
* The include pattern references other elements from elsewhere in a document. A generic parser needs to track IDs and fill them in after walking the DOM. (also, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; if adopted.)&lt;br /&gt;
** The current thinking per [[microformats-2-brainstorming]] is to adopt &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; and drop the [[include-pattern]]. [[User:Tantek|Tantek]]&lt;br /&gt;
* Will &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; always map to an &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; property name?&lt;br /&gt;
** No, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; maps to one or more elements by ids, and their children. Those referenced elements may have property class names themselves, or they may contain elements that do. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] implies &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; from an hCard in a page that uses an &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element. This requires format knowledge, but a generic parser does not currently track the element type of a property node. Should it?&lt;br /&gt;
** It should not. element-specific handling (e.g. using &amp;quot;alt&amp;quot; from img, and &amp;quot;title&amp;quot; from abbr) is completely done at parse time. The JSON data model does not reflect which element type or attribute the value came from. Additionally, [[hAtom]] is an example where we created far too many vocabulary-specific rules, in practice they're not necessary, and only complicate the microformat for both publisher understanding and parser implementation. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that the highest level heading within an entry implies &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt;. This particular optimisation might be better off dead.&lt;br /&gt;
** Agreed, this is gone in microformats 2. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that permalinks be parsed from &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
** In practice this has been one of the more problematic/error prone aspects of hAtom implementations, and it's also inconsistent with other microformats (although [[hReview]] tried to use both rel permalinks and &amp;quot;url&amp;quot;). The dependence upon [[rel-bookmark]] for permalinks is dropped in h-atom in preference to re-using &amp;quot;u-url&amp;quot; and &amp;quot;u-uid&amp;quot;. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[XFN]] is entirely built on &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; (although, has various other differences from structural microformats, as do vote-links, so perhaps are excluded from this discussion and will always be handled by dedicated parsers/queries regardless?)&lt;br /&gt;
** The best (easiest and most reliable) use of 'rel' microformats in practice is when they are orthogonal to 'class' microformats. This is true both with [[XFN]] and some newer [[existing-rel-values|rel values]] like [[rel-author]]. In addition, it was very clear at the recent [[schema.org]] workshop's syntax session that RDFa's decision to apparently arbitrarily mix use of 'rel' and 'property' attributes for specifying different types of properties (it wasn't clear to people in the room when you use which for what) has caused a high degree of confusion among publishers and thus high error-rates. Thus if anything we should learn from both the mistakes of RDFa and our own experiences with even very deliberate/specific mixing of rel microformats in class microformats, and keep them defined as separate orthogonal building blocks that work together, but don't depend on each other. [[User:Tantek|Tantek]]&lt;br /&gt;
*** Relatedly to this: &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; in hAtom. --[[User:BenWard|BenWard]] 06:50, 5 October 2011 (UTC)&lt;br /&gt;
**** Yes, and two related things here. First, despite my (and others') objection and (past) interoperable post/entry-specific treatment by Technorati and Ice Rocket, Hixie has redefined rel-tag in [[HTML5]] to mean applying to the whole page, not a single post. Second, I've explicitly added 'p-category' to the draft 'h-atom' vocabulary in [[microformats-2]]. [[User:Tantek|Tantek]] 07:12, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]] - moving more experimental / undeveloped / and rejected thoughts ideas here to simplify/progress *this* page further.&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;br /&gt;
* [[microformats-2-issues]]&lt;br /&gt;
* [[microformats-2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44778</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44778"/>
		<updated>2011-10-05T07:24:09Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Alternative: Propose parsing all rel attributes for all microformats.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[[microformats-2|Microformats 2]] proposes a new, all encompassing syntax modification of [[microformats-2-prefixes|prefixes]] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
==Parsing Microformats 2.0 Syntax: Extraction vs. Interpretation==&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats 2.0 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats 2.0 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as microformats-2-parsing-faq to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats 2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats 1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats 1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing Literal Values==&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats 2.0 that all microformats be parseable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specific a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) let me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [hcard]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats. And I think I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing properties from rel attributes==&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation/Parsing Notes==&lt;br /&gt;
&lt;br /&gt;
Collection of other unresolved parsing issues in a generic model:&lt;br /&gt;
&lt;br /&gt;
This is good material for documenting as [[microformats-2-issues]], [[microformats-2-faq]], and perhaps some of the more technical details in [[microformats-2-parsing-faq]].&lt;br /&gt;
&lt;br /&gt;
* The include pattern references other elements from elsewhere in a document. A generic parser needs to track IDs and fill them in after walking the DOM. (also, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; if adopted.)&lt;br /&gt;
** The current thinking per [[microformats-2-brainstorming]] is to adopt &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; and drop the [[include-pattern]]. [[User:Tantek|Tantek]]&lt;br /&gt;
* Will &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; always map to an &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; property name?&lt;br /&gt;
** No, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; maps to one or more elements by ids, and their children. Those referenced elements may have property class names themselves, or they may contain elements that do. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] implies &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; from an hCard in a page that uses an &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element. This requires format knowledge, but a generic parser does not currently track the element type of a property node. Should it?&lt;br /&gt;
** It should not. element-specific handling (e.g. using &amp;quot;alt&amp;quot; from img, and &amp;quot;title&amp;quot; from abbr) is completely done at parse time. The JSON data model does not reflect which element type or attribute the value came from. Additionally, [[hAtom]] is an example where we created far too many vocabulary-specific rules, in practice they're not necessary, and only complicate the microformat for both publisher understanding and parser implementation. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that the highest level heading within an entry implies &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt;. This particular optimisation might be better off dead.&lt;br /&gt;
** Agreed, this is gone in microformats 2. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that permalinks be parsed from &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
** In practice this has been one of the more problematic/error prone aspects of hAtom implementations, and it's also inconsistent with other microformats (although [[hReview]] tried to use both rel permalinks and &amp;quot;url&amp;quot;). The dependence upon [[rel-bookmark]] for permalinks is dropped in h-atom in preference to re-using &amp;quot;u-url&amp;quot; and &amp;quot;u-uid&amp;quot;. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[XFN]] is entirely built on &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; (although, has various other differences from structural microformats, as do vote-links, so perhaps are excluded from this discussion and will always be handled by dedicated parsers/queries regardless?)&lt;br /&gt;
** The best (easiest and most reliable) use of 'rel' microformats in practice is when they are orthogonal to 'class' microformats. This is true both with [[XFN]] and some newer [[existing-rel-values|rel values]] like [[rel-author]]. In addition, it was very clear at the recent [[schema.org]] workshop's syntax session that RDFa's decision to apparently arbitrarily mix use of 'rel' and 'property' attributes for specifying different types of properties (it wasn't clear to people in the room when you use which for what) has caused a high degree of confusion among publishers and thus high error-rates. Thus if anything we should learn from both the mistakes of RDFa and our own experiences with even very deliberate/specific mixing of rel microformats in class microformats, and keep them defined as separate orthogonal building blocks that work together, but don't depend on each other. [[User:Tantek|Tantek]]&lt;br /&gt;
*** Relatedly to this: &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; in hAtom. --[[User:BenWard|BenWard]] 06:50, 5 October 2011 (UTC)&lt;br /&gt;
**** Yes, and two related things here. First, despite my (and others') objection and (past) interoperable post/entry-specific treatment by Technorati and Ice Rocket, Hixie has redefined rel-tag in [[HTML5]] to mean applying to the whole page, not a single post. Second, I've explicitly added 'p-category' to the draft 'h-atom' vocabulary in [[microformats-2]]. [[User:Tantek|Tantek]] 07:12, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]] - moving more experimental / undeveloped / and rejected thoughts ideas here to simplify/progress *this* page further.&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;br /&gt;
* [[microformats-2-issues]]&lt;br /&gt;
* [[microformats-2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44774</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44774"/>
		<updated>2011-10-05T06:50:56Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Other Interpretation/Parsing Notes */ Aaaaand, rel-tag in hAtom would be unparsable, too.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[[microformats-2|Microformats 2]] proposes a new, all encompassing syntax modification of [[microformats-2-prefixes|prefixes]] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
==Parsing Microformats 2.0 Syntax: Extraction vs. Interpretation==&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats 2.0 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats 2.0 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as microformats-2-parsing-faq to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats 2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats 1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats 1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Parsing Literal Values==&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats 2.0 that all microformats be parseable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specific a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) let me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [hcard]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats. And I think I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation/Parsing Notes==&lt;br /&gt;
&lt;br /&gt;
Collection of other unresolved parsing issues in a generic model:&lt;br /&gt;
&lt;br /&gt;
This is good material for documenting as [[microformats-2-issues]], [[microformats-2-faq]], and perhaps some of the more technical details in [[microformats-2-parsing-faq]].&lt;br /&gt;
&lt;br /&gt;
* The include pattern references other elements from elsewhere in a document. A generic parser needs to track IDs and fill them in after walking the DOM. (also, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; if adopted.)&lt;br /&gt;
** The current thinking per [[microformats-2-brainstorming]] is to adopt &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; and drop the [[include-pattern]]. [[User:Tantek|Tantek]]&lt;br /&gt;
* Will &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; always map to an &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; property name?&lt;br /&gt;
** No, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; maps to one or more elements by ids, and their children. Those referenced elements may have property class names themselves, or they may contain elements that do. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] implies &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; from an hCard in a page that uses an &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element. This requires format knowledge, but a generic parser does not currently track the element type of a property node. Should it?&lt;br /&gt;
** It should not. element-specific handling (e.g. using &amp;quot;alt&amp;quot; from img, and &amp;quot;title&amp;quot; from abbr) is completely done at parse time. The JSON data model does not reflect which element type or attribute the value came from. Additionally, [[hAtom]] is an example where we created far too many vocabulary-specific rules, in practice they're not necessary, and only complicate the microformat for both publisher understanding and parser implementation. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that the highest level heading within an entry implies &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt;. This particular optimisation might be better off dead.&lt;br /&gt;
** Agreed, this is gone in microformats 2. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that permalinks be parsed from &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
** In practice this has been one of the more problematic/error prone aspects of hAtom implementations, and it's also inconsistent with other microformats (although [[hReview]] tried to use both rel permalinks and &amp;quot;url&amp;quot;). The dependence upon [[rel-bookmark]] for permalinks is dropped in h-atom in preference to re-using &amp;quot;u-url&amp;quot; and &amp;quot;u-uid&amp;quot;. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[XFN]] is entirely built on &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; (although, has various other differences from structural microformats, as do vote-links, so perhaps are excluded from this discussion and will always be handled by dedicated parsers/queries regardless?)&lt;br /&gt;
** The best (easiest and most reliable) use of 'rel' microformats in practice is when they are orthogonal to 'class' microformats. This is true both with [[XFN]] and some newer [[existing-rel-values|rel values]] like [[rel-author]]. In addition, it was very clear at the recent [[schema.org]] workshop's syntax session that RDFa's decision to apparently arbitrarily mix use of 'rel' and 'property' attributes for specifying different types of properties (it wasn't clear to people in the room when you use which for what) has caused a high degree of confusion among publishers and thus high error-rates. Thus if anything we should learn from both the mistakes of RDFa and our own experiences with even very deliberate/specific mixing of rel microformats in class microformats, and keep them defined as separate orthogonal building blocks that work together, but don't depend on each other. [[User:Tantek|Tantek]]&lt;br /&gt;
*** Relatedly to this: &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; in hAtom. --[[User:BenWard|BenWard]] 06:50, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]] - moving more experimental / undeveloped / and rejected thoughts ideas here to simplify/progress *this* page further.&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;br /&gt;
* [[microformats-2-issues]]&lt;br /&gt;
* [[microformats-2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-brainstorming&amp;diff=44773</id>
		<title>microformats2-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-brainstorming&amp;diff=44773"/>
		<updated>2011-10-05T06:46:41Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* adopt itemref */ fix code typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Brainstorming experimental / undeveloped / rejected ideas for [[microformats-2]].&lt;br /&gt;
&lt;br /&gt;
== further simplifications ==&lt;br /&gt;
&lt;br /&gt;
=== more on allow root class name only ===&lt;br /&gt;
This has been stable for a while, see:&lt;br /&gt;
* [[microformats-2-implied-properties]]&lt;br /&gt;
&lt;br /&gt;
== adopt itemref ==&lt;br /&gt;
&lt;br /&gt;
There many existing real-world use-cases where either:&lt;br /&gt;
* several microformats in a page want to share some common data without repeating it.&lt;br /&gt;
** 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)&lt;br /&gt;
** e.g. representing the author of multiple hAtom entries on a page. Currently this is possible with the &amp;lt;code&amp;gt;&amp;amp;lt;address class=&amp;quot;hcard&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; optimisation, which would be rendered obsolete by the proposed new generic parsing rules.&lt;br /&gt;
* a microformat in a page needs to incorporate information spread across different parts of a page, without assigning the entire page to that microformat&lt;br /&gt;
&lt;br /&gt;
The [[include-pattern]] provides the necessary functionality for existing microformats (1.0).&lt;br /&gt;
&lt;br /&gt;
For 2.0 it may be reasonable to simply re-use the nice &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; attribute from microdata, with identical/analogous functionality.&lt;br /&gt;
&lt;br /&gt;
That is, when present on the root element of a microformat, the &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
One might say that this raises the issue of requiring [[HTML5]] with the ability to accepted extended attributes like &amp;quot;itemref&amp;quot;, but I think that might be ok for the set of use-cases that need &amp;quot;itemref&amp;quot;. That is, they *are* a minority of actual use-cases, and thus making them use HTML5 is probably ok.&lt;br /&gt;
&lt;br /&gt;
* More problematic is the fact that &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; is not part of the HTML5 specification, nor is it documented as a stable draft. In the past, we resisted cribbing attributes from RDFa, which was a ''stable'' augmentation of HTML, and creating an ugly empty-element hack rather than reusing &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt;. We build atop HTML, and it would be dangerous to adopt features of separate technologies that are unstable, may change, or may disappear. --[[User:BenWard|BenWard]] 06:46, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== rejected ideas ==&lt;br /&gt;
&lt;br /&gt;
=== n prefix for multiple numbers ===&lt;br /&gt;
Idea:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;quot;n-*&amp;quot; for (one or more) numbers''', e.g. &amp;quot;n-rating&amp;quot;, &amp;quot;n-geo&amp;quot;, leaving the semantics of more than one number up to specific format. e.g. for an &amp;quot;n-rating&amp;quot; inside an &amp;quot;h-review&amp;quot;, the first number would presumably be the rating value, when only two numbers the second would be the &amp;quot;best&amp;quot; value (e.g. rated &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;n-rating&amp;quot;&amp;amp;gt;3 out of 4&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;), when three numbers the second would be the &amp;quot;worst&amp;quot; and the third would be the &amp;quot;best&amp;quot; (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;n-rating&amp;quot;&amp;amp;gt;7.5 out of 1 to 10&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;).  similarly &amp;quot;n-geo&amp;quot; would specify the first number to be the latitude and the second to be the longitude.&lt;br /&gt;
&lt;br /&gt;
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. [[User:Tantek|Tantek]] 14:25, 9 June 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-implied-properties]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-brainstorming&amp;diff=44772</id>
		<title>microformats2-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-brainstorming&amp;diff=44772"/>
		<updated>2011-10-05T06:46:07Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* adopt itemref */ Noting that lovely as itemref is, it's not HTML5, nor is it stable, and we've rejected useful invalid attributes in the past.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Brainstorming experimental / undeveloped / rejected ideas for [[microformats-2]].&lt;br /&gt;
&lt;br /&gt;
== further simplifications ==&lt;br /&gt;
&lt;br /&gt;
=== more on allow root class name only ===&lt;br /&gt;
This has been stable for a while, see:&lt;br /&gt;
* [[microformats-2-implied-properties]]&lt;br /&gt;
&lt;br /&gt;
== adopt itemref ==&lt;br /&gt;
&lt;br /&gt;
There many existing real-world use-cases where either:&lt;br /&gt;
* several microformats in a page want to share some common data without repeating it.&lt;br /&gt;
** 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)&lt;br /&gt;
** e.g. representing the author of multiple hAtom entries on a page. Currently this is possible with the &amp;lt;code&amp;gt;&amp;amp;lt;address class=&amp;quot;hcard&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; optimisation, which would be rendered obsolete by the proposed new generic parsing rules.&lt;br /&gt;
* a microformat in a page needs to incorporate information spread across different parts of a page, without assigning the entire page to that microformat&lt;br /&gt;
&lt;br /&gt;
The [[include-pattern]] provides the necessary functionality for existing microformats (1.0).&lt;br /&gt;
&lt;br /&gt;
For 2.0 it may be reasonable to simply re-use the nice &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; attribute from microdata, with identical/analogous functionality.&lt;br /&gt;
&lt;br /&gt;
That is, when present on the root element of a microformat, the &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
One might say that this raises the issue of requiring [[HTML5]] with the ability to accepted extended attributes like &amp;quot;itemref&amp;quot;, but I think that might be ok for the set of use-cases that need &amp;quot;itemref&amp;quot;. That is, they *are* a minority of actual use-cases, and thus making them use HTML5 is probably ok.&lt;br /&gt;
&lt;br /&gt;
* More problematic is the fact that &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; is not part of the HTML5 specification, nor is it documented as a stable draft. In the past, we resisted cribbing attributes from RDFa, which was a ''stable'' augmentation of HTML, and creating an ugly empty-element hack rather than reusing &amp;lt;code&amp;gt;content&amp;lt;/content&amp;gt;. We build atop HTML, and it would be dangerous to adopt features of separate technologies that are unstable, may change, or may disappear. --[[User:BenWard|BenWard]] 06:46, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== rejected ideas ==&lt;br /&gt;
&lt;br /&gt;
=== n prefix for multiple numbers ===&lt;br /&gt;
Idea:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;quot;n-*&amp;quot; for (one or more) numbers''', e.g. &amp;quot;n-rating&amp;quot;, &amp;quot;n-geo&amp;quot;, leaving the semantics of more than one number up to specific format. e.g. for an &amp;quot;n-rating&amp;quot; inside an &amp;quot;h-review&amp;quot;, the first number would presumably be the rating value, when only two numbers the second would be the &amp;quot;best&amp;quot; value (e.g. rated &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;n-rating&amp;quot;&amp;amp;gt;3 out of 4&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;), when three numbers the second would be the &amp;quot;worst&amp;quot; and the third would be the &amp;quot;best&amp;quot; (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;n-rating&amp;quot;&amp;amp;gt;7.5 out of 1 to 10&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;).  similarly &amp;quot;n-geo&amp;quot; would specify the first number to be the latitude and the second to be the longitude.&lt;br /&gt;
&lt;br /&gt;
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. [[User:Tantek|Tantek]] 14:25, 9 June 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-implied-properties]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-brainstorming&amp;diff=44771</id>
		<title>microformats2-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-brainstorming&amp;diff=44771"/>
		<updated>2011-10-05T06:36:19Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* adopt itemref */ Note hAtom shared author use case for itemref left open by loss of &amp;lt;address&amp;gt; optimisation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Brainstorming experimental / undeveloped / rejected ideas for [[microformats-2]].&lt;br /&gt;
&lt;br /&gt;
== further simplifications ==&lt;br /&gt;
&lt;br /&gt;
=== more on allow root class name only ===&lt;br /&gt;
This has been stable for a while, see:&lt;br /&gt;
* [[microformats-2-implied-properties]]&lt;br /&gt;
&lt;br /&gt;
== adopt itemref ==&lt;br /&gt;
&lt;br /&gt;
There many existing real-world use-cases where either:&lt;br /&gt;
* several microformats in a page want to share some common data without repeating it.&lt;br /&gt;
** 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)&lt;br /&gt;
** e.g. representing the author of multiple hAtom entries on a page. Currently this is possible with the &amp;lt;code&amp;gt;&amp;amp;lt;address class=&amp;quot;hcard&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; optimisation, which would be rendered obsolete by the proposed new generic parsing rules.&lt;br /&gt;
* a microformat in a page needs to incorporate information spread across different parts of a page, without assigning the entire page to that microformat&lt;br /&gt;
&lt;br /&gt;
The [[include-pattern]] provides the necessary functionality for existing microformats (1.0).&lt;br /&gt;
&lt;br /&gt;
For 2.0 it may be reasonable to simply re-use the nice &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; attribute from microdata, with identical/analogous functionality.&lt;br /&gt;
&lt;br /&gt;
That is, when present on the root element of a microformat, the &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
One might say that this raises the issue of requiring [[HTML5]] with the ability to accepted extended attributes like &amp;quot;itemref&amp;quot;, but I think that might be ok for the set of use-cases that need &amp;quot;itemref&amp;quot;. That is, they *are* a minority of actual use-cases, and thus making them use HTML5 is probably ok.&lt;br /&gt;
&lt;br /&gt;
== rejected ideas ==&lt;br /&gt;
&lt;br /&gt;
=== n prefix for multiple numbers ===&lt;br /&gt;
Idea:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;quot;n-*&amp;quot; for (one or more) numbers''', e.g. &amp;quot;n-rating&amp;quot;, &amp;quot;n-geo&amp;quot;, leaving the semantics of more than one number up to specific format. e.g. for an &amp;quot;n-rating&amp;quot; inside an &amp;quot;h-review&amp;quot;, the first number would presumably be the rating value, when only two numbers the second would be the &amp;quot;best&amp;quot; value (e.g. rated &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;n-rating&amp;quot;&amp;amp;gt;3 out of 4&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;), when three numbers the second would be the &amp;quot;worst&amp;quot; and the third would be the &amp;quot;best&amp;quot; (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;n-rating&amp;quot;&amp;amp;gt;7.5 out of 1 to 10&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;).  similarly &amp;quot;n-geo&amp;quot; would specify the first number to be the latitude and the second to be the longitude.&lt;br /&gt;
&lt;br /&gt;
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. [[User:Tantek|Tantek]] 14:25, 9 June 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-implied-properties]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-prefixes&amp;diff=44770</id>
		<title>microformats2-prefixes</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-prefixes&amp;diff=44770"/>
		<updated>2011-10-05T06:30:07Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* prefixes for future consideration */ -1 on s-prefix.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats 2 prefix conventions&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[microformats 2]] uses a small number of prefixes to distinguish microformats 2 class names from other class names.&lt;br /&gt;
&lt;br /&gt;
== motivating causes ==&lt;br /&gt;
As described on the [[microformats 2]] page.&lt;br /&gt;
&lt;br /&gt;
=== distinguishing properties from other classes ===&lt;br /&gt;
Current microformats properties re-use generic terms like &amp;quot;summary&amp;quot;, &amp;quot;photo&amp;quot;, &amp;quot;updated&amp;quot; both for ease of use and understanding.&lt;br /&gt;
&lt;br /&gt;
However, through longer term experience, we've seen sites that accidentally drop (or break) their microformats support (e.g. Upcoming.org, Facebook) because web authors sometimes rewrite all their class names, and either are unaware that microformats were in the page, or couldn't easily distinguish microformats property class names from other site-specific class names.&lt;br /&gt;
&lt;br /&gt;
This issue has been reported by a number of web authors:&lt;br /&gt;
* [http://html5doctor.com/microformats/#comment-10241 Wim's comment on HTML5Doctor] &amp;quot;Authors use classes like 'url' or 'region' all the time ... All sorts of markup might look like a microformat.&amp;quot;&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
There has also been an anecdotal report of a design firm who was not (yet) familiar with microformats seeing the &amp;quot;extra&amp;quot; classes that &amp;quot;that don't seem to be used&amp;quot; (without corresponding CSS rules) and asking if they &amp;quot;can remove them&amp;quot;. By making microformats class names different from generic words, authors unfamiliar with microformats may at least notice such distinction and infer special functionality accordingly.&lt;br /&gt;
&lt;br /&gt;
Thus microformats 2 uses ''prefixes'' for property class names, e.g.:&lt;br /&gt;
* '''p-summary''' instead of ''summary''&lt;br /&gt;
* '''u-photo''' instead of ''photo'' &lt;br /&gt;
* '''dt-updated''' instead of ''updated''&lt;br /&gt;
&lt;br /&gt;
Such prefixing of all microformats class names was first suggested by Scott Isaacs of Microsoft to Tantek on a visit to Microsoft sometime in 2006/2007, but specifically aimed at making microformats easier to parse. At the time the suggestion was rejected since microformats were focused on web authors rather than parsers.&lt;br /&gt;
&lt;br /&gt;
However, since experience has shown that distinguishing property class names is an issue for '''both web authors and parser developers''', this is a key change that microformats 2 is adopting. See the next section for details.&lt;br /&gt;
&lt;br /&gt;
=== existing microformats parsing requirements ===&lt;br /&gt;
A non-trivial number of parser and tools developers have been sufficiently frustrated with some general issues with microformats that they've done the significant extra work to support very different and less friendly alternatives (microdata, RDFa). Based on this real-world data (market behavior), it behooves us to address these general issues with microformats for this constituency.&lt;br /&gt;
&lt;br /&gt;
COMMUNITY and TOOLS (that) USE MICROFORMATS &lt;br /&gt;
* parser / parsing&lt;br /&gt;
* structured&lt;br /&gt;
* getting the data out&lt;br /&gt;
* json - 1:1 mapping&lt;br /&gt;
&lt;br /&gt;
[[parsing]] microformats currently requires&lt;br /&gt;
# a list of root class names of each microformat to be parsed&lt;br /&gt;
# a list of properties for each specific microformats, along with knowledge of the type of each property in order to parse their data from potentially different portions of the HTML markup&lt;br /&gt;
# some number of format-specific specific rules (markup/content optimizations)&lt;br /&gt;
&lt;br /&gt;
This has meant that whenever a new microformat is drafted/specificied/adopted, parsers need to updated to handle it correctly, at a minimum to parse them when inside other microformats and avoid errantly implying properties from one to the other (containment, [[mfo]] problem).&lt;br /&gt;
&lt;br /&gt;
== microformats 2 prefixes ==&lt;br /&gt;
=== naming conventions for generic parsing ===&lt;br /&gt;
There is a fairly simple solution to #1 and #2 from the above list, and we can make progress towards minimizing #3.  In short:&lt;br /&gt;
&lt;br /&gt;
'''Proposal: a set of naming conventions for microformat root class names and properties that make it obvious when:'''&lt;br /&gt;
* a class name represents a microformat root class name&lt;br /&gt;
* a class name represents a microformat property name&lt;br /&gt;
* a class name represents a microformat property that needs special parsing (specific type of property).&lt;br /&gt;
&lt;br /&gt;
In particular - derived from the real world examples of existing proven microformats (rather than any abstraction of what a schema should have)&lt;br /&gt;
* '''&amp;quot;h-*&amp;quot; for root class names''', e.g. &amp;quot;h-card&amp;quot;, &amp;quot;h-event&amp;quot;, &amp;quot;h-entry&amp;quot;&lt;br /&gt;
** The 'h-' prefix is based on the existing microformats naming pattern of starting with 'h'.&lt;br /&gt;
* '''&amp;quot;p-*&amp;quot; for simple (text) properties''', e.g. &amp;quot;p-fn&amp;quot;, &amp;quot;p-summary&amp;quot;&lt;br /&gt;
** vocabulary generic parsing, element text in general, treat certain HTML element/attribute combination as special and use those first, e.g. img/alt, abbr/title.&lt;br /&gt;
** The 'p-' prefix is based on the word &amp;quot;property&amp;quot; starting with 'p'.&lt;br /&gt;
* '''&amp;quot;u-*&amp;quot; for URL properties''', e.g. &amp;quot;u-url&amp;quot;, &amp;quot;u-photo&amp;quot;, &amp;quot;u-logo&amp;quot;&lt;br /&gt;
** special parsing required: prefer a/href, img/src, object/data etc. attributes to element contents.&lt;br /&gt;
** The 'u-' prefix is based on URL/URI starting with the letter 'u', which is the type of most of these related properties.&lt;br /&gt;
* '''&amp;quot;dt-*&amp;quot; for datetime properties''', e.g. &amp;quot;dt-start&amp;quot;, &amp;quot;dt-end&amp;quot;, &amp;quot;dt-bday&amp;quot;&lt;br /&gt;
** special parsing required: [[value-class-pattern]], in particular separate date time value parsing for better human readabillity / DRY balance.&lt;br /&gt;
** The 'dt-' prefix is based on &amp;quot;date time&amp;quot; having the initials &amp;quot;dt&amp;quot; and the preponderance of existing date time properties starting with &amp;quot;dt&amp;quot;, e.g. dtstart, dtend, dtstamp, dtreviewed.&lt;br /&gt;
*** Initially I had proposed &amp;quot;dt-*&amp;quot; but Chris Messina suggested reducing it to &amp;quot;d-*&amp;quot; so that all prefixes were a single letter - made sense.&lt;br /&gt;
*** However, I've noticed that Google+ is using &amp;quot;d-*&amp;quot; class names on [https://plus.google.com/109182513536739786206 profile pages], thus we can't really use 'd-' as a microformats 2 property parsing prefix. [[User:Tantek|Tantek]] 03:00, 22 July 2011 (UTC)&lt;br /&gt;
* '''&amp;quot;e-*&amp;quot; for properties''' where the entire contained element hierarchy is the value, e.g. &amp;quot;e-content&amp;quot; (formerly &amp;quot;entry-content&amp;quot;) for [[hAtom]]. The 'e-' prefix can also be mnemonically remembered as &amp;quot;element tree&amp;quot;, &amp;quot;embedded markup&amp;quot;, or &amp;quot;encapsulated markup&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This provides a simpler transition/education story for existing microformats authors/publishers: &lt;br /&gt;
* &amp;quot;h*&amp;quot; to &amp;quot;h-*&amp;quot;, &amp;quot;dt*&amp;quot; to &amp;quot;dt-*&amp;quot;, url-like properties to &amp;quot;u-*&amp;quot;, entire embedded markup to &amp;quot;e-*&amp;quot;, and &amp;quot;p-*&amp;quot; for all &amp;quot;plain text&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
==== prefixes for future consideration ====&lt;br /&gt;
possibly also:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''&amp;quot;s-*&amp;quot; for structured properties''' basically s-* works just like h-* except that no properties (e.g. 'name','url','photo') are implied when there are no properties present. Example uses: s-geo and s-adr. This is being considered as a result of [[microformats-2-parsing#Parsing_Literal_Values|microformats 2 parsing discussions]]. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties. &lt;br /&gt;
** -1. Although I do think the implied-literal parsing behaviour carries some complications and parsed-cruft with more 'structural' formats, introducing a further generic prefix to differentiate one kind of format from another is oesoteric, won't be understood by authors (we're already considering a full reversal rename of 'fn' to 'name' in response to user comprehension), and we've seen historically that mixed prefixes (v and h) also cause muddle. --[[User:BenWard|BenWard]] 06:30, 5 October 2011 (UTC)&lt;br /&gt;
** Furthermore, both of the examples given here have in-the-wild use cases for literal parsing: Geo's existing documented optimisation of &amp;lt;code&amp;gt;1.233;0.453&amp;lt;/code&amp;gt; is applied in two (one valid) manners with the &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element (incorrectly as an expansion of a place name, and as an alternative to degree-format co-ordinates. Coordinates are also displayed in-place alongside map references, markers, and the like.) In the case of &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt;, there's an overlap with existing uses of the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; label property, which is used in cases of unstructured addresses (common in most social network profile systems, also in vcalendar.) Based on previous discussion around unstructured addresses, Twitter uses &amp;lt;code&amp;gt;&amp;amp;lt;* class=&amp;quot;adr&amp;quot;&amp;gt;&amp;amp;lt;* class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; on profiles ([https://twitter.com/intent/user?screen_name=benward&amp;amp;detailed Example].) Having literal parsing of &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; would be neater though, if &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; were to be deprecated. --[[User:BenWard|BenWard]] 06:30, 5 October 2011 (UTC)&lt;br /&gt;
* '''&amp;quot;e-*&amp;quot; for properties''' where the entire contained element hierarchy is the value, e.g. &amp;quot;e-content&amp;quot; (formerly &amp;quot;entry-content&amp;quot;) for [[hAtom]]. (2011-09-21 note: this has now been included in microformats 2, the below discussion is kept for posterity [[User:Tantek|Tantek]] 09:44, 21 September 2011 (UTC))&lt;br /&gt;
** unclear if this is necessary in general. and if so, if this is only for hAtom, that's insufficient to justify putting it in the generic syntax.&lt;br /&gt;
** Would be sufficient to have all &amp;lt;code&amp;gt;p-&amp;lt;/code&amp;gt; properties parse the complete content, including any nested mark-up if present, and then implementations to sanitize/run a &amp;lt;code&amp;gt;strip_tags&amp;lt;/code&amp;gt; style function (as per data input best practice) as appropriate. --[[User:BenWard|BenWard]] 22:05, 19 September 2011 (UTC)&lt;br /&gt;
** Ouch that sounds like passing on complexity downstream for all cases just to handle *one* known use-case so far. Since we'd typically do the opposite (simplify for the 99% case over the 1% case), passing on content including mark-up by default seems like a step backwards. Also, given how many vulnerabilities seem to deal with parsing/filtering, doing that *first* rather than burdening downstream implementations seems like the right choice. I'd rather wait til we get a concrete complaint from a microformats-2 hAtom consumer before worrying about this for hAtom 2.0. Or are there other current real world use cases besides Atom? [[User:Tantek|Tantek]] 22:22, 19 September 2011 (UTC)&lt;br /&gt;
*** In addition to &amp;lt;code&amp;gt;entry-content&amp;lt;/code&amp;gt; in hAtom there's also &amp;lt;code&amp;gt;entry-summary&amp;lt;/code&amp;gt;, plus any large region of text in other microformats, which at the very least can commonly contain additional hyperlinks, images, and phrasing mark-up: &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; in hCal, hReview, hProduct, hListing, &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt; in hCard, &amp;lt;code&amp;gt;ingredient&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;instructions&amp;lt;/code&amp;gt; in hRecipe may link to a store, or wikipedia entry for the ingredient, or include an image to illustrate a step of a recipe, as well as recipe instructions that are expressed as lists. If an author/publisher marks up a property in such a way that it contains further mark-up, that mark-up should be assumed to be part of the value. It's always going to be up to an implementation to decide whether it wishes to translate that HTML mark-up into some other format (e.g. Markdown-esque text annotation when converting to something like &amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;, or some other kind of formatting language on non-HTML platforms, or stripping text altogether. —[[User:BenWard|BenWard]] 01:05, 20 September 2011 (UTC)&lt;br /&gt;
**** While hAtom's &amp;lt;code&amp;gt;entry-content&amp;lt;/code&amp;gt; and possibly hCard's &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt; may be the only existing practical use-cases (&amp;lt;code&amp;gt;entry-summary&amp;lt;/code&amp;gt; and other &amp;quot;large region of text&amp;quot; are potential/prospective use cases), I'm now convinced the hAtom use-case alone is worthy of including the &amp;quot;e-&amp;quot; prefix because it enables a full fidelity replacement for typical Atom use cases. [[User:Tantek|Tantek]] 09:44, 21 September 2011 (UTC)&lt;br /&gt;
* '''&amp;quot;i-*&amp;quot; for ID properties''', e.g. &amp;quot;i-uid&amp;quot; (if this is the only one, then perhaps we just always re-use &amp;quot;uid&amp;quot; or collapse with &amp;quot;u-*&amp;quot; into &amp;quot;u-id&amp;quot;.)&lt;br /&gt;
** parsing is no different than &amp;quot;u-*&amp;quot; parsing, thus no need to introduce for now.&lt;br /&gt;
* '''&amp;quot;n-*&amp;quot; for numbers''', e.g. &amp;quot;n-rating&amp;quot;, &amp;quot;n-geo&amp;quot;, where the numbers may have different human-readable-friendly and decimal/machine values (e.g. with geo lat/long degrees minutes seconds vs decimal).&lt;br /&gt;
** requires definition of how would different parsing work before worthy of consideration.&lt;br /&gt;
* '''&amp;quot;t-*&amp;quot; for time duration''', e.g. &amp;quot;t-duration&amp;quot; in [[hCalendar]], [[hAudio]], [[hRecipe]] (note also Google's hRecipe extensions &amp;quot;preptime&amp;quot;, &amp;quot;cooktime&amp;quot;, &amp;quot;totaltime&amp;quot;)&lt;br /&gt;
** requires definition of how would different parsing work before worthy of consideration.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== reserving other prefixes ====&lt;br /&gt;
We should '''reserve all other single-letter-dash prefixes for future use.''' &lt;br /&gt;
&lt;br /&gt;
In practice we have seen little (if any) use of single-letter-dash prefixing of class names by web developers/designers, and thus in practice we think this will have little if any impact/collisions.  Certainly far fewer than existing generic microformat property class names like &amp;quot;title&amp;quot;, &amp;quot;note&amp;quot;, &amp;quot;summary&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== existing single letter class prefixes ====&lt;br /&gt;
We should document existing usage of single/double letter prefixed names:&lt;br /&gt;
* Google+ (e.g. [https://plus.google.com/109182513536739786206 profile page], others) uses:&lt;br /&gt;
** '''a-'''&lt;br /&gt;
** '''d-'''&lt;br /&gt;
** '''g-''', '''gb*'''&lt;br /&gt;
* Yahoo&lt;br /&gt;
** '''y-'''&lt;br /&gt;
* others? please add alphabetical by company/org name.&lt;br /&gt;
&lt;br /&gt;
== microformats 2 example ==&lt;br /&gt;
Example: taking that simple heading hCard example forward:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;Chris Messina&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As part of microformats 2.0 we would immediately define root class names and property names for all existing microformats and drafts consistent with this naming convention, and require support thereof from all new implementations, as well as strongly encouraging existing implementations to adopt the simplified microformats 2.0 syntax and mechanism. Question: which microformats deserve explicit backward compatibility?&lt;br /&gt;
&lt;br /&gt;
As a community we would continue to use the microformats [[process]] both for researching and determining the need for new microformats, and for naming new microformat property names for maximum re-use and interoperability of a shared vocabulary.&lt;br /&gt;
&lt;br /&gt;
If it turns out we need a new property type in the future, we can use one of the remaining single-letter-prefixes to add it to microformats 2.0. This would require updating of parsers of course, but in practice the number of different types of properties has grown very slowly, and we know from other schema/programming languages that there's always some small limited number of scalar/atomic property types that you need, and using those you can create compound types/objects that represent richer / more complicated types of data.&lt;br /&gt;
&lt;br /&gt;
=== ADVANTAGES ===&lt;br /&gt;
This has numerous advantages:&lt;br /&gt;
* '''better maintainability''' - much more obvious to web authors/designers/publishers which class names are for/from microformats.&lt;br /&gt;
* '''no chance of collision''' - for all practical purposes with existing class names and thus avoiding any need to add more complex CSS style rules to prevent unintended styling effects.&lt;br /&gt;
* '''simpler parsing''' - parsers can now do a simple stream-parse (or in-order DOM tree walk) and parse out '''all''' microformat objects, properties, and values, without having to know anything about any specific microformats.&lt;br /&gt;
* '''separation of syntax and vocabulary''' - by abstracting microformats 2 syntax independent of any vocabulary, it allows and encourages development of shared vocabularies  that can work in alternative syntaxes.&lt;br /&gt;
&lt;br /&gt;
More examples: here is that same heading example with name components:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-fn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with a hyperlink to Chris's URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;p-fn u-url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== COMPATIBILITY ===&lt;br /&gt;
&lt;br /&gt;
microformats 2.0 is backwards compatible in that in permits content authors to markup with both old and new class names for compatibility with old tools.&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Chris Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a microformats 2.0 parser would see the class name &amp;quot;h-card&amp;quot; and imply the one required property from the contents, while a microformats 1.0 parser would find the class name &amp;quot;vcard&amp;quot; and then look for the class name &amp;quot;fn&amp;quot;. no data duplication is required. this is a very important continuing application of the &amp;lt;abbr title=&amp;quot;don't repeat yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; [[principle]].&lt;br /&gt;
&lt;br /&gt;
And the above hyperlinked example with both sets of class names:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;p-fn u-url n fn url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== vendor extensions ==&lt;br /&gt;
(this section was only discussed verbally and not written up during discussions - capturing here as it is topical)&lt;br /&gt;
&lt;br /&gt;
Proprietary extensions to formats have typically been shortlived experimental failures with one big recent exception.&lt;br /&gt;
&lt;br /&gt;
Proprietary or experimental CSS3 property implementations have been very successful.&lt;br /&gt;
&lt;br /&gt;
There has been much use of border radius properties and animations/transitions which use CSS properties with vendor-specific prefixes like:&lt;br /&gt;
&lt;br /&gt;
* -moz-border-radius&lt;br /&gt;
* -webkit-border-radius&lt;br /&gt;
&lt;br /&gt;
etc.&lt;br /&gt;
&lt;br /&gt;
Note that these are merely string '''prefixes''', not bound to any URL, and thus not namespaces in any practical sense of the word.  This is quite an important distinction, as avoiding the need to bind to a URL has made them easier to support and use.&lt;br /&gt;
&lt;br /&gt;
This use of vendor specific CSS properties has in recent years allowed the larger web design/development/implementor communities to experiment and iterate on new CSS features while the features were being developed and standardized.&lt;br /&gt;
&lt;br /&gt;
The benefits have been two-fold:&lt;br /&gt;
* designers have been able to make more attractive sites sooner (at least in some browsers)&lt;br /&gt;
* features have been market / real-world tested before being fully standardized, thus resulting in better features&lt;br /&gt;
&lt;br /&gt;
Implementers have used/introduced &amp;quot;x-&amp;quot; prefixes for IETF MIME/content-types for experimental content-types, MIME parameter extensions, and HTTP header extensions, per RFC 2045 Section 6.3, RFC 3798 section 3.3, and [https://secure.wikimedia.org/wikipedia/en/wiki/List_of_HTTP_header_fields#Common_non-standard_headers Wikipedia: HTTP header fields - non-standard headers] (could use RFC reference instead) respectively, like:&lt;br /&gt;
&lt;br /&gt;
* application/x-latex (per [https://secure.wikimedia.org/wikipedia/en/wiki/Internet_media_type#Type_x Wikipedia Internet media type: Type x])&lt;br /&gt;
* x-spam-score (in email headers)&lt;br /&gt;
* X-Pingback (per [http://en.wikipedia.org/wiki/Pingback Wikipedia:Pingback])&lt;br /&gt;
&lt;br /&gt;
Some standard types started as experimental &amp;quot;x-&amp;quot; types, thus demonstrating this experiment first, standardize later approach has worked for at least some cases:&lt;br /&gt;
&lt;br /&gt;
* image/x-png (standardized as image/png, both per [http://tools.ietf.org/html/rfc2083 RFC2083])&lt;br /&gt;
&lt;br /&gt;
There have been times when specific sites have wanted to extend microformats beyond what the set of properties in the microformat, and currently lack any '''experimental''' way to do so - to try and see if a feature (or even a whole format) is interesting in the real world before bothering to pursue researching and walking it through the microformats process.  Thus:&lt;br /&gt;
&lt;br /&gt;
'''Proposal:'''&lt;br /&gt;
* '*-x-' + '-' + meaningful name for root and property class names&lt;br /&gt;
** where &amp;quot;*&amp;quot; indicates the single-character-prefix as defined above&lt;br /&gt;
** where &amp;quot;x&amp;quot; indicates a literal 'x' for an experimental extension OR&lt;br /&gt;
** OR &amp;quot;x&amp;quot; indicates a vendor prefix (more than one character, e.g. like CSS vendor extension abbreviations, or some stock symbols, avoiding first words/phrases/abbreviations of microformats properties like dt-)&lt;br /&gt;
** e.g.&lt;br /&gt;
** &amp;quot;h-bigco-one-ring&amp;quot; - a hypothetical &amp;quot;bigco&amp;quot; vendor-specific &amp;quot;onering&amp;quot; microformat root class name.&lt;br /&gt;
** &amp;quot;p-goog-preptime&amp;quot; - to represent [http://www.google.com/support/webmasters/bin/answer.py?answer=173379 Google's &amp;quot;preptime&amp;quot; property extension] to [[hRecipe]] (aside: &amp;quot;duration&amp;quot; may be another property type to consider separate from &amp;quot;datetime&amp;quot; as it may be subject to different parsing rules.)&lt;br /&gt;
** &amp;quot;p-x-prep-time&amp;quot; - a possible experimental property name to be added to hRecipe upon consideration/documentation of real-world usage/uptake.&lt;br /&gt;
&lt;br /&gt;
Background - this proposal is a composition of the following (at least somewhat) successful vendor extension syntaxes&lt;br /&gt;
* [http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords CSS 2.1 4.1.2.1 Vendor-specific extensions]&lt;br /&gt;
* IETF MIME/content-type &amp;quot;x-*&amp;quot; extensions per RFC 2045 Section 6.3. [http://en.wikipedia.org/wiki/Internet_media_type]&lt;br /&gt;
* IETF MIME experimental fields (e.g. x-spam-score)&lt;br /&gt;
* HTTP header extensions (e.g. x-pingback)&lt;br /&gt;
* note also [http://www.mnot.net/blog/2009/02/18/x- some critical thoughts from mnot]&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
=== Hungarian prefixing issues ===&lt;br /&gt;
Raised by [[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 proposes using an explicit &amp;lt;code&amp;gt;[a-z]-&amp;lt;/code&amp;gt; prefix on properties, to differentiate them from other uses of the class attribute, and identify them as microformat properties, such that they can be parsed generically.&lt;br /&gt;
&lt;br /&gt;
* The differentiation use case is supported by anecdotal evidence of sites (such as Facebook, Twitter, Yahoo) removing microformats or breaking objects in page edits. The addition of a prefix assists self-documentation of code.&lt;br /&gt;
* The generic parsing use case is supported by Google Rich Snippets, Yahoo Search Monkey, and extensible plugins like Operator and the Firefox microformats parser. Although these extract microformats from the page, they are intermediate systems between the page content and the actual interpretation of the data. They need to parse all objects from a page, and then another developer or application will interpret some of them into something else.&lt;br /&gt;
&lt;br /&gt;
(Note: the theoretical assertion &amp;quot;they need to parse all objects from a page&amp;quot; is not actually backed by *any* existing use of microformats/microdata/RDFa parsing - *none* of those parse &amp;quot;all objects from a page&amp;quot; if you consider every markup element an &amp;quot;object&amp;quot; - rather, one of the strength of microformats (mimicked by the others) is that the publisher is able to markup *just* the data to be extracted, rather than perhaps purely &amp;quot;presentational&amp;quot; content, ads, UI widgets etc. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC) )&lt;br /&gt;
&lt;br /&gt;
The µf2 proposal goes further, though, into a small vocabulary of [http://en.wikipedia.org/wiki/Hungarian_notation Hungarian] prefixes of properties based on data type. This increases the level of understanding required to read microformats, and reduces the benefit of all microformat properties having a consistent identifying prefix.&lt;br /&gt;
&lt;br /&gt;
(Debatable assertion:&amp;quot;increases the level of understanding required to read microformats&amp;quot; - how? In microformats 2.0, authors/developers know that any single-letter-and-hyphen prefixed class name is for microformats 2.0, in contrast to today - developers have consistently given feedback that's hard to tell which generic class names (other than h* names) are microformat related and which are not. As for specific prefixes, &amp;quot;h-*&amp;quot; is special and follows the pattern of existing microformats. p = generic (p)roperty, and the other prefixes have trivial mnemonics as well, d for (d)atetimes etc. (so far, hopefully we can keep that up). -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC) )&lt;br /&gt;
&lt;br /&gt;
Hungarian notation itself is controversial amongst programmers. &lt;br /&gt;
Plenty find it uglifies their code, can be a cause of confusion (especially when very-short prefixes are used, or esoteric types, or where the declared set of types differs from the available types in other programming languages.) Others support its benefits to type identification.&lt;br /&gt;
&lt;br /&gt;
(Programmers are not the priority here, rather, designers/authors/publishers are. We design microformats for them first as they're the common use case, and we should avoid making statements that seem to imply any priority for the aesthetic preferences of programmers. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC))&lt;br /&gt;
&lt;br /&gt;
Critically, however, there is no clear indication that either of the above use cases requires types to be strongly identified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* For identifying µf in pages, a differentiator is required from regular classnames. There is no evidence of further requirement to differentiate between properties beyond their name (and existing criticisms of Hungarian notation suggest it can harm understandability.)&lt;br /&gt;
** There is such evidence, and perhaps thus this would be a good FAQ topic. The derivation is quite simple - it comes directly from minimally affecting existing markup, and maximally using existing semantic information. Example of special purpose parsing, URL-like properties use the value of the 'href' (or equivalent) attribute because that's where that data already is in pages. Similarly with dates and datetimes - special parsing rules for that data type have permitted us to design the [[value-class-pattern]] to take advantage of specially parsing date and time separation. By re-using data *where publishers already put it, including attributes vs inline* we minimize the risk of data drift. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
** Additionally, this special type-specific parsing of microformats properties conveys microformats advantages of markup brevity that other syntaxes lack. E.g. you can convey *multiple* properties and values from a single existing element, e.g. the *very* common real-world pattern &amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;a href=&amp;quot;http://example.com/user&amp;quot;&amp;gt;User Name&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt; is minimally marked up as &amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/user&amp;quot;&amp;gt;User Name&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* For generic parsing, there is no requirement that datatypes be established at extraction time. Data types will instead be applied by the developers of apps and widgets that build on the generic parsers.&lt;br /&gt;
** There are requirements based on experience with actual markup. In order to support the patterns of where content publishers put the data we want to extract, we have determined (based on those publishing patterns) a few different ways (types) of parsing this data. This is all captured in the [[hcard-parsing]] property-specific parsing rules each of which were added one at a time as Brian Suda and myself encountered real world sites wanting to use [[hCard]] but not wanting to have to rewrite their markup (adding one span and some class names was about the limit, moving tags/attributes around was a showstopper in many/most cases), and each of the microformats 2.0 &amp;quot;types&amp;quot; are directly derived from such special purpose data/type parsing across *multiple* microformats. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
* A counter argument may be that special properties in microformats—such as URLs, or images—need to be identified because in microformats it is common to parse an attribute (href, or src) rather than inner text of an element for these properties. However, in the context of extracting and then interpreting HTML in other contexts this is insufficient: For example, though an image only exists as a single property in vcard, in HTML it is both a URL to a resource ''and'' and text string (alt) representing an accessible fallback. A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context. Likewise, an application interpreting a URL may also consider using the original inner text as an inferred label. Both pieces of data are useful, and a generic parser should not discard elemental semantics at the extraction level.&lt;br /&gt;
** It's not just &amp;quot;*common* to parse an attribute rather than inner text of an element for these properties&amp;quot; - it is the vast overwhelming majority - if not all - such cases!&lt;br /&gt;
** One misconception: &amp;quot;image only exists as a single property&amp;quot;. No, there is both 'photo' and 'logo'. The 'url' and 'sound' properties are also of type 'url'. For all of these, when parsing an &amp;quot;object&amp;quot; element, you must use the 'data' attribute first for example. hCalendar has &amp;quot;attachment&amp;quot; as well. Etc.&lt;br /&gt;
** Theoretical assertion: &amp;quot;A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context.&amp;quot; Why? There is no existing nor demonstrated use case for this requirement, even across other formats. While I agree it &amp;quot;might be nice&amp;quot; to develop a new &amp;quot;structured image&amp;quot; type - that's brand new work (deserving of research per the [[process]] etc.), and not a good source of reasoning to reject existing working patterns. I reject blocking microformats 2.0 on an as-yet-to-be-researched-enhancement. This is certainly a case where &amp;quot;better&amp;quot; is an enemy of the good.&lt;br /&gt;
** Theoretical assertion: &amp;quot;a generic parser should not discard elemental semantics at the extraction level&amp;quot; - already does for other syntaxes like both microdata and RDFa - so clearly this is not a reasonable &amp;quot;should not&amp;quot; assertion (and thus unnecessary) for development of a minimally competitive syntax. RDFa kind of cheats by overloading the 'rel' attribute in attempt to solve the name+url case as mentioned above, but that's only two types - and existing real world use of microformats has demonstrated utility of a few more.  -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given this, hungarian prefixes are of no benefit to parsers (and may in fact harm applications down the chain if parsing is prematurely strict.) It would be sufficient then not to concern embedding data types in property names, and instead settle on one single property prefix to differentiate all properties consistently. This would reduce the prefixes to just 3:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; would indicates a root class name. An ‘object in HTML’.&lt;br /&gt;
* &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; would indicates a property within an object.&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; would indicates an experimental extension to an object.&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
The primary benefit of type-specific parsing is *not* for parsers, but rather, publishers (who we still hold in higher priority than parsers).&lt;br /&gt;
&lt;br /&gt;
I will also note that *each* of the type-specific parsing methods in [[hcard-parsing]] was added both conservatively, reluctantly, and only when it became clear that such type-specific publishing patterns existing across *multiple* sites that would otherwise be unable to change their markup to work with microformats (Yes, I'm wishing now that I better documented exactly *which* sites, precisely *when*, but like many startups, early on we didn't exactly know how much to document vs get things done - frankly I think we documented far more than any other comparable such efforts, e.g. we managed to at least capture/grow both an explicit [[process]] and [[principles]] in *far* greater detail than anything remotely comparable either before microformats or since!). The type-specific parsing features are certainly not overdesigned, on the contrary they've *slowly* evolved, adapting to real world data on the web.&lt;br /&gt;
&lt;br /&gt;
While per the [[simplicity]] principle, I would actually *strongly* prefer to only have the three prefixes given above, or actually just *two* (I started with just two for the design of microformats 2.0 actually, just &amp;quot;h-*&amp;quot; and &amp;quot;p-*&amp;quot;), doing so would be a step *backwards* in terms of the adaptability of microformats to existing markup, and that's IMHO an unacceptable barrier, and  a sufficiently high barrier to hurt the adoption/applicability of microformats 2.0. &lt;br /&gt;
&lt;br /&gt;
(Aside: In addition, note that you still need h-x-* for experimental objects, and thus it's *simpler* to simply have *both* h-x-* and p-x-* rather than add x-*. Alternatively x-h-* and x-p-* is no better, in some ways worse, in that object vs. property is a more important distinction for parsers than established vs experimental, especially if/when an experimental property (or object) may be adopted. Also, mild precdent: PNG started with image/x-png, not x-image/png.).&lt;br /&gt;
&lt;br /&gt;
To put it in a positive way, type-specific parsing conveys microformats a publisher-markup-density (and re-use) advantage which neither microdata nor RDFa have, and it would behoove us to *keep* this significant real-world advantage as we evolve microformats.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44757</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44757"/>
		<updated>2011-10-04T09:02:15Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Parsing Literal Values */ Fix inline HTML code sample.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[[microformats-2|Microformats 2]] proposes a new, all encompassing syntax modification of [[microformats-2-prefixes|prefixes]] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
==Parsing Microformats 2.0 Syntax: Extraction vs. Interpretation==&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
&lt;br /&gt;
A microformats 2.0 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
&lt;br /&gt;
==Parsing Literal Values==&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats 2.0 that all microformats be parseable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after extraction and interpretation:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [hcard]&lt;br /&gt;
      , properties: {&lt;br /&gt;
          'fn': ['Ben Ward']&lt;br /&gt;
        , 'given-name': ['Ben']&lt;br /&gt;
        , 'family-name': ['Ward']&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;p-fn&amp;lt;/code&amp;gt;. But, the parser is generic, so it would also treat &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as ‘&amp;lt;code&amp;gt;p-fn&amp;lt;/code&amp;gt;’. As a parser, this is somewhat acceptable, but is unacceptable to the vocabularies, many of which do not define &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; and that even if all various of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;summary&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; be consolidated to &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; (which it is also proposed be renamed to &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;), it cannot with certainly be claimed that every one of these formats provide anything semantically valid in that case. What, for example, is the ‘name’ of a geo? It has none. Likewise, a review described with just a single field would more likely map to the review's ''content'', not its name, and an Atom entry its ''content'', not its title.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
This enables a parser to operate generically without incorrectly applying semantics, and allows applications an interpreters to work with parsed data is a simple and defined way. &lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself.&lt;br /&gt;
&lt;br /&gt;
Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [hcard]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation/Parsing Notes==&lt;br /&gt;
&lt;br /&gt;
Collection of other unresolved parsing issues in a generic model:&lt;br /&gt;
&lt;br /&gt;
* The include pattern references other elements from elsewhere in a document. A generic parser needs to track IDs and fill them in after walking the DOM. (also, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; if adopted.)&lt;br /&gt;
* Will &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; always map to an &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; property name?&lt;br /&gt;
* [[hAtom]] implies &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; from an &amp;lt;code&amp;gt;hcard&amp;lt;/code&amp;gt; in a page that uses an &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element. This requires format knowledge, but a generic parser does not currently track the element type of a property node. Should it?&lt;br /&gt;
* [[hAtom]] defines that the highest level heading within an entry implies &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt;. This particular optimisation might be better off dead.&lt;br /&gt;
* [[hAtom]] defines that permalinks be parsed from &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[xfn]] is entirely built on &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; (although, has various other differents from structural microformats, as do vote-links, so perhaps are excluded from this discussion and will always be handled by dedicated parsers/queries regardless?)&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44756</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44756"/>
		<updated>2011-10-04T08:56:51Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Fix code intendation, noted various other parsing issues that have come to mind during implementation of hparse.js&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[[microformats-2|Microformats 2]] proposes a new, all encompassing syntax modification of [[microformats-2-prefixes|prefixes]] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
==Parsing Microformats 2.0 Syntax: Extraction vs. Interpretation==&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
&lt;br /&gt;
A microformats 2.0 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
&lt;br /&gt;
==Parsing Literal Values==&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats 2.0 that all microformats be parseable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after extraction and interpretation:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [hcard]&lt;br /&gt;
      , properties: {&lt;br /&gt;
          'fn': ['Ben Ward']&lt;br /&gt;
        , 'given-name': ['Ben']&lt;br /&gt;
        , 'family-name': ['Ward']&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;p-fn&amp;lt;/code&amp;gt;. But, the parser is generic, so it would also treat &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as ‘&amp;lt;code&amp;gt;p-fn&amp;lt;/code&amp;gt;’. As a parser, this is somewhat acceptable, but is unacceptable to the vocabularies, many of which do not define &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; and that even if all various of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;summary&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; be consolidated to &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; (which it is also proposed be renamed to &amp;lt;code&amp;gt;name&amp;lt;/code), it cannot with certainly be claimed that every one of these formats provide anything semantically valid in that case. What, for example, is the ‘name’ of a geo? It has none. Likewise, a review described with just a single field would more likely map to the review's ''content'', not its name, and an Atom entry its ''content'', not its title.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
This enables a parser to operate generically without incorrectly applying semantics, and allows applications an interpreters to work with parsed data is a simple and defined way. &lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself.&lt;br /&gt;
&lt;br /&gt;
Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [hcard]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation/Parsing Notes==&lt;br /&gt;
&lt;br /&gt;
Collection of other unresolved parsing issues in a generic model:&lt;br /&gt;
&lt;br /&gt;
* The include pattern references other elements from elsewhere in a document. A generic parser needs to track IDs and fill them in after walking the DOM. (also, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; if adopted.)&lt;br /&gt;
* Will &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; always map to an &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; property name?&lt;br /&gt;
* [[hAtom]] implies &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; from an &amp;lt;code&amp;gt;hcard&amp;lt;/code&amp;gt; in a page that uses an &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element. This requires format knowledge, but a generic parser does not currently track the element type of a property node. Should it?&lt;br /&gt;
* [[hAtom]] defines that the highest level heading within an entry implies &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt;. This particular optimisation might be better off dead.&lt;br /&gt;
* [[hAtom]] defines that permalinks be parsed from &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[xfn]] is entirely built on &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; (although, has various other differents from structural microformats, as do vote-links, so perhaps are excluded from this discussion and will always be handled by dedicated parsers/queries regardless?)&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44755</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44755"/>
		<updated>2011-10-04T08:45:44Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Fixed some links.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[[microformats-2|Microformats 2]] proposes a new, all encompassing syntax modification of [[microformats-2-prefixes|prefixes]] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
==Parsing Microformats 2.0 Syntax: Extraction vs. Interpretation==&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
&lt;br /&gt;
A microformats 2.0 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
&lt;br /&gt;
==Parsing Literal Values==&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats 2.0 that all microformats be parseable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after extraction and interpretation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{ &lt;br /&gt;
    type: [hcard]&lt;br /&gt;
  , properties: {&lt;br /&gt;
      'fn': ['Ben Ward']&lt;br /&gt;
    , 'given-name': ['Ben']&lt;br /&gt;
    , 'family-name': ['Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;p-fn&amp;lt;/code&amp;gt;. But, the parser is generic, so it would also treat &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as ‘&amp;lt;code&amp;gt;p-fn&amp;lt;/code&amp;gt;’. As a parser, this is somewhat acceptable, but is unacceptable to the vocabularies, many of which do not define &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; and that even if all various of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;summary&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; be consolidated to &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; (which it is also proposed be renamed to &amp;lt;code&amp;gt;name&amp;lt;/code), it cannot with certainly be claimed that every one of these formats provide anything semantically valid in that case. What, for example, is the ‘name’ of a geo? It has none. Likewise, a review described with just a single field would more likely map to the review's ''content'', not its name, and an Atom entry its ''content'', not its title.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
This enables a parser to operate generically without incorrectly applying semantics, and allows applications an interpreters to work with parsed data is a simple and defined way. &lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself.&lt;br /&gt;
&lt;br /&gt;
Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{&lt;br /&gt;
    'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
  , 'type': ['adr']&lt;br /&gt;
  , 'properties': {&lt;br /&gt;
        'street-address': '1900 12th Street'&lt;br /&gt;
      , 'etc': 'etc'&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{ &lt;br /&gt;
    type: [hcard]&lt;br /&gt;
  , properties: {}&lt;br /&gt;
  , value: 'Ben Ward'&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44754</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=44754"/>
		<updated>2011-10-04T08:45:11Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Initial brian dump on parsing root elements, not forcing semantics or naming onto vocabularies, handling string literals, and defining a distinction between extraction and interpretation parsing.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[microformats-2|Microformats 2] proposes a new, all encompassing syntax modification of [microformats-2-prefixes|prefixes] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
==Parsing Microformats 2.0 Syntax: Extraction vs. Interpretation==&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
&lt;br /&gt;
A microformats 2.0 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
&lt;br /&gt;
==Parsing Literal Values==&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats 2.0 that all microformats be parseable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after extraction and interpretation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{ &lt;br /&gt;
    type: [hcard]&lt;br /&gt;
  , properties: {&lt;br /&gt;
      'fn': ['Ben Ward']&lt;br /&gt;
    , 'given-name': ['Ben']&lt;br /&gt;
    , 'family-name': ['Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;p-fn&amp;lt;/code&amp;gt;. But, the parser is generic, so it would also treat &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as ‘&amp;lt;code&amp;gt;p-fn&amp;lt;/code&amp;gt;’. As a parser, this is somewhat acceptable, but is unacceptable to the vocabularies, many of which do not define &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; and that even if all various of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;summary&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; be consolidated to &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; (which it is also proposed be renamed to &amp;lt;code&amp;gt;name&amp;lt;/code), it cannot with certainly be claimed that every one of these formats provide anything semantically valid in that case. What, for example, is the ‘name’ of a geo? It has none. Likewise, a review described with just a single field would more likely map to the review's ''content'', not its name, and an Atom entry its ''content'', not its title.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
This enables a parser to operate generically without incorrectly applying semantics, and allows applications an interpreters to work with parsed data is a simple and defined way. &lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself.&lt;br /&gt;
&lt;br /&gt;
Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{&lt;br /&gt;
    'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
  , 'type': ['adr']&lt;br /&gt;
  , 'properties': {&lt;br /&gt;
        'street-address': '1900 12th Street'&lt;br /&gt;
      , 'etc': 'etc'&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{ &lt;br /&gt;
    type: [hcard]&lt;br /&gt;
  , properties: {}&lt;br /&gt;
  , value: 'Ben Ward'&lt;br /&gt;
}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-prefixes&amp;diff=44623</id>
		<title>microformats2-prefixes</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-prefixes&amp;diff=44623"/>
		<updated>2011-09-20T01:07:00Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* prefixes for future consideration */ typo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats 2 prefix conventions&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[microformats 2]] uses a small number of prefixes to distinguish microformats 2 class names from other class names.&lt;br /&gt;
&lt;br /&gt;
== motivating causes ==&lt;br /&gt;
As described on the [[microformats 2]] page.&lt;br /&gt;
&lt;br /&gt;
=== distinguishing properties from other classes ===&lt;br /&gt;
Current microformats properties re-use generic terms like &amp;quot;summary&amp;quot;, &amp;quot;photo&amp;quot;, &amp;quot;updated&amp;quot; both for ease of use and understanding.&lt;br /&gt;
&lt;br /&gt;
However, through longer term experience, we've seen sites that accidentally drop (or break) their microformats support (e.g. Upcoming.org, Facebook) because web authors sometimes rewrite all their class names, and either are unaware that microformats were in the page, or couldn't easily distinguish microformats property class names from other site-specific class names.&lt;br /&gt;
&lt;br /&gt;
This issue has been reported by a number of web authors:&lt;br /&gt;
* [http://html5doctor.com/microformats/#comment-10241 Wim's comment on HTML5Doctor] &amp;quot;Authors use classes like 'url' or 'region' all the time ... All sorts of markup might look like a microformat.&amp;quot;&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
There has also been an anecdotal report of a design firm who was not (yet) familiar with microformats seeing the &amp;quot;extra&amp;quot; classes that &amp;quot;that don't seem to be used&amp;quot; (without corresponding CSS rules) and asking if they &amp;quot;can remove them&amp;quot;. By making microformats class names different from generic words, authors unfamiliar with microformats may at least notice such distinction and infer special functionality accordingly.&lt;br /&gt;
&lt;br /&gt;
Thus microformats 2 uses ''prefixes'' for property class names, e.g.:&lt;br /&gt;
* '''p-summary''' instead of ''summary''&lt;br /&gt;
* '''u-photo''' instead of ''photo'' &lt;br /&gt;
* '''dt-updated''' instead of ''updated''&lt;br /&gt;
&lt;br /&gt;
Such prefixing of all microformats class names was first suggested by Scott Isaacs of Microsoft to Tantek on a visit to Microsoft sometime in 2006/2007, but specifically aimed at making microformats easier to parse. At the time the suggestion was rejected since microformats were focused on web authors rather than parsers.&lt;br /&gt;
&lt;br /&gt;
However, since experience has shown that distinguishing property class names is an issue for '''both web authors and parser developers''', this is a key change that microformats 2 is adopting. See the next section for details.&lt;br /&gt;
&lt;br /&gt;
=== existing microformats parsing requirements ===&lt;br /&gt;
A non-trivial number of parser and tools developers have been sufficiently frustrated with some general issues with microformats that they've done the significant extra work to support very different and less friendly alternatives (microdata, RDFa). Based on this real-world data (market behavior), it behooves us to address these general issues with microformats for this constituency.&lt;br /&gt;
&lt;br /&gt;
COMMUNITY and TOOLS (that) USE MICROFORMATS &lt;br /&gt;
* parser / parsing&lt;br /&gt;
* structured&lt;br /&gt;
* getting the data out&lt;br /&gt;
* json - 1:1 mapping&lt;br /&gt;
&lt;br /&gt;
[[parsing]] microformats currently requires&lt;br /&gt;
# a list of root class names of each microformat to be parsed&lt;br /&gt;
# a list of properties for each specific microformats, along with knowledge of the type of each property in order to parse their data from potentially different portions of the HTML markup&lt;br /&gt;
# some number of format-specific specific rules (markup/content optimizations)&lt;br /&gt;
&lt;br /&gt;
This has meant that whenever a new microformat is drafted/specificied/adopted, parsers need to updated to handle it correctly, at a minimum to parse them when inside other microformats and avoid errantly implying properties from one to the other (containment, [[mfo]] problem).&lt;br /&gt;
&lt;br /&gt;
== microformats 2 prefixes ==&lt;br /&gt;
=== naming conventions for generic parsing ===&lt;br /&gt;
There is a fairly simple solution to #1 and #2 from the above list, and we can make progress towards minimizing #3.  In short:&lt;br /&gt;
&lt;br /&gt;
'''Proposal: a set of naming conventions for microformat root class names and properties that make it obvious when:'''&lt;br /&gt;
* a class name represents a microformat root class name&lt;br /&gt;
* a class name represents a microformat property name&lt;br /&gt;
* a class name represents a microformat property that needs special parsing (specific type of property).&lt;br /&gt;
&lt;br /&gt;
In particular - derived from the real world examples of existing proven microformats (rather than any abstraction of what a schema should have)&lt;br /&gt;
* '''&amp;quot;h-*&amp;quot; for root class names''', e.g. &amp;quot;h-card&amp;quot;, &amp;quot;h-event&amp;quot;, &amp;quot;h-entry&amp;quot;&lt;br /&gt;
** The 'h-' prefix is based on the existing microformats naming pattern of starting with 'h'.&lt;br /&gt;
* '''&amp;quot;p-*&amp;quot; for simple (text) properties''', e.g. &amp;quot;p-fn&amp;quot;, &amp;quot;p-summary&amp;quot;&lt;br /&gt;
** vocabulary generic parsing, element text in general, treat certain HTML element/attribute combination as special and use those first, e.g. img/alt, abbr/title.&lt;br /&gt;
** The 'p-' prefix is based on the word &amp;quot;property&amp;quot; starting with 'p'.&lt;br /&gt;
* '''&amp;quot;u-*&amp;quot; for URL properties''', e.g. &amp;quot;u-url&amp;quot;, &amp;quot;u-photo&amp;quot;, &amp;quot;u-logo&amp;quot;&lt;br /&gt;
** special parsing required: prefer a/href, img/src, object/data etc. attributes to element contents.&lt;br /&gt;
** The 'u-' prefix is based on URL/URI starting with the letter 'u', which is the type of most of these related properties.&lt;br /&gt;
* '''&amp;quot;dt-*&amp;quot; for datetime properties''', e.g. &amp;quot;dt-start&amp;quot;, &amp;quot;dt-end&amp;quot;, &amp;quot;dt-bday&amp;quot;&lt;br /&gt;
** special parsing required: [[value-class-pattern]], in particular separate date time value parsing for better human readabillity / DRY balance.&lt;br /&gt;
** The 'dt-' prefix is based on &amp;quot;date time&amp;quot; having the initials &amp;quot;dt&amp;quot; and the preponderance of existing date time properties starting with &amp;quot;dt&amp;quot;, e.g. dtstart, dtend, dtstamp, dtreviewed.&lt;br /&gt;
*** Initially I had proposed &amp;quot;dt-*&amp;quot; but Chris Messina suggested reducing it to &amp;quot;d-*&amp;quot; so that all prefixes were a single letter - made sense.&lt;br /&gt;
*** However, I've noticed that Google+ is using &amp;quot;d-*&amp;quot; class names on [https://plus.google.com/109182513536739786206 profile pages], thus we can't really use 'd-' as a microformats 2 property parsing prefix. [[User:Tantek|Tantek]] 03:00, 22 July 2011 (UTC)&lt;br /&gt;
*** Frankly I also think this provides a simpler transition/education story for existing microformats authors/publishers: &amp;quot;h*&amp;quot; to &amp;quot;h-*&amp;quot;, &amp;quot;dt*&amp;quot; to &amp;quot;dt-*&amp;quot;, url type properties to &amp;quot;u-*&amp;quot;, and &amp;quot;p-*&amp;quot; for all others.&lt;br /&gt;
&lt;br /&gt;
See [[microformats-2-prefixes]] for further thoughts and discussions on these and other class prefixes.&lt;br /&gt;
&lt;br /&gt;
==== prefixes for future consideration ====&lt;br /&gt;
possibly also:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''&amp;quot;e-*&amp;quot; for properties''' where the entire contained element hierarchy is the value, e.g. &amp;quot;e-content&amp;quot; (formerly &amp;quot;entry-content&amp;quot;) for [[hAtom]].&lt;br /&gt;
** unclear if this is necessary in general. and if so, if this is only for hAtom, that's insufficient to justify putting it in the generic syntax.&lt;br /&gt;
** Would be sufficient to have all &amp;lt;code&amp;gt;p-&amp;lt;/code&amp;gt; properties parse the complete content, including any nested mark-up if present, and then implementations to sanitize/run a &amp;lt;code&amp;gt;strip_tags&amp;lt;/code&amp;gt; style function (as per data input best practice) as appropriate. --[[User:BenWard|BenWard]] 22:05, 19 September 2011 (UTC)&lt;br /&gt;
** Ouch that sounds like passing on complexity downstream for all cases just to handle *one* known use-case so far. Since we'd typically do the opposite (simplify for the 99% case over the 1% case), passing on content including mark-up by default seems like a step backwards. Also, given how many vulnerabilities seem to deal with parsing/filtering, doing that *first* rather than burdening downstream implementations seems like the right choice. I'd rather wait til we get a concrete complaint from a microformats-2 hAtom consumer before worrying about this for hAtom 2.0. Or are there other current real world use cases besides Atom? [[User:Tantek|Tantek]] 22:22, 19 September 2011 (UTC)&lt;br /&gt;
*** In addition to &amp;lt;code&amp;gt;entry-content&amp;lt;/code&amp;gt; in hAtom there's also &amp;lt;code&amp;gt;entry-summary&amp;lt;/code&amp;gt;, plus any large region of text in other microformats, which at the very least can commonly contain additional hyperlinks, images, and phrasing mark-up: &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; in hCal, hReview, hProduct, hListing, &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt; in hCard, &amp;lt;code&amp;gt;ingredient&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;instructions&amp;lt;/code&amp;gt; in hRecipe may link to a store, or wikipedia entry for the ingredient, or include an image to illustrate a step of a recipe, as well as recipe instructions that are expressed as lists. If an author/publisher marks up a property in such a way that it contains further mark-up, that mark-up should be assumed to be part of the value. It's always going to be up to an implementation to decide whether it wishes to translate that HTML mark-up into some other format (e.g. Markdown-esque text annotation when converting to something like &amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;, or some other kind of formatting language on non-HTML platforms, or stripping text altogether. —[[User:BenWard|BenWard]] 01:05, 20 September 2011 (UTC)&lt;br /&gt;
* '''&amp;quot;i-*&amp;quot; for ID properties''', e.g. &amp;quot;i-uid&amp;quot; (if this is the only one, then perhaps we just always re-use &amp;quot;uid&amp;quot; or collapse with &amp;quot;u-*&amp;quot; into &amp;quot;u-id&amp;quot;.)&lt;br /&gt;
** parsing is no different than &amp;quot;u-*&amp;quot; parsing, thus no need to introduce for now.&lt;br /&gt;
* '''&amp;quot;n-*&amp;quot; for numbers''', e.g. &amp;quot;n-rating&amp;quot;, &amp;quot;n-geo&amp;quot;, where the numbers may have different human-readable-friendly and decimal/machine values (e.g. with geo lat/long degrees minutes seconds vs decimal).&lt;br /&gt;
** requires definition of how would different parsing work before worthy of consideration.&lt;br /&gt;
* '''&amp;quot;t-*&amp;quot; for time duration''', e.g. &amp;quot;t-duration&amp;quot; in [[hCalendar]], [[hAudio]], [[hRecipe]] (note also Google's hRecipe extensions &amp;quot;preptime&amp;quot;, &amp;quot;cooktime&amp;quot;, &amp;quot;totaltime&amp;quot;)&lt;br /&gt;
** requires definition of how would different parsing work before worthy of consideration.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== reserving other prefixes ====&lt;br /&gt;
We should '''reserve all other single-letter-dash prefixes for future use.''' &lt;br /&gt;
&lt;br /&gt;
In practice we have seen little (if any) use of single-letter-dash prefixing of class names by web developers/designers, and thus in practice we think this will have little if any impact/collisions.  Certainly far fewer than existing generic microformat property class names like &amp;quot;title&amp;quot;, &amp;quot;note&amp;quot;, &amp;quot;summary&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== existing single letter class prefixes ====&lt;br /&gt;
We should document existing usage of single/double letter prefixed names:&lt;br /&gt;
* Google+ (e.g. [https://plus.google.com/109182513536739786206 profile page], others) uses:&lt;br /&gt;
** '''a-'''&lt;br /&gt;
** '''d-'''&lt;br /&gt;
** '''g-''', '''gb*'''&lt;br /&gt;
* Yahoo&lt;br /&gt;
** '''y-'''&lt;br /&gt;
* others? please add alphabetical by company/org name.&lt;br /&gt;
&lt;br /&gt;
== microformats 2 example ==&lt;br /&gt;
Example: taking that simple heading hCard example forward:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;Chris Messina&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As part of microformats 2.0 we would immediately define root class names and property names for all existing microformats and drafts consistent with this naming convention, and require support thereof from all new implementations, as well as strongly encouraging existing implementations to adopt the simplified microformats 2.0 syntax and mechanism. Question: which microformats deserve explicit backward compatibility?&lt;br /&gt;
&lt;br /&gt;
As a community we would continue to use the microformats [[process]] both for researching and determining the need for new microformats, and for naming new microformat property names for maximum re-use and interoperability of a shared vocabulary.&lt;br /&gt;
&lt;br /&gt;
If it turns out we need a new property type in the future, we can use one of the remaining single-letter-prefixes to add it to microformats 2.0. This would require updating of parsers of course, but in practice the number of different types of properties has grown very slowly, and we know from other schema/programming languages that there's always some small limited number of scalar/atomic property types that you need, and using those you can create compound types/objects that represent richer / more complicated types of data.&lt;br /&gt;
&lt;br /&gt;
=== ADVANTAGES ===&lt;br /&gt;
This has numerous advantages:&lt;br /&gt;
* '''better maintainability''' - much more obvious to web authors/designers/publishers which class names are for/from microformats.&lt;br /&gt;
* '''no chance of collision''' - for all practical purposes with existing class names and thus avoiding any need to add more complex CSS style rules to prevent unintended styling effects.&lt;br /&gt;
* '''simpler parsing''' - parsers can now do a simple stream-parse (or in-order DOM tree walk) and parse out '''all''' microformat objects, properties, and values, without having to know anything about any specific microformats.&lt;br /&gt;
* '''separation of syntax and vocabulary''' - by abstracting microformats 2 syntax independent of any vocabulary, it allows and encourages development of shared vocabularies  that can work in alternative syntaxes.&lt;br /&gt;
&lt;br /&gt;
More examples: here is that same heading example with name components:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-fn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with a hyperlink to Chris's URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;p-fn u-url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== COMPATIBILITY ===&lt;br /&gt;
&lt;br /&gt;
microformats 2.0 is backwards compatible in that in permits content authors to markup with both old and new class names for compatibility with old tools.&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Chris Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a microformats 2.0 parser would see the class name &amp;quot;h-card&amp;quot; and imply the one required property from the contents, while a microformats 1.0 parser would find the class name &amp;quot;vcard&amp;quot; and then look for the class name &amp;quot;fn&amp;quot;. no data duplication is required. this is a very important continuing application of the &amp;lt;abbr title=&amp;quot;don't repeat yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; [[principle]].&lt;br /&gt;
&lt;br /&gt;
And the above hyperlinked example with both sets of class names:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;p-fn u-url n fn url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== vendor extensions ==&lt;br /&gt;
(this section was only discussed verbally and not written up during discussions - capturing here as it is topical)&lt;br /&gt;
&lt;br /&gt;
Proprietary extensions to formats have typically been shortlived experimental failures with one big recent exception.&lt;br /&gt;
&lt;br /&gt;
Proprietary or experimental CSS3 property implementations have been very successful.&lt;br /&gt;
&lt;br /&gt;
There has been much use of border radius properties and animations/transitions which use CSS properties with vendor-specific prefixes like:&lt;br /&gt;
&lt;br /&gt;
* -moz-border-radius&lt;br /&gt;
* -webkit-border-radius&lt;br /&gt;
&lt;br /&gt;
etc.&lt;br /&gt;
&lt;br /&gt;
Note that these are merely string '''prefixes''', not bound to any URL, and thus not namespaces in any practical sense of the word.  This is quite an important distinction, as avoiding the need to bind to a URL has made them easier to support and use.&lt;br /&gt;
&lt;br /&gt;
This use of vendor specific CSS properties has in recent years allowed the larger web design/development/implementor communities to experiment and iterate on new CSS features while the features were being developed and standardized.&lt;br /&gt;
&lt;br /&gt;
The benefits have been two-fold:&lt;br /&gt;
* designers have been able to make more attractive sites sooner (at least in some browsers)&lt;br /&gt;
* features have been market / real-world tested before being fully standardized, thus resulting in better features&lt;br /&gt;
&lt;br /&gt;
Implementers have used/introduced &amp;quot;x-&amp;quot; prefixes for IETF MIME/content-types for experimental content-types, MIME parameter extensions, and HTTP header extensions, per RFC 2045 Section 6.3, RFC 3798 section 3.3, and [https://secure.wikimedia.org/wikipedia/en/wiki/List_of_HTTP_header_fields#Common_non-standard_headers Wikipedia: HTTP header fields - non-standard headers] (could use RFC reference instead) respectively, like:&lt;br /&gt;
&lt;br /&gt;
* application/x-latex (per [https://secure.wikimedia.org/wikipedia/en/wiki/Internet_media_type#Type_x Wikipedia Internet media type: Type x])&lt;br /&gt;
* x-spam-score (in email headers)&lt;br /&gt;
* X-Pingback (per [http://en.wikipedia.org/wiki/Pingback Wikipedia:Pingback])&lt;br /&gt;
&lt;br /&gt;
Some standard types started as experimental &amp;quot;x-&amp;quot; types, thus demonstrating this experiment first, standardize later approach has worked for at least some cases:&lt;br /&gt;
&lt;br /&gt;
* image/x-png (standardized as image/png, both per [http://tools.ietf.org/html/rfc2083 RFC2083])&lt;br /&gt;
&lt;br /&gt;
There have been times when specific sites have wanted to extend microformats beyond what the set of properties in the microformat, and currently lack any '''experimental''' way to do so - to try and see if a feature (or even a whole format) is interesting in the real world before bothering to pursue researching and walking it through the microformats process.  Thus:&lt;br /&gt;
&lt;br /&gt;
'''Proposal:'''&lt;br /&gt;
* '*-x-' + '-' + meaningful name for root and property class names&lt;br /&gt;
** where &amp;quot;*&amp;quot; indicates the single-character-prefix as defined above&lt;br /&gt;
** where &amp;quot;x&amp;quot; indicates a literal 'x' for an experimental extension OR&lt;br /&gt;
** OR &amp;quot;x&amp;quot; indicates a vendor prefix (more than one character, e.g. like CSS vendor extension abbreviations, or some stock symbols, avoiding first words/phrases/abbreviations of microformats properties like dt-)&lt;br /&gt;
** e.g.&lt;br /&gt;
** &amp;quot;h-bigco-one-ring&amp;quot; - a hypothetical &amp;quot;bigco&amp;quot; vendor-specific &amp;quot;onering&amp;quot; microformat root class name.&lt;br /&gt;
** &amp;quot;p-goog-preptime&amp;quot; - to represent [http://www.google.com/support/webmasters/bin/answer.py?answer=173379 Google's &amp;quot;preptime&amp;quot; property extension] to [[hRecipe]] (aside: &amp;quot;duration&amp;quot; may be another property type to consider separate from &amp;quot;datetime&amp;quot; as it may be subject to different parsing rules.)&lt;br /&gt;
** &amp;quot;p-x-prep-time&amp;quot; - a possible experimental property name to be added to hRecipe upon consideration/documentation of real-world usage/uptake.&lt;br /&gt;
&lt;br /&gt;
Background - this proposal is a composition of the following (at least somewhat) successful vendor extension syntaxes&lt;br /&gt;
* [http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords CSS 2.1 4.1.2.1 Vendor-specific extensions]&lt;br /&gt;
* IETF MIME/content-type &amp;quot;x-*&amp;quot; extensions per RFC 2045 Section 6.3. [http://en.wikipedia.org/wiki/Internet_media_type]&lt;br /&gt;
* IETF MIME experimental fields (e.g. x-spam-score)&lt;br /&gt;
* HTTP header extensions (e.g. x-pingback)&lt;br /&gt;
* note also [http://www.mnot.net/blog/2009/02/18/x- some critical thoughts from mnot]&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
=== Hungarian prefixing issues ===&lt;br /&gt;
Raised by [[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 proposes using an explicit &amp;lt;code&amp;gt;[a-z]-&amp;lt;/code&amp;gt; prefix on properties, to differentiate them from other uses of the class attribute, and identify them as microformat properties, such that they can be parsed generically.&lt;br /&gt;
&lt;br /&gt;
* The differentiation use case is supported by anecdotal evidence of sites (such as Facebook, Twitter, Yahoo) removing microformats or breaking objects in page edits. The addition of a prefix assists self-documentation of code.&lt;br /&gt;
* The generic parsing use case is supported by Google Rich Snippets, Yahoo Search Monkey, and extensible plugins like Operator and the Firefox microformats parser. Although these extract microformats from the page, they are intermediate systems between the page content and the actual interpretation of the data. They need to parse all objects from a page, and then another developer or application will interpret some of them into something else.&lt;br /&gt;
&lt;br /&gt;
(Note: the theoretical assertion &amp;quot;they need to parse all objects from a page&amp;quot; is not actually backed by *any* existing use of microformats/microdata/RDFa parsing - *none* of those parse &amp;quot;all objects from a page&amp;quot; if you consider every markup element an &amp;quot;object&amp;quot; - rather, one of the strength of microformats (mimicked by the others) is that the publisher is able to markup *just* the data to be extracted, rather than perhaps purely &amp;quot;presentational&amp;quot; content, ads, UI widgets etc. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC) )&lt;br /&gt;
&lt;br /&gt;
The µf2 proposal goes further, though, into a small vocabulary of [http://en.wikipedia.org/wiki/Hungarian_notation Hungarian] prefixes of properties based on data type. This increases the level of understanding required to read microformats, and reduces the benefit of all microformat properties having a consistent identifying prefix.&lt;br /&gt;
&lt;br /&gt;
(Debatable assertion:&amp;quot;increases the level of understanding required to read microformats&amp;quot; - how? In microformats 2.0, authors/developers know that any single-letter-and-hyphen prefixed class name is for microformats 2.0, in contrast to today - developers have consistently given feedback that's hard to tell which generic class names (other than h* names) are microformat related and which are not. As for specific prefixes, &amp;quot;h-*&amp;quot; is special and follows the pattern of existing microformats. p = generic (p)roperty, and the other prefixes have trivial mnemonics as well, d for (d)atetimes etc. (so far, hopefully we can keep that up). -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC) )&lt;br /&gt;
&lt;br /&gt;
Hungarian notation itself is controversial amongst programmers. &lt;br /&gt;
Plenty find it uglifies their code, can be a cause of confusion (especially when very-short prefixes are used, or esoteric types, or where the declared set of types differs from the available types in other programming languages.) Others support its benefits to type identification.&lt;br /&gt;
&lt;br /&gt;
(Programmers are not the priority here, rather, designers/authors/publishers are. We design microformats for them first as they're the common use case, and we should avoid making statements that seem to imply any priority for the aesthetic preferences of programmers. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC))&lt;br /&gt;
&lt;br /&gt;
Critically, however, there is no clear indication that either of the above use cases requires types to be strongly identified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* For identifying µf in pages, a differentiator is required from regular classnames. There is no evidence of further requirement to differentiate between properties beyond their name (and existing criticisms of Hungarian notation suggest it can harm understandability.)&lt;br /&gt;
** There is such evidence, and perhaps thus this would be a good FAQ topic. The derivation is quite simple - it comes directly from minimally affecting existing markup, and maximally using existing semantic information. Example of special purpose parsing, URL-like properties use the value of the 'href' (or equivalent) attribute because that's where that data already is in pages. Similarly with dates and datetimes - special parsing rules for that data type have permitted us to design the [[value-class-pattern]] to take advantage of specially parsing date and time separation. By re-using data *where publishers already put it, including attributes vs inline* we minimize the risk of data drift. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
** Additionally, this special type-specific parsing of microformats properties conveys microformats advantages of markup brevity that other syntaxes lack. E.g. you can convey *multiple* properties and values from a single existing element, e.g. the *very* common real-world pattern &amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;a href=&amp;quot;http://example.com/user&amp;quot;&amp;gt;User Name&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt; is minimally marked up as &amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/user&amp;quot;&amp;gt;User Name&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* For generic parsing, there is no requirement that datatypes be established at extraction time. Data types will instead be applied by the developers of apps and widgets that build on the generic parsers.&lt;br /&gt;
** There are requirements based on experience with actual markup. In order to support the patterns of where content publishers put the data we want to extract, we have determined (based on those publishing patterns) a few different ways (types) of parsing this data. This is all captured in the [[hcard-parsing]] property-specific parsing rules each of which were added one at a time as Brian Suda and myself encountered real world sites wanting to use [[hCard]] but not wanting to have to rewrite their markup (adding one span and some class names was about the limit, moving tags/attributes around was a showstopper in many/most cases), and each of the microformats 2.0 &amp;quot;types&amp;quot; are directly derived from such special purpose data/type parsing across *multiple* microformats. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
* A counter argument may be that special properties in microformats—such as URLs, or images—need to be identified because in microformats it is common to parse an attribute (href, or src) rather than inner text of an element for these properties. However, in the context of extracting and then interpreting HTML in other contexts this is insufficient: For example, though an image only exists as a single property in vcard, in HTML it is both a URL to a resource ''and'' and text string (alt) representing an accessible fallback. A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context. Likewise, an application interpreting a URL may also consider using the original inner text as an inferred label. Both pieces of data are useful, and a generic parser should not discard elemental semantics at the extraction level.&lt;br /&gt;
** It's not just &amp;quot;*common* to parse an attribute rather than inner text of an element for these properties&amp;quot; - it is the vast overwhelming majority - if not all - such cases!&lt;br /&gt;
** One misconception: &amp;quot;image only exists as a single property&amp;quot;. No, there is both 'photo' and 'logo'. The 'url' and 'sound' properties are also of type 'url'. For all of these, when parsing an &amp;quot;object&amp;quot; element, you must use the 'data' attribute first for example. hCalendar has &amp;quot;attachment&amp;quot; as well. Etc.&lt;br /&gt;
** Theoretical assertion: &amp;quot;A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context.&amp;quot; Why? There is no existing nor demonstrated use case for this requirement, even across other formats. While I agree it &amp;quot;might be nice&amp;quot; to develop a new &amp;quot;structured image&amp;quot; type - that's brand new work (deserving of research per the [[process]] etc.), and not a good source of reasoning to reject existing working patterns. I reject blocking microformats 2.0 on an as-yet-to-be-researched-enhancement. This is certainly a case where &amp;quot;better&amp;quot; is an enemy of the good.&lt;br /&gt;
** Theoretical assertion: &amp;quot;a generic parser should not discard elemental semantics at the extraction level&amp;quot; - already does for other syntaxes like both microdata and RDFa - so clearly this is not a reasonable &amp;quot;should not&amp;quot; assertion (and thus unnecessary) for development of a minimally competitive syntax. RDFa kind of cheats by overloading the 'rel' attribute in attempt to solve the name+url case as mentioned above, but that's only two types - and existing real world use of microformats has demonstrated utility of a few more.  -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given this, hungarian prefixes are of no benefit to parsers (and may in fact harm applications down the chain if parsing is prematurely strict.) It would be sufficient then not to concern embedding data types in property names, and instead settle on one single property prefix to differentiate all properties consistently. This would reduce the prefixes to just 3:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; would indicates a root class name. An ‘object in HTML’.&lt;br /&gt;
* &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; would indicates a property within an object.&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; would indicates an experimental extension to an object.&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
The primary benefit of type-specific parsing is *not* for parsers, but rather, publishers (who we still hold in higher priority than parsers).&lt;br /&gt;
&lt;br /&gt;
I will also note that *each* of the type-specific parsing methods in [[hcard-parsing]] was added both conservatively, reluctantly, and only when it became clear that such type-specific publishing patterns existing across *multiple* sites that would otherwise be unable to change their markup to work with microformats (Yes, I'm wishing now that I better documented exactly *which* sites, precisely *when*, but like many startups, early on we didn't exactly know how much to document vs get things done - frankly I think we documented far more than any other comparable such efforts, e.g. we managed to at least capture/grow both an explicit [[process]] and [[principles]] in *far* greater detail than anything remotely comparable either before microformats or since!). The type-specific parsing features are certainly not overdesigned, on the contrary they've *slowly* evolved, adapting to real world data on the web.&lt;br /&gt;
&lt;br /&gt;
While per the [[simplicity]] principle, I would actually *strongly* prefer to only have the three prefixes given above, or actually just *two* (I started with just two for the design of microformats 2.0 actually, just &amp;quot;h-*&amp;quot; and &amp;quot;p-*&amp;quot;), doing so would be a step *backwards* in terms of the adaptability of microformats to existing markup, and that's IMHO an unacceptable barrier, and  a sufficiently high barrier to hurt the adoption/applicability of microformats 2.0. &lt;br /&gt;
&lt;br /&gt;
(Aside: In addition, note that you still need h-x-* for experimental objects, and thus it's *simpler* to simply have *both* h-x-* and p-x-* rather than add x-*. Alternatively x-h-* and x-p-* is no better, in some ways worse, in that object vs. property is a more important distinction for parsers than established vs experimental, especially if/when an experimental property (or object) may be adopted. Also, mild precdent: PNG started with image/x-png, not x-image/png.).&lt;br /&gt;
&lt;br /&gt;
To put it in a positive way, type-specific parsing conveys microformats a publisher-markup-density (and re-use) advantage which neither microdata nor RDFa have, and it would behoove us to *keep* this significant real-world advantage as we evolve microformats.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-prefixes&amp;diff=44622</id>
		<title>microformats2-prefixes</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-prefixes&amp;diff=44622"/>
		<updated>2011-09-20T01:05:16Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* prefixes for future consideration */ List of properties and examples in various microformats that can legitimately contain more mark-up.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats 2 prefix conventions&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[microformats 2]] uses a small number of prefixes to distinguish microformats 2 class names from other class names.&lt;br /&gt;
&lt;br /&gt;
== motivating causes ==&lt;br /&gt;
As described on the [[microformats 2]] page.&lt;br /&gt;
&lt;br /&gt;
=== distinguishing properties from other classes ===&lt;br /&gt;
Current microformats properties re-use generic terms like &amp;quot;summary&amp;quot;, &amp;quot;photo&amp;quot;, &amp;quot;updated&amp;quot; both for ease of use and understanding.&lt;br /&gt;
&lt;br /&gt;
However, through longer term experience, we've seen sites that accidentally drop (or break) their microformats support (e.g. Upcoming.org, Facebook) because web authors sometimes rewrite all their class names, and either are unaware that microformats were in the page, or couldn't easily distinguish microformats property class names from other site-specific class names.&lt;br /&gt;
&lt;br /&gt;
This issue has been reported by a number of web authors:&lt;br /&gt;
* [http://html5doctor.com/microformats/#comment-10241 Wim's comment on HTML5Doctor] &amp;quot;Authors use classes like 'url' or 'region' all the time ... All sorts of markup might look like a microformat.&amp;quot;&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
There has also been an anecdotal report of a design firm who was not (yet) familiar with microformats seeing the &amp;quot;extra&amp;quot; classes that &amp;quot;that don't seem to be used&amp;quot; (without corresponding CSS rules) and asking if they &amp;quot;can remove them&amp;quot;. By making microformats class names different from generic words, authors unfamiliar with microformats may at least notice such distinction and infer special functionality accordingly.&lt;br /&gt;
&lt;br /&gt;
Thus microformats 2 uses ''prefixes'' for property class names, e.g.:&lt;br /&gt;
* '''p-summary''' instead of ''summary''&lt;br /&gt;
* '''u-photo''' instead of ''photo'' &lt;br /&gt;
* '''dt-updated''' instead of ''updated''&lt;br /&gt;
&lt;br /&gt;
Such prefixing of all microformats class names was first suggested by Scott Isaacs of Microsoft to Tantek on a visit to Microsoft sometime in 2006/2007, but specifically aimed at making microformats easier to parse. At the time the suggestion was rejected since microformats were focused on web authors rather than parsers.&lt;br /&gt;
&lt;br /&gt;
However, since experience has shown that distinguishing property class names is an issue for '''both web authors and parser developers''', this is a key change that microformats 2 is adopting. See the next section for details.&lt;br /&gt;
&lt;br /&gt;
=== existing microformats parsing requirements ===&lt;br /&gt;
A non-trivial number of parser and tools developers have been sufficiently frustrated with some general issues with microformats that they've done the significant extra work to support very different and less friendly alternatives (microdata, RDFa). Based on this real-world data (market behavior), it behooves us to address these general issues with microformats for this constituency.&lt;br /&gt;
&lt;br /&gt;
COMMUNITY and TOOLS (that) USE MICROFORMATS &lt;br /&gt;
* parser / parsing&lt;br /&gt;
* structured&lt;br /&gt;
* getting the data out&lt;br /&gt;
* json - 1:1 mapping&lt;br /&gt;
&lt;br /&gt;
[[parsing]] microformats currently requires&lt;br /&gt;
# a list of root class names of each microformat to be parsed&lt;br /&gt;
# a list of properties for each specific microformats, along with knowledge of the type of each property in order to parse their data from potentially different portions of the HTML markup&lt;br /&gt;
# some number of format-specific specific rules (markup/content optimizations)&lt;br /&gt;
&lt;br /&gt;
This has meant that whenever a new microformat is drafted/specificied/adopted, parsers need to updated to handle it correctly, at a minimum to parse them when inside other microformats and avoid errantly implying properties from one to the other (containment, [[mfo]] problem).&lt;br /&gt;
&lt;br /&gt;
== microformats 2 prefixes ==&lt;br /&gt;
=== naming conventions for generic parsing ===&lt;br /&gt;
There is a fairly simple solution to #1 and #2 from the above list, and we can make progress towards minimizing #3.  In short:&lt;br /&gt;
&lt;br /&gt;
'''Proposal: a set of naming conventions for microformat root class names and properties that make it obvious when:'''&lt;br /&gt;
* a class name represents a microformat root class name&lt;br /&gt;
* a class name represents a microformat property name&lt;br /&gt;
* a class name represents a microformat property that needs special parsing (specific type of property).&lt;br /&gt;
&lt;br /&gt;
In particular - derived from the real world examples of existing proven microformats (rather than any abstraction of what a schema should have)&lt;br /&gt;
* '''&amp;quot;h-*&amp;quot; for root class names''', e.g. &amp;quot;h-card&amp;quot;, &amp;quot;h-event&amp;quot;, &amp;quot;h-entry&amp;quot;&lt;br /&gt;
** The 'h-' prefix is based on the existing microformats naming pattern of starting with 'h'.&lt;br /&gt;
* '''&amp;quot;p-*&amp;quot; for simple (text) properties''', e.g. &amp;quot;p-fn&amp;quot;, &amp;quot;p-summary&amp;quot;&lt;br /&gt;
** vocabulary generic parsing, element text in general, treat certain HTML element/attribute combination as special and use those first, e.g. img/alt, abbr/title.&lt;br /&gt;
** The 'p-' prefix is based on the word &amp;quot;property&amp;quot; starting with 'p'.&lt;br /&gt;
* '''&amp;quot;u-*&amp;quot; for URL properties''', e.g. &amp;quot;u-url&amp;quot;, &amp;quot;u-photo&amp;quot;, &amp;quot;u-logo&amp;quot;&lt;br /&gt;
** special parsing required: prefer a/href, img/src, object/data etc. attributes to element contents.&lt;br /&gt;
** The 'u-' prefix is based on URL/URI starting with the letter 'u', which is the type of most of these related properties.&lt;br /&gt;
* '''&amp;quot;dt-*&amp;quot; for datetime properties''', e.g. &amp;quot;dt-start&amp;quot;, &amp;quot;dt-end&amp;quot;, &amp;quot;dt-bday&amp;quot;&lt;br /&gt;
** special parsing required: [[value-class-pattern]], in particular separate date time value parsing for better human readabillity / DRY balance.&lt;br /&gt;
** The 'dt-' prefix is based on &amp;quot;date time&amp;quot; having the initials &amp;quot;dt&amp;quot; and the preponderance of existing date time properties starting with &amp;quot;dt&amp;quot;, e.g. dtstart, dtend, dtstamp, dtreviewed.&lt;br /&gt;
*** Initially I had proposed &amp;quot;dt-*&amp;quot; but Chris Messina suggested reducing it to &amp;quot;d-*&amp;quot; so that all prefixes were a single letter - made sense.&lt;br /&gt;
*** However, I've noticed that Google+ is using &amp;quot;d-*&amp;quot; class names on [https://plus.google.com/109182513536739786206 profile pages], thus we can't really use 'd-' as a microformats 2 property parsing prefix. [[User:Tantek|Tantek]] 03:00, 22 July 2011 (UTC)&lt;br /&gt;
*** Frankly I also think this provides a simpler transition/education story for existing microformats authors/publishers: &amp;quot;h*&amp;quot; to &amp;quot;h-*&amp;quot;, &amp;quot;dt*&amp;quot; to &amp;quot;dt-*&amp;quot;, url type properties to &amp;quot;u-*&amp;quot;, and &amp;quot;p-*&amp;quot; for all others.&lt;br /&gt;
&lt;br /&gt;
See [[microformats-2-prefixes]] for further thoughts and discussions on these and other class prefixes.&lt;br /&gt;
&lt;br /&gt;
==== prefixes for future consideration ====&lt;br /&gt;
possibly also:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''&amp;quot;e-*&amp;quot; for properties''' where the entire contained element hierarchy is the value, e.g. &amp;quot;e-content&amp;quot; (formerly &amp;quot;entry-content&amp;quot;) for [[hAtom]].&lt;br /&gt;
** unclear if this is necessary in general. and if so, if this is only for hAtom, that's insufficient to justify putting it in the generic syntax.&lt;br /&gt;
** Would be sufficient to have all &amp;lt;code&amp;gt;p-&amp;lt;/code&amp;gt; properties parse the complete content, including any nested mark-up if present, and then implementations to sanitize/run a &amp;lt;code&amp;gt;strip_tags&amp;lt;/code&amp;gt; style function (as per data input best practice) as appropriate. --[[User:BenWard|BenWard]] 22:05, 19 September 2011 (UTC)&lt;br /&gt;
** Ouch that sounds like passing on complexity downstream for all cases just to handle *one* known use-case so far. Since we'd typically do the opposite (simplify for the 99% case over the 1% case), passing on content including mark-up by default seems like a step backwards. Also, given how many vulnerabilities seem to deal with parsing/filtering, doing that *first* rather than burdening downstream implementations seems like the right choice. I'd rather wait til we get a concrete complaint from a microformats-2 hAtom consumer before worrying about this for hAtom 2.0. Or are there other current real world use cases besides Atom? [[User:Tantek|Tantek]] 22:22, 19 September 2011 (UTC)&lt;br /&gt;
*** In addition to &amp;lt;code&amp;gt;entry-content&amp;lt;/code&amp;gt; in hAtom there's also &amp;lt;code&amp;gt;entry-summary&amp;lt;/code&amp;gt;, plus any large region of text in other microformats, which at the very least can commonly contain additional hyperlinks, images, and phrasing mark-up: &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; in hCal, hReview, hProduct, hListing, &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt; in hCard, &amp;lt;code&amp;gt;ingredient&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;instructions&amp;lt;/code&amp;gt; in hRecipe may link to a store, or wikipedia entry for the ingredient, or include an image to illustrate a step of a recipe, as well as recipe instructions that are expressed as lists. If an author/publisher marks up a property in such a way that it contains further mark-up, that mark-up should be assumed to be part of the value. It's always going to be up to an implementation to decide whether it wishes to translation that HTML mark-up into some other format (e.g. Markdown-esque text annotation when converting to something like &amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;, or some other kind of formatting language on non-HTML platforms, or stripping text altogether. —[[User:BenWard|BenWard]] 01:05, 20 September 2011 (UTC)&lt;br /&gt;
* '''&amp;quot;i-*&amp;quot; for ID properties''', e.g. &amp;quot;i-uid&amp;quot; (if this is the only one, then perhaps we just always re-use &amp;quot;uid&amp;quot; or collapse with &amp;quot;u-*&amp;quot; into &amp;quot;u-id&amp;quot;.)&lt;br /&gt;
** parsing is no different than &amp;quot;u-*&amp;quot; parsing, thus no need to introduce for now.&lt;br /&gt;
* '''&amp;quot;n-*&amp;quot; for numbers''', e.g. &amp;quot;n-rating&amp;quot;, &amp;quot;n-geo&amp;quot;, where the numbers may have different human-readable-friendly and decimal/machine values (e.g. with geo lat/long degrees minutes seconds vs decimal).&lt;br /&gt;
** requires definition of how would different parsing work before worthy of consideration.&lt;br /&gt;
* '''&amp;quot;t-*&amp;quot; for time duration''', e.g. &amp;quot;t-duration&amp;quot; in [[hCalendar]], [[hAudio]], [[hRecipe]] (note also Google's hRecipe extensions &amp;quot;preptime&amp;quot;, &amp;quot;cooktime&amp;quot;, &amp;quot;totaltime&amp;quot;)&lt;br /&gt;
** requires definition of how would different parsing work before worthy of consideration.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== reserving other prefixes ====&lt;br /&gt;
We should '''reserve all other single-letter-dash prefixes for future use.''' &lt;br /&gt;
&lt;br /&gt;
In practice we have seen little (if any) use of single-letter-dash prefixing of class names by web developers/designers, and thus in practice we think this will have little if any impact/collisions.  Certainly far fewer than existing generic microformat property class names like &amp;quot;title&amp;quot;, &amp;quot;note&amp;quot;, &amp;quot;summary&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== existing single letter class prefixes ====&lt;br /&gt;
We should document existing usage of single/double letter prefixed names:&lt;br /&gt;
* Google+ (e.g. [https://plus.google.com/109182513536739786206 profile page], others) uses:&lt;br /&gt;
** '''a-'''&lt;br /&gt;
** '''d-'''&lt;br /&gt;
** '''g-''', '''gb*'''&lt;br /&gt;
* Yahoo&lt;br /&gt;
** '''y-'''&lt;br /&gt;
* others? please add alphabetical by company/org name.&lt;br /&gt;
&lt;br /&gt;
== microformats 2 example ==&lt;br /&gt;
Example: taking that simple heading hCard example forward:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;Chris Messina&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As part of microformats 2.0 we would immediately define root class names and property names for all existing microformats and drafts consistent with this naming convention, and require support thereof from all new implementations, as well as strongly encouraging existing implementations to adopt the simplified microformats 2.0 syntax and mechanism. Question: which microformats deserve explicit backward compatibility?&lt;br /&gt;
&lt;br /&gt;
As a community we would continue to use the microformats [[process]] both for researching and determining the need for new microformats, and for naming new microformat property names for maximum re-use and interoperability of a shared vocabulary.&lt;br /&gt;
&lt;br /&gt;
If it turns out we need a new property type in the future, we can use one of the remaining single-letter-prefixes to add it to microformats 2.0. This would require updating of parsers of course, but in practice the number of different types of properties has grown very slowly, and we know from other schema/programming languages that there's always some small limited number of scalar/atomic property types that you need, and using those you can create compound types/objects that represent richer / more complicated types of data.&lt;br /&gt;
&lt;br /&gt;
=== ADVANTAGES ===&lt;br /&gt;
This has numerous advantages:&lt;br /&gt;
* '''better maintainability''' - much more obvious to web authors/designers/publishers which class names are for/from microformats.&lt;br /&gt;
* '''no chance of collision''' - for all practical purposes with existing class names and thus avoiding any need to add more complex CSS style rules to prevent unintended styling effects.&lt;br /&gt;
* '''simpler parsing''' - parsers can now do a simple stream-parse (or in-order DOM tree walk) and parse out '''all''' microformat objects, properties, and values, without having to know anything about any specific microformats.&lt;br /&gt;
* '''separation of syntax and vocabulary''' - by abstracting microformats 2 syntax independent of any vocabulary, it allows and encourages development of shared vocabularies  that can work in alternative syntaxes.&lt;br /&gt;
&lt;br /&gt;
More examples: here is that same heading example with name components:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-fn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with a hyperlink to Chris's URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;p-fn u-url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== COMPATIBILITY ===&lt;br /&gt;
&lt;br /&gt;
microformats 2.0 is backwards compatible in that in permits content authors to markup with both old and new class names for compatibility with old tools.&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Chris Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a microformats 2.0 parser would see the class name &amp;quot;h-card&amp;quot; and imply the one required property from the contents, while a microformats 1.0 parser would find the class name &amp;quot;vcard&amp;quot; and then look for the class name &amp;quot;fn&amp;quot;. no data duplication is required. this is a very important continuing application of the &amp;lt;abbr title=&amp;quot;don't repeat yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; [[principle]].&lt;br /&gt;
&lt;br /&gt;
And the above hyperlinked example with both sets of class names:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;p-fn u-url n fn url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== vendor extensions ==&lt;br /&gt;
(this section was only discussed verbally and not written up during discussions - capturing here as it is topical)&lt;br /&gt;
&lt;br /&gt;
Proprietary extensions to formats have typically been shortlived experimental failures with one big recent exception.&lt;br /&gt;
&lt;br /&gt;
Proprietary or experimental CSS3 property implementations have been very successful.&lt;br /&gt;
&lt;br /&gt;
There has been much use of border radius properties and animations/transitions which use CSS properties with vendor-specific prefixes like:&lt;br /&gt;
&lt;br /&gt;
* -moz-border-radius&lt;br /&gt;
* -webkit-border-radius&lt;br /&gt;
&lt;br /&gt;
etc.&lt;br /&gt;
&lt;br /&gt;
Note that these are merely string '''prefixes''', not bound to any URL, and thus not namespaces in any practical sense of the word.  This is quite an important distinction, as avoiding the need to bind to a URL has made them easier to support and use.&lt;br /&gt;
&lt;br /&gt;
This use of vendor specific CSS properties has in recent years allowed the larger web design/development/implementor communities to experiment and iterate on new CSS features while the features were being developed and standardized.&lt;br /&gt;
&lt;br /&gt;
The benefits have been two-fold:&lt;br /&gt;
* designers have been able to make more attractive sites sooner (at least in some browsers)&lt;br /&gt;
* features have been market / real-world tested before being fully standardized, thus resulting in better features&lt;br /&gt;
&lt;br /&gt;
Implementers have used/introduced &amp;quot;x-&amp;quot; prefixes for IETF MIME/content-types for experimental content-types, MIME parameter extensions, and HTTP header extensions, per RFC 2045 Section 6.3, RFC 3798 section 3.3, and [https://secure.wikimedia.org/wikipedia/en/wiki/List_of_HTTP_header_fields#Common_non-standard_headers Wikipedia: HTTP header fields - non-standard headers] (could use RFC reference instead) respectively, like:&lt;br /&gt;
&lt;br /&gt;
* application/x-latex (per [https://secure.wikimedia.org/wikipedia/en/wiki/Internet_media_type#Type_x Wikipedia Internet media type: Type x])&lt;br /&gt;
* x-spam-score (in email headers)&lt;br /&gt;
* X-Pingback (per [http://en.wikipedia.org/wiki/Pingback Wikipedia:Pingback])&lt;br /&gt;
&lt;br /&gt;
Some standard types started as experimental &amp;quot;x-&amp;quot; types, thus demonstrating this experiment first, standardize later approach has worked for at least some cases:&lt;br /&gt;
&lt;br /&gt;
* image/x-png (standardized as image/png, both per [http://tools.ietf.org/html/rfc2083 RFC2083])&lt;br /&gt;
&lt;br /&gt;
There have been times when specific sites have wanted to extend microformats beyond what the set of properties in the microformat, and currently lack any '''experimental''' way to do so - to try and see if a feature (or even a whole format) is interesting in the real world before bothering to pursue researching and walking it through the microformats process.  Thus:&lt;br /&gt;
&lt;br /&gt;
'''Proposal:'''&lt;br /&gt;
* '*-x-' + '-' + meaningful name for root and property class names&lt;br /&gt;
** where &amp;quot;*&amp;quot; indicates the single-character-prefix as defined above&lt;br /&gt;
** where &amp;quot;x&amp;quot; indicates a literal 'x' for an experimental extension OR&lt;br /&gt;
** OR &amp;quot;x&amp;quot; indicates a vendor prefix (more than one character, e.g. like CSS vendor extension abbreviations, or some stock symbols, avoiding first words/phrases/abbreviations of microformats properties like dt-)&lt;br /&gt;
** e.g.&lt;br /&gt;
** &amp;quot;h-bigco-one-ring&amp;quot; - a hypothetical &amp;quot;bigco&amp;quot; vendor-specific &amp;quot;onering&amp;quot; microformat root class name.&lt;br /&gt;
** &amp;quot;p-goog-preptime&amp;quot; - to represent [http://www.google.com/support/webmasters/bin/answer.py?answer=173379 Google's &amp;quot;preptime&amp;quot; property extension] to [[hRecipe]] (aside: &amp;quot;duration&amp;quot; may be another property type to consider separate from &amp;quot;datetime&amp;quot; as it may be subject to different parsing rules.)&lt;br /&gt;
** &amp;quot;p-x-prep-time&amp;quot; - a possible experimental property name to be added to hRecipe upon consideration/documentation of real-world usage/uptake.&lt;br /&gt;
&lt;br /&gt;
Background - this proposal is a composition of the following (at least somewhat) successful vendor extension syntaxes&lt;br /&gt;
* [http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords CSS 2.1 4.1.2.1 Vendor-specific extensions]&lt;br /&gt;
* IETF MIME/content-type &amp;quot;x-*&amp;quot; extensions per RFC 2045 Section 6.3. [http://en.wikipedia.org/wiki/Internet_media_type]&lt;br /&gt;
* IETF MIME experimental fields (e.g. x-spam-score)&lt;br /&gt;
* HTTP header extensions (e.g. x-pingback)&lt;br /&gt;
* note also [http://www.mnot.net/blog/2009/02/18/x- some critical thoughts from mnot]&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
=== Hungarian prefixing issues ===&lt;br /&gt;
Raised by [[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 proposes using an explicit &amp;lt;code&amp;gt;[a-z]-&amp;lt;/code&amp;gt; prefix on properties, to differentiate them from other uses of the class attribute, and identify them as microformat properties, such that they can be parsed generically.&lt;br /&gt;
&lt;br /&gt;
* The differentiation use case is supported by anecdotal evidence of sites (such as Facebook, Twitter, Yahoo) removing microformats or breaking objects in page edits. The addition of a prefix assists self-documentation of code.&lt;br /&gt;
* The generic parsing use case is supported by Google Rich Snippets, Yahoo Search Monkey, and extensible plugins like Operator and the Firefox microformats parser. Although these extract microformats from the page, they are intermediate systems between the page content and the actual interpretation of the data. They need to parse all objects from a page, and then another developer or application will interpret some of them into something else.&lt;br /&gt;
&lt;br /&gt;
(Note: the theoretical assertion &amp;quot;they need to parse all objects from a page&amp;quot; is not actually backed by *any* existing use of microformats/microdata/RDFa parsing - *none* of those parse &amp;quot;all objects from a page&amp;quot; if you consider every markup element an &amp;quot;object&amp;quot; - rather, one of the strength of microformats (mimicked by the others) is that the publisher is able to markup *just* the data to be extracted, rather than perhaps purely &amp;quot;presentational&amp;quot; content, ads, UI widgets etc. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC) )&lt;br /&gt;
&lt;br /&gt;
The µf2 proposal goes further, though, into a small vocabulary of [http://en.wikipedia.org/wiki/Hungarian_notation Hungarian] prefixes of properties based on data type. This increases the level of understanding required to read microformats, and reduces the benefit of all microformat properties having a consistent identifying prefix.&lt;br /&gt;
&lt;br /&gt;
(Debatable assertion:&amp;quot;increases the level of understanding required to read microformats&amp;quot; - how? In microformats 2.0, authors/developers know that any single-letter-and-hyphen prefixed class name is for microformats 2.0, in contrast to today - developers have consistently given feedback that's hard to tell which generic class names (other than h* names) are microformat related and which are not. As for specific prefixes, &amp;quot;h-*&amp;quot; is special and follows the pattern of existing microformats. p = generic (p)roperty, and the other prefixes have trivial mnemonics as well, d for (d)atetimes etc. (so far, hopefully we can keep that up). -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC) )&lt;br /&gt;
&lt;br /&gt;
Hungarian notation itself is controversial amongst programmers. &lt;br /&gt;
Plenty find it uglifies their code, can be a cause of confusion (especially when very-short prefixes are used, or esoteric types, or where the declared set of types differs from the available types in other programming languages.) Others support its benefits to type identification.&lt;br /&gt;
&lt;br /&gt;
(Programmers are not the priority here, rather, designers/authors/publishers are. We design microformats for them first as they're the common use case, and we should avoid making statements that seem to imply any priority for the aesthetic preferences of programmers. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC))&lt;br /&gt;
&lt;br /&gt;
Critically, however, there is no clear indication that either of the above use cases requires types to be strongly identified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* For identifying µf in pages, a differentiator is required from regular classnames. There is no evidence of further requirement to differentiate between properties beyond their name (and existing criticisms of Hungarian notation suggest it can harm understandability.)&lt;br /&gt;
** There is such evidence, and perhaps thus this would be a good FAQ topic. The derivation is quite simple - it comes directly from minimally affecting existing markup, and maximally using existing semantic information. Example of special purpose parsing, URL-like properties use the value of the 'href' (or equivalent) attribute because that's where that data already is in pages. Similarly with dates and datetimes - special parsing rules for that data type have permitted us to design the [[value-class-pattern]] to take advantage of specially parsing date and time separation. By re-using data *where publishers already put it, including attributes vs inline* we minimize the risk of data drift. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
** Additionally, this special type-specific parsing of microformats properties conveys microformats advantages of markup brevity that other syntaxes lack. E.g. you can convey *multiple* properties and values from a single existing element, e.g. the *very* common real-world pattern &amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;a href=&amp;quot;http://example.com/user&amp;quot;&amp;gt;User Name&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt; is minimally marked up as &amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/user&amp;quot;&amp;gt;User Name&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* For generic parsing, there is no requirement that datatypes be established at extraction time. Data types will instead be applied by the developers of apps and widgets that build on the generic parsers.&lt;br /&gt;
** There are requirements based on experience with actual markup. In order to support the patterns of where content publishers put the data we want to extract, we have determined (based on those publishing patterns) a few different ways (types) of parsing this data. This is all captured in the [[hcard-parsing]] property-specific parsing rules each of which were added one at a time as Brian Suda and myself encountered real world sites wanting to use [[hCard]] but not wanting to have to rewrite their markup (adding one span and some class names was about the limit, moving tags/attributes around was a showstopper in many/most cases), and each of the microformats 2.0 &amp;quot;types&amp;quot; are directly derived from such special purpose data/type parsing across *multiple* microformats. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
* A counter argument may be that special properties in microformats—such as URLs, or images—need to be identified because in microformats it is common to parse an attribute (href, or src) rather than inner text of an element for these properties. However, in the context of extracting and then interpreting HTML in other contexts this is insufficient: For example, though an image only exists as a single property in vcard, in HTML it is both a URL to a resource ''and'' and text string (alt) representing an accessible fallback. A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context. Likewise, an application interpreting a URL may also consider using the original inner text as an inferred label. Both pieces of data are useful, and a generic parser should not discard elemental semantics at the extraction level.&lt;br /&gt;
** It's not just &amp;quot;*common* to parse an attribute rather than inner text of an element for these properties&amp;quot; - it is the vast overwhelming majority - if not all - such cases!&lt;br /&gt;
** One misconception: &amp;quot;image only exists as a single property&amp;quot;. No, there is both 'photo' and 'logo'. The 'url' and 'sound' properties are also of type 'url'. For all of these, when parsing an &amp;quot;object&amp;quot; element, you must use the 'data' attribute first for example. hCalendar has &amp;quot;attachment&amp;quot; as well. Etc.&lt;br /&gt;
** Theoretical assertion: &amp;quot;A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context.&amp;quot; Why? There is no existing nor demonstrated use case for this requirement, even across other formats. While I agree it &amp;quot;might be nice&amp;quot; to develop a new &amp;quot;structured image&amp;quot; type - that's brand new work (deserving of research per the [[process]] etc.), and not a good source of reasoning to reject existing working patterns. I reject blocking microformats 2.0 on an as-yet-to-be-researched-enhancement. This is certainly a case where &amp;quot;better&amp;quot; is an enemy of the good.&lt;br /&gt;
** Theoretical assertion: &amp;quot;a generic parser should not discard elemental semantics at the extraction level&amp;quot; - already does for other syntaxes like both microdata and RDFa - so clearly this is not a reasonable &amp;quot;should not&amp;quot; assertion (and thus unnecessary) for development of a minimally competitive syntax. RDFa kind of cheats by overloading the 'rel' attribute in attempt to solve the name+url case as mentioned above, but that's only two types - and existing real world use of microformats has demonstrated utility of a few more.  -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given this, hungarian prefixes are of no benefit to parsers (and may in fact harm applications down the chain if parsing is prematurely strict.) It would be sufficient then not to concern embedding data types in property names, and instead settle on one single property prefix to differentiate all properties consistently. This would reduce the prefixes to just 3:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; would indicates a root class name. An ‘object in HTML’.&lt;br /&gt;
* &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; would indicates a property within an object.&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; would indicates an experimental extension to an object.&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
The primary benefit of type-specific parsing is *not* for parsers, but rather, publishers (who we still hold in higher priority than parsers).&lt;br /&gt;
&lt;br /&gt;
I will also note that *each* of the type-specific parsing methods in [[hcard-parsing]] was added both conservatively, reluctantly, and only when it became clear that such type-specific publishing patterns existing across *multiple* sites that would otherwise be unable to change their markup to work with microformats (Yes, I'm wishing now that I better documented exactly *which* sites, precisely *when*, but like many startups, early on we didn't exactly know how much to document vs get things done - frankly I think we documented far more than any other comparable such efforts, e.g. we managed to at least capture/grow both an explicit [[process]] and [[principles]] in *far* greater detail than anything remotely comparable either before microformats or since!). The type-specific parsing features are certainly not overdesigned, on the contrary they've *slowly* evolved, adapting to real world data on the web.&lt;br /&gt;
&lt;br /&gt;
While per the [[simplicity]] principle, I would actually *strongly* prefer to only have the three prefixes given above, or actually just *two* (I started with just two for the design of microformats 2.0 actually, just &amp;quot;h-*&amp;quot; and &amp;quot;p-*&amp;quot;), doing so would be a step *backwards* in terms of the adaptability of microformats to existing markup, and that's IMHO an unacceptable barrier, and  a sufficiently high barrier to hurt the adoption/applicability of microformats 2.0. &lt;br /&gt;
&lt;br /&gt;
(Aside: In addition, note that you still need h-x-* for experimental objects, and thus it's *simpler* to simply have *both* h-x-* and p-x-* rather than add x-*. Alternatively x-h-* and x-p-* is no better, in some ways worse, in that object vs. property is a more important distinction for parsers than established vs experimental, especially if/when an experimental property (or object) may be adopted. Also, mild precdent: PNG started with image/x-png, not x-image/png.).&lt;br /&gt;
&lt;br /&gt;
To put it in a positive way, type-specific parsing conveys microformats a publisher-markup-density (and re-use) advantage which neither microdata nor RDFa have, and it would behoove us to *keep* this significant real-world advantage as we evolve microformats.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=process&amp;diff=44621</id>
		<title>process</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=process&amp;diff=44621"/>
		<updated>2011-09-20T00:48:02Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* related issues questions regarding document stages */ Propose ‘Archiving’ rather than ‘uninteresting’&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If this is your first visit, please see the [[introduction]] page first.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;entry-title&amp;gt;The microformats process&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''So you wanna develop a new microformat?'''&lt;br /&gt;
&lt;br /&gt;
'''Or just a new vocabulary?'''&lt;br /&gt;
&lt;br /&gt;
'''Or create a new standard based on empirical research and scientific methods?'''&lt;br /&gt;
&lt;br /&gt;
This document will help guide you through the steps to take towards achieving these goals.&lt;br /&gt;
&lt;br /&gt;
The microformats process has been cited as inspiration for other standards groups and efforts such as the WHATWG and ActivityStreams.&lt;br /&gt;
&lt;br /&gt;
;Editor&lt;br /&gt;
:[[User:Tantek|Tantek Çelik]]&lt;br /&gt;
&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
== Get some experience first ==&lt;br /&gt;
Before even considering pursuing a new microformat, first:&lt;br /&gt;
&lt;br /&gt;
# Make your site [[POSH]].&lt;br /&gt;
# Add &amp;lt;em&amp;gt;existing&amp;lt;/em&amp;gt; microformats to your sites like [[hcard|hCard]] for your contact info etc., [[hcalendar|hCalendar]] for your events, [[hatom|hAtom]] for your episodic content (e.g. blogs).  See [[get-started]] for more specific examples of adding microformats to your sites.&lt;br /&gt;
&lt;br /&gt;
This will help familiarize you with how [[POSH]] and [[microformats]] currently work. Such &amp;quot;real world&amp;quot; experience will greatly help you with the development a new microformat.  For more on this see [[why-using-existing-microformats-matters]].&lt;br /&gt;
&lt;br /&gt;
Then, ask yourself:&lt;br /&gt;
&lt;br /&gt;
==Why?==&lt;br /&gt;
There must be a problem to be solved (i.e. a real world use case). No problem, no microformat.&lt;br /&gt;
&lt;br /&gt;
Once you've found your 'problem,' ask yourself: 'is there a simpler problem here?' If so, let's solve that problem first. We want to deal with the simplest problems first and only then build up to more complex problems.&lt;br /&gt;
&lt;br /&gt;
Perhaps someone else is pursuing (or has pursued) a similar problem.&lt;br /&gt;
&lt;br /&gt;
Check the [[exploratory-discussion]] page, and search around on the web. Chances are that someone else has encountered the same problem as you. There are very few truly new problems.&lt;br /&gt;
&lt;br /&gt;
If you still believe that you have a new and unsolved problem, post something to the [[irc]] channel, and if no one is around, then the [http://microformats.org/mailman/listinfo/microformats-new/ microformats-new] mailing list. It's better to get the community involved in the discussion.  Start the discussion '''&amp;lt;span style=&amp;quot;text-transform: uppercase;&amp;quot;&amp;gt;before&amp;lt;/span&amp;gt;''' you start creating any pages on the wiki.&lt;br /&gt;
&lt;br /&gt;
We're not using the wiki as a general &amp;amp;quot;scratch pad&amp;amp;quot;.  If you can't summarize the problem you are trying to solve in a short email, and feel like you need a long document, you're probably trying to solve too big of a problem - see previous point about 'is there a simpler problem here?' and simplify until you describe your problem and real world use case in a short paragraph.&lt;br /&gt;
&lt;br /&gt;
== Check Exploratory Discussions For Previous Work ==&lt;br /&gt;
It may be possible that someone else has tried (or is trying to) solve the same real world problems as you.&lt;br /&gt;
&lt;br /&gt;
Check the [[exploratory-discussions]] page ''before'' starting new pages for your effort to see if you can add to / iterate on an existing effort before creating a new one.&lt;br /&gt;
&lt;br /&gt;
==Document Current Behavior==&lt;br /&gt;
Document examples of current human publishing behavior. &lt;br /&gt;
&lt;br /&gt;
[[why-examples|Why examples first?]] Read that. It's important and gets to the core of what makes microformats efforts different than many/most previous/other format development efforts.&lt;br /&gt;
&lt;br /&gt;
We're [http://ifindkarma.typepad.com/relax/2004/12/microformats.html paving the cowpaths]- before you do that you have to ''find'' the cowpaths. &lt;br /&gt;
&lt;br /&gt;
By ''cowpaths'' here we mean ''real world publishing examples''.  Your [[examples]] should be a collection of real world sites and pages which are publishing the kind of data you wish to structure with a microformat. From those pages and sites, you should extract markup examples and especially the schemas implied therein, and provide analysis.&lt;br /&gt;
&lt;br /&gt;
This collection of examples should be public, preferably on the microformats wiki because it's unlikely you can do it by yourself (no matter how many of you there are), and having others even just check your work will help improve its quality.&lt;br /&gt;
&lt;br /&gt;
The [[reviews-formats]] page is a good example of research done before the creation of a microformat. Before developing [[hreview|hReview]], the collaborators went out, documented current practices around reviews on web sites, and provided some analysis of the schemas implied therein.&lt;br /&gt;
&lt;br /&gt;
Note: these examples are about the ''content'' (and schemas ''implied'' therein) not about formats, class names, pre-existing standards etc. That comes next.&lt;br /&gt;
&lt;br /&gt;
Study the examples and determine the ''implied'' (not explicit) schema of data that is being published (the conceptual properties about the data - not literal class names). Sort these by frequency and determine which appear in roughly 80% of cases (per the 80/20 rule, Pareto [[principle]]).&lt;br /&gt;
&lt;br /&gt;
If you can't find real world publishing examples of the type of data you want to represent using a microformat, then stop here. It doesn't need a microformat.&lt;br /&gt;
&lt;br /&gt;
==Document Previous Efforts==&lt;br /&gt;
Once you've documented real world publishing examples of the kinds of data you want to represent, the next step is to research efforts at developing formats for those kinds of data.&lt;br /&gt;
&lt;br /&gt;
There are almost always previous efforts at formats for whatever kind of data you want to represent using microformats.&lt;br /&gt;
&lt;br /&gt;
Learning from previous format efforts is important, because it helps:&lt;br /&gt;
* minimize repeating mistakes by others&lt;br /&gt;
* explore why a previous format succeeded (or didn't)&lt;br /&gt;
* provide a source of vocabulary to express a new microformat&lt;br /&gt;
&lt;br /&gt;
In particular, ask yourself: &amp;amp;quot;are there any well established, interoperably implemented standards we can look at which address this problem?&amp;amp;quot; &lt;br /&gt;
&lt;br /&gt;
For example, hCard and hCalendar were built on top of the IETF standards for vCard and iCal, respectively, both of which are widely interoperably implemented, and dominant in their space (there were no competing formats with anywhere near the same levels of adoption). &lt;br /&gt;
&lt;br /&gt;
The developers of those standards had already spent many years in standards committees arguing about and developing their schemas.  Better to leverage all the hard work that others have done before you, than to go off as a solo cowboy inventor, and waste time repeating all their mistakes.  It's also much easier to start from a well established schema, and map into into semantic HTML than to develop a new schema.&lt;br /&gt;
&lt;br /&gt;
It's quite possible during this step that you'll find someone else who has dealt with the problem(s) you're addressing.  Perhaps even solved it/them.  Do your best to open a dialog with others who have encountered the same problem(s). We don't want to build walls between competing communities - we want people to work together to develop a good solution which will cover the majority of cases.&lt;br /&gt;
&lt;br /&gt;
If you can't find previous efforts at formats for the data you want to microformat, ask in [[IRC]] and on the [[mailing-lists]].&lt;br /&gt;
&lt;br /&gt;
==Brainstorm Proposals==&lt;br /&gt;
By now you've researched previous examples and previous formats and you're finally ready to write up brainstorms towards a new microformat.&lt;br /&gt;
&lt;br /&gt;
Actually, &amp;lt;strong style=&amp;quot;text-transform:uppercase;&amp;quot;&amp;gt;don't!&amp;lt;/strong&amp;gt; &lt;br /&gt;
&lt;br /&gt;
There are other things to try before developing a microformat. First, ask yourself these questions:&lt;br /&gt;
&lt;br /&gt;
# Is there a standard element in HTML that would work?&lt;br /&gt;
# Is there a compound of HTML elements that would work?&lt;br /&gt;
&lt;br /&gt;
If so, document these on the brainstorming page, and stop. There is no need for a microformat.&lt;br /&gt;
&lt;br /&gt;
Let's not unnecessarily reinvent what you can already do with HTML.&lt;br /&gt;
&lt;br /&gt;
For more details on semantic HTML, examples of using HTML elements, and constructing HTML (and XHTML) compounds, see [http://tantek.com/presentations/2005/03/elementsofxhtml/ The Elements of Meaningful XHTML].&lt;br /&gt;
&lt;br /&gt;
Otherwise, if you can clearly and confidently answer &amp;quot;no&amp;quot; to the above two questions, we can talk about a microformat. &lt;br /&gt;
&lt;br /&gt;
Before you start your act of creation, familiarize yourself [[microformats#the_microformats_principles|the microformats principles]].&lt;br /&gt;
&lt;br /&gt;
There's basically two steps to writing up a brainstorm proposal:&lt;br /&gt;
&lt;br /&gt;
# Go back to that list of real world publishing examples that you researched, and collect the 80/20 of the implied conceptual schema from the examples.&lt;br /&gt;
# Give each of those concepts a property name, re-using from, in order: &lt;br /&gt;
## existing microformats&lt;br /&gt;
## previous formats&lt;br /&gt;
## simple but specific human readable English words and phrases&lt;br /&gt;
&lt;br /&gt;
Congratulations, you've written up a brainstorm proposal with a list of class names for a possible microformat.&lt;br /&gt;
&lt;br /&gt;
You may notice that we completely skipped ''naming'' the potential new microformat itself. This is not an accident, this is deliberate. Naming is tempting, and good naming is hard. Thus naming is discussed later.&lt;br /&gt;
&lt;br /&gt;
The key is, the explicit schema of the microformat (what properties and hence class names are in it) is '''more important''' than the name.&lt;br /&gt;
&lt;br /&gt;
Remember, microformats should be designed for humans first and machines second. Here are few questions that may help you decide if you really need a microformat for the problem you are trying to solve:&lt;br /&gt;
&lt;br /&gt;
# If I looked at this microformat in a browser that didn't support CSS or had CSS turned off, would it still be human-readable?&lt;br /&gt;
# Are this format's elements stylable with CSS?&lt;br /&gt;
    &lt;br /&gt;
If the proposed format doesn't pass these two things, it's not likely to gain much acceptance. Remember: ''humans first, machines second''.&lt;br /&gt;
&lt;br /&gt;
== Iterate ==&lt;br /&gt;
Now that you have a simple brainstorm proposal, what do you do?&lt;br /&gt;
&lt;br /&gt;
Iterate. Iterate. Iterate.&lt;br /&gt;
&lt;br /&gt;
In the process of developing a microformat, you'll likely get a lot of feedback from others interested in microformats. The effort needs to be iterated and adapted. Microformat development should be open, and preferably collaborative and community-based.&lt;br /&gt;
&lt;br /&gt;
Here's an ASCII-art flow diagram of where you're going&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DIAGRAM:&lt;br /&gt;
problem statement----&amp;gt;research/discussion----&amp;gt;proposal/draft----&amp;gt;specification&lt;br /&gt;
^________________V   ^___________________V   ^______________V&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that each stage involves iteration. That iteration consists of discussion and feedback and may result in major changes. Do not be afraid to make major changes and please don't get too attached to any particular solutions.&lt;br /&gt;
&lt;br /&gt;
Feel free to explore ''multiple'' proposals one after another on the brainstorming page. The goal here is to explore reasonable microformat solutions, including multiple possibilities, alternatives etc.&lt;br /&gt;
&lt;br /&gt;
== Naming considerations ==&lt;br /&gt;
'''DO NOT''' start with even labeling your effort &amp;quot;hXYZ&amp;quot;.  This is a ''very'' common mistake.&lt;br /&gt;
&lt;br /&gt;
Always start with the general problem area.&lt;br /&gt;
&lt;br /&gt;
Thus name the problem area (*- pages below) generically and specifically avoid starting with code name / brand name like hNewCoolFormat.  &lt;br /&gt;
&lt;br /&gt;
Good: '''[[product-examples]]'''.  Bad: '''hProduct-examples'''.&lt;br /&gt;
&lt;br /&gt;
After you've iterated your research and brainstorming at least a bit, you've likely gained sufficient understanding of the problem-space that you're solving to start looking at naming considerations.&lt;br /&gt;
&lt;br /&gt;
== Pages to create ==&lt;br /&gt;
After a specific problem area ('''*''') has been determined (principle 1), consider creating and filling out the following pages for it, and add the first to [[exploratory-discussions]].  If you're unable to come up with material for the pages, then you should probably reconsider whether or not the problem is worth (or ready for) solving.  &lt;br /&gt;
# '''*-examples'''  Find examples on today's web of the the type of content you think needs a microformat.  Document them with URLs.  Document the schemas implied by the content examples.  This is the action that helps follow principle 3, design for humans first, machines second ... adapt to current behaviors and usage patterns. Start by cloning the [[examples]] page and filling it out.&lt;br /&gt;
# &amp;lt;span id=&amp;quot;formats&amp;quot;&amp;gt;'''*-formats'''&amp;lt;/span&amp;gt;  Find widely adopted interoperable current data formats and standards that attempt to or have attempted to solve the problem previously.  Document their explicit schemas.  This is necessary prerequisite for following through with principle 4, &amp;quot;reuse building blocks from widely adopted standards&amp;quot;.&lt;br /&gt;
# &amp;lt;span id=&amp;quot;brainstorming&amp;quot;&amp;gt;'''*-brainstorming'''&amp;lt;/span&amp;gt;  Use the current real-world web examples and their implicit schemas to determine an 80/20 as-simple-as-possible (principle 2) generic schema to represent their data.  Yes, this means you will explicitly ''omit'' some features of some use cases, or perhaps entire use cases which are more edge-cases than representative of larger, aggregate/macro behaviors.  See which existing microformats can be reused as building blocks (principle 5, modularity).  Use those existing data formats and schemas as a [[existing-classes|source of names]] for the fields (principle 4).  Consider how would you embed this microformat in other formats (also principle 5, embeddability). See the [[brainstorming]] page for a bit more info.&amp;lt;p&amp;gt; With an 80/20 schema, and a source of field names, write up one or more straw proposals for a microformat in the *-brainstorming page. Make sure the straw proposals encourage the decentralized distribution of data (principle 6). Postpone the choice of root class name as it often overlaps with the naming of the microformat itself. Always keep close at hand the [[naming-principles|microformats naming principles]] when choosing names.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Brainstorming about the substance of the microformat (its properties and values) should precede naming the microformat itself.  Thus after proposals have been written up and are being discussed for the schema, create a naming section for the microformat itself and root class name, where various names can be considered.&amp;lt;/p&amp;gt; &lt;br /&gt;
#  '''**''' When it seems like there is rough consensus around one of the brainstorm proposals for a microformat with a specific name('''**'''), write it up as a separate wiki page as a draft specification (see [[style-guide]]), and then start creating the following pages to track it.&lt;br /&gt;
#  '''**-faq'''  There will likely be common questions about the new microformat which can/should be answered in an FAQ page.&lt;br /&gt;
#  '''**-issues'''  Folks may also raise issues about the microformat which aren't immediately addressable.  An issues document helps serves to capture these issues, who raised them, and when, so that folks working on the microformat can be sure to go through and thoroughly answer them.&lt;br /&gt;
#  '''**-examples''' Eventually there may be too many real world examples of a microformat to document them in an informative section at the end of the specification, thus the list deserves its own page.&lt;br /&gt;
#  '''**-implementations''' Eventually there may be too many implementations of a microformat to document them in an informative section at the end of the specification, thus the list deserves its own page.&lt;br /&gt;
#  '''**-brainstorming''' Eventually there will be non-trivial proposals/suggestions/clarifications for changes in the microformats as part of iteration. Create such a format specific [[brainstorming]] page for such suggestions.&lt;br /&gt;
&lt;br /&gt;
== Moving from Stage to Stage ==&lt;br /&gt;
These stages of development are mirrored on the main page where microformats are divided into &amp;amp;quot;Exploratory Discussions&amp;amp;quot;, &amp;amp;quot;Drafts&amp;amp;quot;, and &amp;amp;quot;Specifications&amp;amp;quot;. Based on feedback we've added a new stage: &amp;quot;Standards&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
How do microformats move from one stage to the other?&lt;br /&gt;
&lt;br /&gt;
=== Exploratory Discussions ===&lt;br /&gt;
Document your problem area, existing research, and brainstorm proposals on the [[exploratory-discussions]] page.&lt;br /&gt;
You should do it on this wiki using current items under exploratory discussion as a guide.  &lt;br /&gt;
&lt;br /&gt;
Then send a note to the microformats-new list to get the attention of others who are interested in microformats.  This is probably a good chance to pull in people from outside the current microformats community who may also be experiencing the same issue.  &lt;br /&gt;
&lt;br /&gt;
Feedback will probably range the gamut.  Others may challenge your problem statement, the need for a microformat, concur, or add.  All constructive feedback is good.&lt;br /&gt;
&lt;br /&gt;
As a result of feedback, you may decide to abandon your microformat idea or substantially modify it or add more alternatives to brainstorm proposals to consider.&lt;br /&gt;
&lt;br /&gt;
One thing you want to be sure to do at this stage is to avoid [[reinvented-wheels|reinventing the wheel]].  &lt;br /&gt;
&lt;br /&gt;
Are there elemental microformats you can reuse as building blocks?  Doing this will save you effort and help you get implemented later because implementers will have less work to do.&lt;br /&gt;
&lt;br /&gt;
=== Drafts ===&lt;br /&gt;
Once there seems to be rough consensus around a particular brainstorm proposal, including a specific schema and list or properties, write that brainstorm proposal into a draft.&lt;br /&gt;
&lt;br /&gt;
Summary of what is a draft:&lt;br /&gt;
&lt;br /&gt;
* '''draft''' - experimental new microformat&lt;br /&gt;
** '''preconditions:''' &lt;br /&gt;
*** rough consensus has been reached among the various *-brainstorming proposals&lt;br /&gt;
** '''actions:'''&lt;br /&gt;
*** determine a name for the new microformat (**)&lt;br /&gt;
*** write-up consensus brainstorm into a stand-alone draft&lt;br /&gt;
*** create **-issues page for collecting feedback&lt;br /&gt;
** '''means:''' &lt;br /&gt;
*** ready for publishers to start experimenting with on their public pages&lt;br /&gt;
*** ready for consumers to start experimenting with consuming such publishers&lt;br /&gt;
*** and both providing feedback for draft iteration accordingly&lt;br /&gt;
** '''stability:''' &lt;br /&gt;
*** major changes can still occur&lt;br /&gt;
*** e.g. add/drop/rename arbitrary features (per research/feedback from publishers/consumers)&lt;br /&gt;
&lt;br /&gt;
Drafts are written up on the wiki using the draft template. Upon writing up a draft, send a note to the microformats-new mailing list to alert people that something new has happened.  Continue encouraging feedback from relevant resources both inside and outside the community.  Drafts need to include at least the following:&lt;br /&gt;
&lt;br /&gt;
* Statements regarding the fact that you will not patent and are adopting appropriate copyright (preferably PUBLIC DOMAIN) as illustrated by current drafts.&lt;br /&gt;
* An XMDP stating explicit property and value names.  You may want to place this on a separate wiki page and link to it.  In that case use the naming convention *-profile, e.g. [[hcard-profile]].&lt;br /&gt;
* Examples from current practice that show how the microformat would be used.  Keep an eye out for how the microformat is actually improving things.  If it's not, that might be an indication that you either need to abandon or change a lot.&lt;br /&gt;
* Use of [[rfc-2119]] terms.&lt;br /&gt;
* References that back up your design decisions for the microformat.  To the extent possible, you do not want to invent things from whole cloth. This should be relatively easy if you have followed the process so far with proper research.&lt;br /&gt;
* A list of implementations (if any).&lt;br /&gt;
* An issues section for people to feed back to you with detailed objections.&lt;br /&gt;
&lt;br /&gt;
=== Specifications ===&lt;br /&gt;
You will usually need at least one iteration to get past the draft stage.  &lt;br /&gt;
&lt;br /&gt;
By the time something becomes a specification, it should be stable so that developers can pick it up and write to it.  This in turn implies that there are at least a couple of implementations.&lt;br /&gt;
&lt;br /&gt;
This in turn implies that there are at least a couple of sites/implementations that have shown interest beyond the creator/editors of the specification.&lt;br /&gt;
&lt;br /&gt;
Summary of what is a specification:&lt;br /&gt;
&lt;br /&gt;
* '''specification''' - a stable and mature draft&lt;br /&gt;
** '''preconditions:''' &lt;br /&gt;
*** all outstanding **-issues resolved (hit zero issues for a few weeks)&lt;br /&gt;
*** 1+ solid real world publisher(s) that&lt;br /&gt;
**** are not the editor(s) of the spec (demonstrates some breadth of interest)&lt;br /&gt;
**** benefit end users (i.e. not just artificial data published for data's sake)&lt;br /&gt;
*** 1+ solid real world consumer(s) that&lt;br /&gt;
**** are not the editor(s) of the spec (demonstrates some breadth of interest)&lt;br /&gt;
**** successfully consume the microformats published by the publisher(s). &lt;br /&gt;
**** provide real world end user benefits / solve use-cases&lt;br /&gt;
**** (libraries/opensource are nice as enablers but insufficient for this)&lt;br /&gt;
** '''actions:'''&lt;br /&gt;
*** update draft to use specification template&lt;br /&gt;
*** create **-examples-in-wild, **-implementations pages to collect them&lt;br /&gt;
** '''means:'''&lt;br /&gt;
*** ready for publishers to start depending on&lt;br /&gt;
*** ready for consumers to start depending on&lt;br /&gt;
** '''stability:'''&lt;br /&gt;
*** minor changes can still occur &lt;br /&gt;
*** e.g. dropping of properties and values (e.g. to reach &amp;quot;standard&amp;quot; - see below)&lt;br /&gt;
*** iteration based on real-world publisher/consumer experience&lt;br /&gt;
** '''actions:'''&lt;br /&gt;
*** encourage widespread adoption by all publishers and consumers&lt;br /&gt;
*** evaluate properties published by &amp;amp;lt;2 publishers &lt;br /&gt;
*** evaluate properties consumed by &amp;amp;lt;2 consumers &lt;br /&gt;
**** such properties block advancement from specification to standard. &lt;br /&gt;
**** drop such under-supported property(ies) - insufficient market support to keep them. properties which fail in the real world should be and get dropped (per the simplify [[principle]]). features may be reconsidered for future versions.&lt;br /&gt;
**** or wait for more additional publisher(s)/consumer(s) to support them. up to editor's preference.&lt;br /&gt;
** '''example microformats to advance:'''&lt;br /&gt;
*** [[hReview]] and [[hAtom]] can become &amp;quot;specifications&amp;quot; with a bit of work:&lt;br /&gt;
**** resolve issues, incorporate into spec updates (0.4, 0.2 respectively)&lt;br /&gt;
**** *-examples-in-wild *-implementations pages show publisher(s)/consumer(s) support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before moving to the specifications section, you must have resolved all outstanding issues.&lt;br /&gt;
&lt;br /&gt;
Then, drop a note to microformats-new noting that all issues have been resolved, and encourage discussion and major objections. Since this may elicit additional feedback, allow some time (editor discretion, 3 weeks suggested), for more issues, resolutions, fixes.&lt;br /&gt;
&lt;br /&gt;
If none are forthcoming, suggest moving the microformat to the specifications area. If there is sufficient explicit positive support from the community to do so, then do so. If not, then leave as draft. The absence of feedback is not approval and should be noted instead as a lack of interest.&lt;br /&gt;
&lt;br /&gt;
=== Standard ===&lt;br /&gt;
&lt;br /&gt;
This is a new document stage to represent not only stability, but market acceptance.&lt;br /&gt;
&lt;br /&gt;
Summary of what is a standard:&lt;br /&gt;
&lt;br /&gt;
* '''standard''' - market proven microformat&lt;br /&gt;
** '''preconditions:'''&lt;br /&gt;
*** test suite with 1+ test per feature (e.g. property) (should be easy)&lt;br /&gt;
*** 2+ solid real world publishers as defined above for &amp;quot;specification&amp;quot;&lt;br /&gt;
*** 2+ solid real world consumers as defined above for &amp;quot;specification&amp;quot; that: &lt;br /&gt;
**** pass the test suite tests &lt;br /&gt;
**** interoperably consume microformats published by the publishers.&lt;br /&gt;
*** each property is published by 2+ of those publishers&lt;br /&gt;
*** each property is consumed by 2+ of those consumers&lt;br /&gt;
** '''actions:''' &lt;br /&gt;
*** bump the version # to 1.0 (if it isn't there already)&lt;br /&gt;
** '''means:'''&lt;br /&gt;
*** the market is interoperably publishing and consuming this microformat&lt;br /&gt;
** '''stability:'''&lt;br /&gt;
*** the microformat is considered stable&lt;br /&gt;
*** minor errata expected per real world publishing/consuming experience&lt;br /&gt;
** '''example microformats to advance:'''&lt;br /&gt;
*** [[hCard]] and [[hCalendar]] can become &amp;quot;standards&amp;quot; with a bit of work:&lt;br /&gt;
**** incorporate resolved issues into 1.0.1 releases (use 1.0.1 due to how long we left them a 1.0)&lt;br /&gt;
**** write up remaining missing test cases for a full property (not necessarily value) coverage test suite&lt;br /&gt;
**** drop insufficiently supported properties (e.g. &amp;quot;class&amp;quot;, &amp;quot;key&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== documenting implementation support ====&lt;br /&gt;
Ideally implementation support should be documented with '''test suite results''':&lt;br /&gt;
* '''implementation test suite report''': list all tests and whether an implementation passes them or not&lt;br /&gt;
** these can be added to entries for each implementation in the '''**-implementations''' wiki page&lt;br /&gt;
* '''test suite implementation summary report''': list all tests and implementations that pass each one&lt;br /&gt;
** see the [[value-class-date-time-tests#results|value class pattern date and time test results]] table for an example.&lt;br /&gt;
&lt;br /&gt;
'''Claimed implementation''': it's also useful to document:&lt;br /&gt;
* '''what properties/values/features''' an implementation ''claims'' to support&lt;br /&gt;
** with links to supporting documentation from the implementer's site&lt;br /&gt;
** list properties/values an implementation claims to support on the implementation's entry in the '''**-implementations''' wiki page&lt;br /&gt;
&lt;br /&gt;
=== related issues questions regarding document stages ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''if/when does it make sense to demote a microformat spec to a lower level?'''&lt;br /&gt;
** '''can a standard be undone?''' we haven't seen any examples of this, but it is certainly possible that a sufficient implementations/publishers of a ''standard'' could disappear until it no longer meets requirements, should (and when should) it be demoted to just a ''specification'' or perhaps even a ''draft''?&lt;br /&gt;
** '''from spec back to draft''' it's possible that implementations or publishers may disappear, and thus what used to qualify as a ''specification'' no longer meets the requirements, when should it be demoted explicitly back to a ''draft''?&lt;br /&gt;
** '''undrafts''' e.g. there are plenty of drafts that never got any traction, should we have another category for &amp;quot;uninteresting-draft&amp;quot; that means no one other than the editor(s)/author(s) really cared for it, and thus it isn't a priority for the community.  maybe we could call these &amp;quot;undrafts&amp;quot; - where drafts go when they don't make it to spec after some amount of time.  From there it's probably best to simply use them for more brainstorming, and not encumber any future microformat effort with their legacy. This is likely important to keep the list of drafts as accurate/recent, and will also likely be challenging case-by-case judgment calls.&lt;br /&gt;
*** Perhaps rather than ‘undraft’, which is a slightly horrendous word, or ‘uninteresting’ which carries a subjective judgement, we could instead approach this with a kind of archiving strategy. After some period of non-progress/non-involvement/instability a draft becomes ‘Archived’ (or ‘Archived Draft’) to indicate the stagnation. It could become a regular draft again if someone finds it an interesting base. --[[User:BenWard|BenWard]] 00:48, 20 September 2011 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other Documents ==&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
What about other types of pages on the wiki, like &amp;quot;patterns&amp;quot; (e.g. [[include-pattern]])?&lt;br /&gt;
&lt;br /&gt;
How do those get created?&lt;br /&gt;
&lt;br /&gt;
The short explanation is this: &lt;br /&gt;
&lt;br /&gt;
The patterns are not formats at all.  They do not stand on their own. They are merely documentation of pieces of other formats that are expected to (or are) being reused by other formats.  &lt;br /&gt;
&lt;br /&gt;
The real world examples for includes in particular were documented in the context of [[resume-examples]], [[resume-formats]], and [[resume-brainstorming]] (as noted at the very top of [[include-pattern|the document]]) &amp;quot;Initially developed as part of resume-brainstorming...&amp;quot;  Later, real world examples for reviews were found to need the include pattern as well.&lt;br /&gt;
&lt;br /&gt;
When real world examples for ''multiple'' microformats require the solution of the same or a similar problem, then it is worth exploring the creation of a pattern that solves the problem across microformats.&lt;br /&gt;
&lt;br /&gt;
== Related ==&lt;br /&gt;
* [[process-faq]]&lt;br /&gt;
* [[process-issues]]&lt;br /&gt;
* [[process-brainstorming]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-prefixes&amp;diff=44616</id>
		<title>microformats2-prefixes</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-prefixes&amp;diff=44616"/>
		<updated>2011-09-19T22:05:56Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* prefixes for future consideration */ @benward note about e- vs. p-&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats 2 prefix conventions&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[microformats 2]] uses a small number of prefixes to distinguish microformats 2 class names from other class names.&lt;br /&gt;
&lt;br /&gt;
== motivating causes ==&lt;br /&gt;
As described on the [[microformats 2]] page.&lt;br /&gt;
&lt;br /&gt;
=== distinguishing properties from other classes ===&lt;br /&gt;
Current microformats properties re-use generic terms like &amp;quot;summary&amp;quot;, &amp;quot;photo&amp;quot;, &amp;quot;updated&amp;quot; both for ease of use and understanding.&lt;br /&gt;
&lt;br /&gt;
However, through longer term experience, we've seen sites that accidentally drop (or break) their microformats support (e.g. Upcoming.org, Facebook) because web authors sometimes rewrite all their class names, and either are unaware that microformats were in the page, or couldn't easily distinguish microformats property class names from other site-specific class names.&lt;br /&gt;
&lt;br /&gt;
This issue has been reported by a number of web authors:&lt;br /&gt;
* [http://html5doctor.com/microformats/#comment-10241 Wim's comment on HTML5Doctor] &amp;quot;Authors use classes like 'url' or 'region' all the time ... All sorts of markup might look like a microformat.&amp;quot;&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
There has also been an anecdotal report of a design firm who was not (yet) familiar with microformats seeing the &amp;quot;extra&amp;quot; classes that &amp;quot;that don't seem to be used&amp;quot; (without corresponding CSS rules) and asking if they &amp;quot;can remove them&amp;quot;. By making microformats class names different from generic words, authors unfamiliar with microformats may at least notice such distinction and infer special functionality accordingly.&lt;br /&gt;
&lt;br /&gt;
Thus microformats 2 uses ''prefixes'' for property class names, e.g.:&lt;br /&gt;
* '''p-summary''' instead of ''summary''&lt;br /&gt;
* '''u-photo''' instead of ''photo'' &lt;br /&gt;
* '''dt-updated''' instead of ''updated''&lt;br /&gt;
&lt;br /&gt;
Such prefixing of all microformats class names was first suggested by Scott Isaacs of Microsoft to Tantek on a visit to Microsoft sometime in 2006/2007, but specifically aimed at making microformats easier to parse. At the time the suggestion was rejected since microformats were focused on web authors rather than parsers.&lt;br /&gt;
&lt;br /&gt;
However, since experience has shown that distinguishing property class names is an issue for '''both web authors and parser developers''', this is a key change that microformats 2 is adopting. See the next section for details.&lt;br /&gt;
&lt;br /&gt;
=== existing microformats parsing requirements ===&lt;br /&gt;
A non-trivial number of parser and tools developers have been sufficiently frustrated with some general issues with microformats that they've done the significant extra work to support very different and less friendly alternatives (microdata, RDFa). Based on this real-world data (market behavior), it behooves us to address these general issues with microformats for this constituency.&lt;br /&gt;
&lt;br /&gt;
COMMUNITY and TOOLS (that) USE MICROFORMATS &lt;br /&gt;
* parser / parsing&lt;br /&gt;
* structured&lt;br /&gt;
* getting the data out&lt;br /&gt;
* json - 1:1 mapping&lt;br /&gt;
&lt;br /&gt;
[[parsing]] microformats currently requires&lt;br /&gt;
# a list of root class names of each microformat to be parsed&lt;br /&gt;
# a list of properties for each specific microformats, along with knowledge of the type of each property in order to parse their data from potentially different portions of the HTML markup&lt;br /&gt;
# some number of format-specific specific rules (markup/content optimizations)&lt;br /&gt;
&lt;br /&gt;
This has meant that whenever a new microformat is drafted/specificied/adopted, parsers need to updated to handle it correctly, at a minimum to parse them when inside other microformats and avoid errantly implying properties from one to the other (containment, [[mfo]] problem).&lt;br /&gt;
&lt;br /&gt;
== microformats 2 prefixes ==&lt;br /&gt;
=== naming conventions for generic parsing ===&lt;br /&gt;
There is a fairly simple solution to #1 and #2 from the above list, and we can make progress towards minimizing #3.  In short:&lt;br /&gt;
&lt;br /&gt;
'''Proposal: a set of naming conventions for microformat root class names and properties that make it obvious when:'''&lt;br /&gt;
* a class name represents a microformat root class name&lt;br /&gt;
* a class name represents a microformat property name&lt;br /&gt;
* a class name represents a microformat property that needs special parsing (specific type of property).&lt;br /&gt;
&lt;br /&gt;
In particular - derived from the real world examples of existing proven microformats (rather than any abstraction of what a schema should have)&lt;br /&gt;
* '''&amp;quot;h-*&amp;quot; for root class names''', e.g. &amp;quot;h-card&amp;quot;, &amp;quot;h-event&amp;quot;, &amp;quot;h-entry&amp;quot;&lt;br /&gt;
** The 'h-' prefix is based on the existing microformats naming pattern of starting with 'h'.&lt;br /&gt;
* '''&amp;quot;p-*&amp;quot; for simple (text) properties''', e.g. &amp;quot;p-fn&amp;quot;, &amp;quot;p-summary&amp;quot;&lt;br /&gt;
** vocabulary generic parsing, element text in general, treat certain HTML element/attribute combination as special and use those first, e.g. img/alt, abbr/title.&lt;br /&gt;
** The 'p-' prefix is based on the word &amp;quot;property&amp;quot; starting with 'p'.&lt;br /&gt;
* '''&amp;quot;u-*&amp;quot; for URL properties''', e.g. &amp;quot;u-url&amp;quot;, &amp;quot;u-photo&amp;quot;, &amp;quot;u-logo&amp;quot;&lt;br /&gt;
** special parsing required: prefer a/href, img/src, object/data etc. attributes to element contents.&lt;br /&gt;
** The 'u-' prefix is based on URL/URI starting with the letter 'u', which is the type of most of these related properties.&lt;br /&gt;
* '''&amp;quot;dt-*&amp;quot; for datetime properties''', e.g. &amp;quot;dt-start&amp;quot;, &amp;quot;dt-end&amp;quot;, &amp;quot;dt-bday&amp;quot;&lt;br /&gt;
** special parsing required: [[value-class-pattern]], in particular separate date time value parsing for better human readabillity / DRY balance.&lt;br /&gt;
** The 'dt-' prefix is based on &amp;quot;date time&amp;quot; having the initials &amp;quot;dt&amp;quot; and the preponderance of existing date time properties starting with &amp;quot;dt&amp;quot;, e.g. dtstart, dtend, dtstamp, dtreviewed.&lt;br /&gt;
*** Initially I had proposed &amp;quot;dt-*&amp;quot; but Chris Messina suggested reducing it to &amp;quot;d-*&amp;quot; so that all prefixes were a single letter - made sense.&lt;br /&gt;
*** However, I've noticed that Google+ is using &amp;quot;d-*&amp;quot; class names on [https://plus.google.com/109182513536739786206 profile pages], thus we can't really use 'd-' as a microformats 2 property parsing prefix. [[User:Tantek|Tantek]] 03:00, 22 July 2011 (UTC)&lt;br /&gt;
*** Frankly I also think this provides a simpler transition/education story for existing microformats authors/publishers: &amp;quot;h*&amp;quot; to &amp;quot;h-*&amp;quot;, &amp;quot;dt*&amp;quot; to &amp;quot;dt-*&amp;quot;, url type properties to &amp;quot;u-*&amp;quot;, and &amp;quot;p-*&amp;quot; for all others.&lt;br /&gt;
&lt;br /&gt;
See [[microformats-2-prefixes]] for further thoughts and discussions on these and other class prefixes.&lt;br /&gt;
&lt;br /&gt;
==== prefixes for future consideration ====&lt;br /&gt;
possibly also:&lt;br /&gt;
* '''&amp;quot;e-*&amp;quot; for properties''' where the entire contained element hierarchy is the value, e.g. &amp;quot;e-content&amp;quot; (formerly &amp;quot;entry-content&amp;quot;) for [[hAtom]].&lt;br /&gt;
** unclear if this is necessary in general. and if so, if this is only for hAtom, that's insufficient to justify putting it in the generic syntax.&lt;br /&gt;
** Would be sufficient to have all &amp;lt;code&amp;gt;p-&amp;lt;/code&amp;gt; properties parse the complete content, including any nested mark-up if present, and then implementations to sanitize/run a &amp;lt;code&amp;gt;strip_tags&amp;lt;/code&amp;gt; style function (as per data input best practice) as appropriate. --[[User:BenWard|BenWard]] 22:05, 19 September 2011 (UTC)&lt;br /&gt;
* '''&amp;quot;i-*&amp;quot; for ID properties''', e.g. &amp;quot;i-uid&amp;quot; (if this is the only one, then perhaps we just always re-use &amp;quot;uid&amp;quot; or collapse with &amp;quot;u-*&amp;quot; into &amp;quot;u-id&amp;quot;.)&lt;br /&gt;
** parsing is no different than &amp;quot;u-*&amp;quot; parsing, thus no need to introduce for now.&lt;br /&gt;
* '''&amp;quot;n-*&amp;quot; for numbers''', e.g. &amp;quot;n-rating&amp;quot;, &amp;quot;n-geo&amp;quot;, where the numbers may have different human-readable-friendly and decimal/machine values (e.g. with geo lat/long degrees minutes seconds vs decimal).&lt;br /&gt;
** requires definition of how would different parsing work before worthy of consideration.&lt;br /&gt;
* '''&amp;quot;t-*&amp;quot; for time duration''', e.g. &amp;quot;t-duration&amp;quot; in [[hCalendar]], [[hAudio]], [[hRecipe]] (note also Google's hRecipe extensions &amp;quot;preptime&amp;quot;, &amp;quot;cooktime&amp;quot;, &amp;quot;totaltime&amp;quot;)&lt;br /&gt;
** requires definition of how would different parsing work before worthy of consideration.&lt;br /&gt;
&lt;br /&gt;
==== reserving other prefixes ====&lt;br /&gt;
We should '''reserve all other single-letter-dash prefixes for future use.''' &lt;br /&gt;
&lt;br /&gt;
In practice we have seen little (if any) use of single-letter-dash prefixing of class names by web developers/designers, and thus in practice we think this will have little if any impact/collisions.  Certainly far fewer than existing generic microformat property class names like &amp;quot;title&amp;quot;, &amp;quot;note&amp;quot;, &amp;quot;summary&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== existing single letter class prefixes ====&lt;br /&gt;
We should document existing usage of single/double letter prefixed names:&lt;br /&gt;
** Google+ (e.g. [https://plus.google.com/109182513536739786206 profile page], others) uses:&lt;br /&gt;
*** '''a-'''&lt;br /&gt;
*** '''d-'''&lt;br /&gt;
*** '''g-''', '''gb*'''&lt;br /&gt;
** Yahoo&lt;br /&gt;
*** '''y-'''&lt;br /&gt;
** others? please add alphabetical by company/org name.&lt;br /&gt;
&lt;br /&gt;
== microformats 2 example ==&lt;br /&gt;
Example: taking that simple heading hCard example forward:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;Chris Messina&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As part of microformats 2.0 we would immediately define root class names and property names for all existing microformats and drafts consistent with this naming convention, and require support thereof from all new implementations, as well as strongly encouraging existing implementations to adopt the simplified microformats 2.0 syntax and mechanism. Question: which microformats deserve explicit backward compatibility?&lt;br /&gt;
&lt;br /&gt;
As a community we would continue to use the microformats [[process]] both for researching and determining the need for new microformats, and for naming new microformat property names for maximum re-use and interoperability of a shared vocabulary.&lt;br /&gt;
&lt;br /&gt;
If it turns out we need a new property type in the future, we can use one of the remaining single-letter-prefixes to add it to microformats 2.0. This would require updating of parsers of course, but in practice the number of different types of properties has grown very slowly, and we know from other schema/programming languages that there's always some small limited number of scalar/atomic property types that you need, and using those you can create compound types/objects that represent richer / more complicated types of data.&lt;br /&gt;
&lt;br /&gt;
=== ADVANTAGES ===&lt;br /&gt;
This has numerous advantages:&lt;br /&gt;
* '''better maintainability''' - much more obvious to web authors/designers/publishers which class names are for/from microformats.&lt;br /&gt;
* '''no chance of collision''' - for all practical purposes with existing class names and thus avoiding any need to add more complex CSS style rules to prevent unintended styling effects.&lt;br /&gt;
* '''simpler parsing''' - parsers can now do a simple stream-parse (or in-order DOM tree walk) and parse out '''all''' microformat objects, properties, and values, without having to know anything about any specific microformats.&lt;br /&gt;
* '''separation of syntax and vocabulary''' - by abstracting microformats 2 syntax independent of any vocabulary, it allows and encourages development of shared vocabularies  that can work in alternative syntaxes.&lt;br /&gt;
&lt;br /&gt;
More examples: here is that same heading example with name components:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-fn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with a hyperlink to Chris's URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;p-fn u-url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== COMPATIBILITY ===&lt;br /&gt;
&lt;br /&gt;
microformats 2.0 is backwards compatible in that in permits content authors to markup with both old and new class names for compatibility with old tools.&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Chris Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a microformats 2.0 parser would see the class name &amp;quot;h-card&amp;quot; and imply the one required property from the contents, while a microformats 1.0 parser would find the class name &amp;quot;vcard&amp;quot; and then look for the class name &amp;quot;fn&amp;quot;. no data duplication is required. this is a very important continuing application of the &amp;lt;abbr title=&amp;quot;don't repeat yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; [[principle]].&lt;br /&gt;
&lt;br /&gt;
And the above hyperlinked example with both sets of class names:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;p-fn u-url n fn url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== vendor extensions ==&lt;br /&gt;
(this section was only discussed verbally and not written up during discussions - capturing here as it is topical)&lt;br /&gt;
&lt;br /&gt;
Proprietary extensions to formats have typically been shortlived experimental failures with one big recent exception.&lt;br /&gt;
&lt;br /&gt;
Proprietary or experimental CSS3 property implementations have been very successful.&lt;br /&gt;
&lt;br /&gt;
There has been much use of border radius properties and animations/transitions which use CSS properties with vendor-specific prefixes like:&lt;br /&gt;
&lt;br /&gt;
* -moz-border-radius&lt;br /&gt;
* -webkit-border-radius&lt;br /&gt;
&lt;br /&gt;
etc.&lt;br /&gt;
&lt;br /&gt;
Note that these are merely string '''prefixes''', not bound to any URL, and thus not namespaces in any practical sense of the word.  This is quite an important distinction, as avoiding the need to bind to a URL has made them easier to support and use.&lt;br /&gt;
&lt;br /&gt;
This use of vendor specific CSS properties has in recent years allowed the larger web design/development/implementor communities to experiment and iterate on new CSS features while the features were being developed and standardized.&lt;br /&gt;
&lt;br /&gt;
The benefits have been two-fold:&lt;br /&gt;
* designers have been able to make more attractive sites sooner (at least in some browsers)&lt;br /&gt;
* features have been market / real-world tested before being fully standardized, thus resulting in better features&lt;br /&gt;
&lt;br /&gt;
Implementers have used/introduced &amp;quot;x-&amp;quot; prefixes for IETF MIME/content-types for experimental content-types, MIME parameter extensions, and HTTP header extensions, per RFC 2045 Section 6.3, RFC 3798 section 3.3, and [https://secure.wikimedia.org/wikipedia/en/wiki/List_of_HTTP_header_fields#Common_non-standard_headers Wikipedia: HTTP header fields - non-standard headers] (could use RFC reference instead) respectively, like:&lt;br /&gt;
&lt;br /&gt;
* application/x-latex (per [https://secure.wikimedia.org/wikipedia/en/wiki/Internet_media_type#Type_x Wikipedia Internet media type: Type x])&lt;br /&gt;
* x-spam-score (in email headers)&lt;br /&gt;
* X-Pingback (per [http://en.wikipedia.org/wiki/Pingback Wikipedia:Pingback])&lt;br /&gt;
&lt;br /&gt;
Some standard types started as experimental &amp;quot;x-&amp;quot; types, thus demonstrating this experiment first, standardize later approach has worked for at least some cases:&lt;br /&gt;
&lt;br /&gt;
* image/x-png (standardized as image/png, both per [http://tools.ietf.org/html/rfc2083 RFC2083])&lt;br /&gt;
&lt;br /&gt;
There have been times when specific sites have wanted to extend microformats beyond what the set of properties in the microformat, and currently lack any '''experimental''' way to do so - to try and see if a feature (or even a whole format) is interesting in the real world before bothering to pursue researching and walking it through the microformats process.  Thus:&lt;br /&gt;
&lt;br /&gt;
'''Proposal:'''&lt;br /&gt;
* '*-x-' + '-' + meaningful name for root and property class names&lt;br /&gt;
** where &amp;quot;*&amp;quot; indicates the single-character-prefix as defined above&lt;br /&gt;
** where &amp;quot;x&amp;quot; indicates a literal 'x' for an experimental extension OR&lt;br /&gt;
** OR &amp;quot;x&amp;quot; indicates a vendor prefix (more than one character, e.g. like CSS vendor extension abbreviations, or some stock symbols, avoiding first words/phrases/abbreviations of microformats properties like dt-)&lt;br /&gt;
** e.g.&lt;br /&gt;
** &amp;quot;h-bigco-one-ring&amp;quot; - a hypothetical &amp;quot;bigco&amp;quot; vendor-specific &amp;quot;onering&amp;quot; microformat root class name.&lt;br /&gt;
** &amp;quot;p-goog-preptime&amp;quot; - to represent [http://www.google.com/support/webmasters/bin/answer.py?answer=173379 Google's &amp;quot;preptime&amp;quot; property extension] to [[hRecipe]] (aside: &amp;quot;duration&amp;quot; may be another property type to consider separate from &amp;quot;datetime&amp;quot; as it may be subject to different parsing rules.)&lt;br /&gt;
** &amp;quot;p-x-prep-time&amp;quot; - a possible experimental property name to be added to hRecipe upon consideration/documentation of real-world usage/uptake.&lt;br /&gt;
&lt;br /&gt;
Background - this proposal is a composition of the following (at least somewhat) successful vendor extension syntaxes&lt;br /&gt;
* [http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords CSS 2.1 4.1.2.1 Vendor-specific extensions]&lt;br /&gt;
* IETF MIME/content-type &amp;quot;x-*&amp;quot; extensions per RFC 2045 Section 6.3. [http://en.wikipedia.org/wiki/Internet_media_type]&lt;br /&gt;
* IETF MIME experimental fields (e.g. x-spam-score)&lt;br /&gt;
* HTTP header extensions (e.g. x-pingback)&lt;br /&gt;
* note also [http://www.mnot.net/blog/2009/02/18/x- some critical thoughts from mnot]&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
=== Hungarian prefixing issues ===&lt;br /&gt;
Raised by [[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 proposes using an explicit &amp;lt;code&amp;gt;[a-z]-&amp;lt;/code&amp;gt; prefix on properties, to differentiate them from other uses of the class attribute, and identify them as microformat properties, such that they can be parsed generically.&lt;br /&gt;
&lt;br /&gt;
* The differentiation use case is supported by anecdotal evidence of sites (such as Facebook, Twitter, Yahoo) removing microformats or breaking objects in page edits. The addition of a prefix assists self-documentation of code.&lt;br /&gt;
* The generic parsing use case is supported by Google Rich Snippets, Yahoo Search Monkey, and extensible plugins like Operator and the Firefox microformats parser. Although these extract microformats from the page, they are intermediate systems between the page content and the actual interpretation of the data. They need to parse all objects from a page, and then another developer or application will interpret some of them into something else.&lt;br /&gt;
&lt;br /&gt;
(Note: the theoretical assertion &amp;quot;they need to parse all objects from a page&amp;quot; is not actually backed by *any* existing use of microformats/microdata/RDFa parsing - *none* of those parse &amp;quot;all objects from a page&amp;quot; if you consider every markup element an &amp;quot;object&amp;quot; - rather, one of the strength of microformats (mimicked by the others) is that the publisher is able to markup *just* the data to be extracted, rather than perhaps purely &amp;quot;presentational&amp;quot; content, ads, UI widgets etc. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC) )&lt;br /&gt;
&lt;br /&gt;
The µf2 proposal goes further, though, into a small vocabulary of [http://en.wikipedia.org/wiki/Hungarian_notation Hungarian] prefixes of properties based on data type. This increases the level of understanding required to read microformats, and reduces the benefit of all microformat properties having a consistent identifying prefix.&lt;br /&gt;
&lt;br /&gt;
(Debatable assertion:&amp;quot;increases the level of understanding required to read microformats&amp;quot; - how? In microformats 2.0, authors/developers know that any single-letter-and-hyphen prefixed class name is for microformats 2.0, in contrast to today - developers have consistently given feedback that's hard to tell which generic class names (other than h* names) are microformat related and which are not. As for specific prefixes, &amp;quot;h-*&amp;quot; is special and follows the pattern of existing microformats. p = generic (p)roperty, and the other prefixes have trivial mnemonics as well, d for (d)atetimes etc. (so far, hopefully we can keep that up). -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC) )&lt;br /&gt;
&lt;br /&gt;
Hungarian notation itself is controversial amongst programmers. &lt;br /&gt;
Plenty find it uglifies their code, can be a cause of confusion (especially when very-short prefixes are used, or esoteric types, or where the declared set of types differs from the available types in other programming languages.) Others support its benefits to type identification.&lt;br /&gt;
&lt;br /&gt;
(Programmers are not the priority here, rather, designers/authors/publishers are. We design microformats for them first as they're the common use case, and we should avoid making statements that seem to imply any priority for the aesthetic preferences of programmers. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC))&lt;br /&gt;
&lt;br /&gt;
Critically, however, there is no clear indication that either of the above use cases requires types to be strongly identified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* For identifying µf in pages, a differentiator is required from regular classnames. There is no evidence of further requirement to differentiate between properties beyond their name (and existing criticisms of Hungarian notation suggest it can harm understandability.)&lt;br /&gt;
** There is such evidence, and perhaps thus this would be a good FAQ topic. The derivation is quite simple - it comes directly from minimally affecting existing markup, and maximally using existing semantic information. Example of special purpose parsing, URL-like properties use the value of the 'href' (or equivalent) attribute because that's where that data already is in pages. Similarly with dates and datetimes - special parsing rules for that data type have permitted us to design the [[value-class-pattern]] to take advantage of specially parsing date and time separation. By re-using data *where publishers already put it, including attributes vs inline* we minimize the risk of data drift. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
** Additionally, this special type-specific parsing of microformats properties conveys microformats advantages of markup brevity that other syntaxes lack. E.g. you can convey *multiple* properties and values from a single existing element, e.g. the *very* common real-world pattern &amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;a href=&amp;quot;http://example.com/user&amp;quot;&amp;gt;User Name&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt; is minimally marked up as &amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/user&amp;quot;&amp;gt;User Name&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* For generic parsing, there is no requirement that datatypes be established at extraction time. Data types will instead be applied by the developers of apps and widgets that build on the generic parsers.&lt;br /&gt;
** There are requirements based on experience with actual markup. In order to support the patterns of where content publishers put the data we want to extract, we have determined (based on those publishing patterns) a few different ways (types) of parsing this data. This is all captured in the [[hcard-parsing]] property-specific parsing rules each of which were added one at a time as Brian Suda and myself encountered real world sites wanting to use [[hCard]] but not wanting to have to rewrite their markup (adding one span and some class names was about the limit, moving tags/attributes around was a showstopper in many/most cases), and each of the microformats 2.0 &amp;quot;types&amp;quot; are directly derived from such special purpose data/type parsing across *multiple* microformats. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
* A counter argument may be that special properties in microformats—such as URLs, or images—need to be identified because in microformats it is common to parse an attribute (href, or src) rather than inner text of an element for these properties. However, in the context of extracting and then interpreting HTML in other contexts this is insufficient: For example, though an image only exists as a single property in vcard, in HTML it is both a URL to a resource ''and'' and text string (alt) representing an accessible fallback. A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context. Likewise, an application interpreting a URL may also consider using the original inner text as an inferred label. Both pieces of data are useful, and a generic parser should not discard elemental semantics at the extraction level.&lt;br /&gt;
** It's not just &amp;quot;*common* to parse an attribute rather than inner text of an element for these properties&amp;quot; - it is the vast overwhelming majority - if not all - such cases!&lt;br /&gt;
** One misconception: &amp;quot;image only exists as a single property&amp;quot;. No, there is both 'photo' and 'logo'. The 'url' and 'sound' properties are also of type 'url'. For all of these, when parsing an &amp;quot;object&amp;quot; element, you must use the 'data' attribute first for example. hCalendar has &amp;quot;attachment&amp;quot; as well. Etc.&lt;br /&gt;
** Theoretical assertion: &amp;quot;A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context.&amp;quot; Why? There is no existing nor demonstrated use case for this requirement, even across other formats. While I agree it &amp;quot;might be nice&amp;quot; to develop a new &amp;quot;structured image&amp;quot; type - that's brand new work (deserving of research per the [[process]] etc.), and not a good source of reasoning to reject existing working patterns. I reject blocking microformats 2.0 on an as-yet-to-be-researched-enhancement. This is certainly a case where &amp;quot;better&amp;quot; is an enemy of the good.&lt;br /&gt;
** Theoretical assertion: &amp;quot;a generic parser should not discard elemental semantics at the extraction level&amp;quot; - already does for other syntaxes like both microdata and RDFa - so clearly this is not a reasonable &amp;quot;should not&amp;quot; assertion (and thus unnecessary) for development of a minimally competitive syntax. RDFa kind of cheats by overloading the 'rel' attribute in attempt to solve the name+url case as mentioned above, but that's only two types - and existing real world use of microformats has demonstrated utility of a few more.  -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given this, hungarian prefixes are of no benefit to parsers (and may in fact harm applications down the chain if parsing is prematurely strict.) It would be sufficient then not to concern embedding data types in property names, and instead settle on one single property prefix to differentiate all properties consistently. This would reduce the prefixes to just 3:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; would indicates a root class name. An ‘object in HTML’.&lt;br /&gt;
* &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; would indicates a property within an object.&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; would indicates an experimental extension to an object.&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
The primary benefit of type-specific parsing is *not* for parsers, but rather, publishers (who we still hold in higher priority than parsers).&lt;br /&gt;
&lt;br /&gt;
I will also note that *each* of the type-specific parsing methods in [[hcard-parsing]] was added both conservatively, reluctantly, and only when it became clear that such type-specific publishing patterns existing across *multiple* sites that would otherwise be unable to change their markup to work with microformats (Yes, I'm wishing now that I better documented exactly *which* sites, precisely *when*, but like many startups, early on we didn't exactly know how much to document vs get things done - frankly I think we documented far more than any other comparable such efforts, e.g. we managed to at least capture/grow both an explicit [[process]] and [[principles]] in *far* greater detail than anything remotely comparable either before microformats or since!). The type-specific parsing features are certainly not overdesigned, on the contrary they've *slowly* evolved, adapting to real world data on the web.&lt;br /&gt;
&lt;br /&gt;
While per the [[simplicity]] principle, I would actually *strongly* prefer to only have the three prefixes given above, or actually just *two* (I started with just two for the design of microformats 2.0 actually, just &amp;quot;h-*&amp;quot; and &amp;quot;p-*&amp;quot;), doing so would be a step *backwards* in terms of the adaptability of microformats to existing markup, and that's IMHO an unacceptable barrier, and  a sufficiently high barrier to hurt the adoption/applicability of microformats 2.0. &lt;br /&gt;
&lt;br /&gt;
(Aside: In addition, note that you still need h-x-* for experimental objects, and thus it's *simpler* to simply have *both* h-x-* and p-x-* rather than add x-*. Alternatively x-h-* and x-p-* is no better, in some ways worse, in that object vs. property is a more important distinction for parsers than established vs experimental, especially if/when an experimental property (or object) may be adopted. Also, mild precdent: PNG started with image/x-png, not x-image/png.).&lt;br /&gt;
&lt;br /&gt;
To put it in a positive way, type-specific parsing conveys microformats a publisher-markup-density (and re-use) advantage which neither microdata nor RDFa have, and it would behoove us to *keep* this significant real-world advantage as we evolve microformats.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-prefixes]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2&amp;diff=43816</id>
		<title>microformats2</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2&amp;diff=43816"/>
		<updated>2011-04-11T01:16:54Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* VENDOR EXTENSIONS */ Added new section against Hungarian notation, proposes reduced number of prefixes (3) for generic extraction and class usage differentiation only.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2004: In early February microformats were introduced as a concept at eTech, and in September [[hCard]] and [[hCalendar]] were proposed at FOO Camp.&lt;br /&gt;
&lt;br /&gt;
2010:&lt;br /&gt;
* 34% of webdevs use microformats ([http://www.webdirections.org/sotw10/markup/#semantics 2010 State of Web Development survey])&lt;br /&gt;
* 1.88 billion hCards (per [[Yahoo]] SearchMonkey)&lt;br /&gt;
* 36 million hCalendar events (ibid)&lt;br /&gt;
&lt;br /&gt;
* XFN -&amp;gt; Social Graph API -&amp;gt; Web as Social Network / Address Book&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AUTHORS and PUBLISHING ===&lt;br /&gt;
&lt;br /&gt;
'''How can we make it easier for authors to publish microformats?'''&lt;br /&gt;
&lt;br /&gt;
Currently the simplest hCard:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;&lt;br /&gt;
    Chris Messina&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
requires 2 elements (nested, with perhaps at least one being pre-existing), and 2 class names&lt;br /&gt;
&lt;br /&gt;
Web authors/designers are used to the simplicity of most HTML tags, e.g. to mark up a heading:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Chris Messina&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
requires just 1 element.&lt;br /&gt;
&lt;br /&gt;
'''How can we make microformats just as easy?'''&lt;br /&gt;
&lt;br /&gt;
'''Proposal: allow root class name only.'''&lt;br /&gt;
&lt;br /&gt;
This would enable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;vcard&amp;quot;&amp;gt;Chris Messina&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
requiring only 1 class name for the simplest case.&lt;br /&gt;
&lt;br /&gt;
'''Can we do even better?'''&lt;br /&gt;
&lt;br /&gt;
One of the most common questions asked about hCard is:&lt;br /&gt;
&lt;br /&gt;
[[hcard-faq#Why_does_hCard_use_vcard_as_the_root_class_name|Why does hCard use vcard as the root class name?]]&lt;br /&gt;
&lt;br /&gt;
This slight inconsistency between the name of the format and the name of the root class name consistently causes confusion in a large percentage of newcomers to microformats.&lt;br /&gt;
* Looks like a typo (just one letter difference)&lt;br /&gt;
* Ambiguity in discussions, e.g. put &amp;quot;vcard&amp;quot; in your HTML - meaning, class name, or a link to a .vcf file?&lt;br /&gt;
* Extra bit to remember when marking up a microformat&lt;br /&gt;
** in contrast to [[hReview]], [[hListing]], [[hRecipe]], etc. which all have root class name same as name of microformat (lowercased).&lt;br /&gt;
&lt;br /&gt;
Though in microformats we believe very strongly in the [[principle]] of [[reuse]], we have to admit that in this case experience/evidence has shown that this may be a case where we re-used something too far beyond it's original meaning. Thus:&lt;br /&gt;
&lt;br /&gt;
'''Proposal: use root class name &amp;quot;hcard&amp;quot; instead of &amp;quot;vcard&amp;quot; for future hCards.'''&lt;br /&gt;
&lt;br /&gt;
This would result in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;hcard&amp;quot;&amp;gt;Chris Messina&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
making the simple case even simpler:&lt;br /&gt;
&lt;br /&gt;
Just 1 additional class name, named the same as the format you're adding.  Think hCard, markup class=&amp;quot;hcard&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It's very important for the simple case to be as simple as possible, to enable the maximum number of people to get started with minimum effort.&lt;br /&gt;
&lt;br /&gt;
From there on, it's ok to require incremental effort for incremental return.&lt;br /&gt;
&lt;br /&gt;
E.g. to add any addition information about a person, add explicit property names.&lt;br /&gt;
&lt;br /&gt;
'''How does this simple root-only case work?'''&lt;br /&gt;
&lt;br /&gt;
* root class name reflects name of the microformat&lt;br /&gt;
* every microformat must require at most 1 property (preferably 0)&lt;br /&gt;
** admit that requiring a field in an application just results in noise (the 90210 problem - apps which require zip code get lots of false 90210 entries), and specify that any application use cases which appear to &amp;quot;require&amp;quot; specific properties must instead define how to imply sensible defaults for them.&lt;br /&gt;
* when only a root class name is specified, imply the entire text contents of the element as the value of the primary property of the microformat. e.g.&lt;br /&gt;
** &amp;quot;hcard&amp;quot; implies &amp;quot;fn&amp;quot;&lt;br /&gt;
** hcalendar event - &amp;quot;hevent&amp;quot; - implies &amp;quot;summary&amp;quot;&lt;br /&gt;
** &amp;quot;hreview&amp;quot; implies &amp;quot;summary&amp;quot;&lt;br /&gt;
** &amp;quot;hentry&amp;quot; implies &amp;quot;entry-summary&amp;quot; (perhaps collapse into &amp;quot;summary&amp;quot; - in practice they're not sufficiently semantically distinct to require separate property names)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional simplifications ====&lt;br /&gt;
&lt;br /&gt;
'''What more can we simplify about microformats?'''&lt;br /&gt;
&lt;br /&gt;
Numerous individuals have provided the feedback that whenever there is more than one level of hierarchy in a microformat, many (most?) developers get confused - in particular Kavi Goel of Google / Rich Snippets provided this feedback at a microformats dinner.  Thus depending on multiple levels of hierarchy is likely resulting in a loss of authorability, perhaps even accuracy as confusion undoubtedly leads to more errors. Thus:&lt;br /&gt;
&lt;br /&gt;
'''Proposal: simplify all microformats to flat sets of properties. '''&lt;br /&gt;
&lt;br /&gt;
What this means:&lt;br /&gt;
* all microformats are simply an object with a set of properties with values.&lt;br /&gt;
* no more subproperties- drop the notion of subproperties.&lt;br /&gt;
* use composition of multiple microformats for any further hierarchy, e.g. the &amp;quot;location&amp;quot; of an hCalendar even can be an hCard, or the &amp;quot;agent&amp;quot; of one hCard can be another hCard.&lt;br /&gt;
&lt;br /&gt;
For example for hCard this would mean the following specific changes to keep relevant functionality:&lt;br /&gt;
* drop &amp;quot;n&amp;quot;, promote all &amp;quot;n&amp;quot; subproperties to full properties&lt;br /&gt;
** given-name, family-name, additional-name, honorific-prefix, honorific-suffix&lt;br /&gt;
* treat &amp;quot;geo&amp;quot; as a nested microformat&lt;br /&gt;
* treat &amp;quot;adr&amp;quot; as a nested microformat (what to do about adr's &amp;quot;type&amp;quot;?)&lt;br /&gt;
* treat &amp;quot;org&amp;quot; as a flat string and drop &amp;quot;organization-name&amp;quot; and &amp;quot;organization-unit&amp;quot; (in practice rarely used, also not revealed or ignored in contact management user interfaces - e.g. Address Book)&lt;br /&gt;
&lt;br /&gt;
Example: add a middle initial to the previous example Chris Messina's name, and markup each name component:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;hcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
# use of an explicit span with &amp;quot;fn&amp;quot; to markup his entire formatted name&lt;br /&gt;
# use of the abbr element to explicitly indicate the semantic that &amp;quot;R.&amp;quot; is merely an abbreviation for his additional-name.&lt;br /&gt;
&lt;br /&gt;
=== COMMUNITY and TOOLS  ===&lt;br /&gt;
(that) USE MICROFORMATS &lt;br /&gt;
* parser / parsing&lt;br /&gt;
* structured&lt;br /&gt;
* getting the data out&lt;br /&gt;
* json - 1:1 mapping&lt;br /&gt;
&lt;br /&gt;
[[parsing]] microformats currently requires&lt;br /&gt;
# a list of root class names of each microformat to be parsed&lt;br /&gt;
# a list of properties for each specific microformats, along with knowledge of the type of each property in order to parse their data from potentially different portions of the HTML markup&lt;br /&gt;
# some number of format-specific specific rules (markup/content optimizations)&lt;br /&gt;
&lt;br /&gt;
This has meant that whenever a new microformat is drafted/specificied/adopted, parsers need to updated to handle it correctly, at a minimum to parse them when inside other microformats and avoid errantly implying properties from one to the other (containment, [[mfo]] problem).&lt;br /&gt;
&lt;br /&gt;
I think there is a fairly simple solution to #1 and #2 from the above list, and we can make progress towards minimizing #3.  In short:&lt;br /&gt;
&lt;br /&gt;
'''Proposal: a set of naming conventions for microformat root class names and properties that make it obvious when:'''&lt;br /&gt;
* a class name represents a microformat root class name&lt;br /&gt;
* a class name represents a microformat property name&lt;br /&gt;
* a class name represents a specific type of microformats property&lt;br /&gt;
&lt;br /&gt;
In particular - derived from the real world examples of existing proven microformats (rather than any abstraction of what a schema should have)&lt;br /&gt;
* '''&amp;quot;h-*&amp;quot; for root class names''', e.g. &amp;quot;h-card&amp;quot;, &amp;quot;h-event&amp;quot;, &amp;quot;h-entry&amp;quot;&lt;br /&gt;
* '''&amp;quot;p-*&amp;quot; for simple (text) properties''', e.g. &amp;quot;p-fn&amp;quot;, &amp;quot;p-summary&amp;quot;&lt;br /&gt;
* '''&amp;quot;u-*&amp;quot; for URL properties''', e.g. &amp;quot;u-url&amp;quot;, &amp;quot;u-photo&amp;quot;, &amp;quot;u-logo&amp;quot;&lt;br /&gt;
* '''&amp;quot;d-*&amp;quot; for datetime properties''', e.g. &amp;quot;d-start&amp;quot;, &amp;quot;d-end&amp;quot;, &amp;quot;d-bday&amp;quot;  (initially I had proposed &amp;quot;dt-*&amp;quot; but Chris Messina suggested reducing it to &amp;quot;d-*&amp;quot; so that all prefixes were a single letter - made sense).&lt;br /&gt;
* '''&amp;quot;n-*&amp;quot; for (one or more) numbers''', e.g. &amp;quot;n-rating&amp;quot;, &amp;quot;n-geo&amp;quot;, leaving the semantics of more than one number up to specific format. e.g. for an &amp;quot;n-rating&amp;quot; inside an &amp;quot;h-review&amp;quot;, the first number would presumably be the rating value, when only two numbers the second would be the &amp;quot;best&amp;quot; value (e.g. rated &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;n-rating&amp;quot;&amp;amp;gt;3 out of 4&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;), when three numbers the second would be the &amp;quot;worst&amp;quot; and the third would be the &amp;quot;best&amp;quot; (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;n-rating&amp;quot;&amp;amp;gt;7.5 out of 1 to 10&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;).  similarly &amp;quot;n-geo&amp;quot; would specify the first number to be the latitude and the second to be the longitude.&lt;br /&gt;
possibly also:&lt;br /&gt;
* '''&amp;quot;e-*&amp;quot; for properties''' where the entire contained element hierarchy is the value, e.g. &amp;quot;e-content&amp;quot; (formerly &amp;quot;entry-content&amp;quot;) for [[hAtom]].&lt;br /&gt;
* '''&amp;quot;i-*&amp;quot; for ID properties''', e.g. &amp;quot;i-uid&amp;quot; (if this is the only one, then perhaps we just always re-use &amp;quot;uid&amp;quot; or collapse with &amp;quot;u-*&amp;quot; into &amp;quot;u-id&amp;quot;.)&lt;br /&gt;
* '''&amp;quot;t-*&amp;quot; for time duration''', e.g. &amp;quot;t-duration&amp;quot; in [[hCalendar]], [[hAudio]], [[hRecipe]] (note also Google's hRecipe extensions &amp;quot;preptime&amp;quot;, &amp;quot;cooktime&amp;quot;, &amp;quot;totaltime&amp;quot;)&lt;br /&gt;
and:&lt;br /&gt;
* '''reserve all other single-letter-dash prefixes for future use.'''  In practice we have seen very little (if any) use of single-letter-dash prefixing of class names by web developers/designers, and thus in practice we think this will have little if any impact/collisions.  Certainly far fewer than existing generic microformat property class names like &amp;quot;title&amp;quot;, &amp;quot;note&amp;quot;, &amp;quot;summary&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Example: taking that simple heading hCard example forward:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;Chris Messina&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As part of microformats 2.0 we would immediately define root class names and property names for all existing microformats and drafts consistent with this naming convention, and require support thereof from all new implementations, as well as strongly encouraging existing implementations to adopt the simplified microformats 2.0 syntax and mechanism.&lt;br /&gt;
&lt;br /&gt;
As a community we would continue to use the microformats [[process]] both for researching and determining the need for new microformats, and for naming new microformat property names for maximum re-use and interoperability of a shared vocabulary.&lt;br /&gt;
&lt;br /&gt;
If it turns out we need a new property type in the future, we can use one of the remaining single-letter-prefixes to add it to microformats 2.0. This would require updating of parsers of course, but in practice the number of different types of properties has grown very slowly, and we know from other schema/programming languages that there's always some small limited number of scalar/atomic property types that you need, and using those you can create compound types/objects that represent richer / more complicated types of data.&lt;br /&gt;
&lt;br /&gt;
==== ADVANTAGES ====&lt;br /&gt;
This has numerous advantages:&lt;br /&gt;
* '''better maintainability''' - much more obvious to web authors/designers/publishers which class names are for/from microformats.&lt;br /&gt;
* '''no chance of collision''' - for all practical purposes with existing class names and thus avoiding any need to add more complex CSS style rules to prevent unintended styling effects.&lt;br /&gt;
* '''simple universal parsing''' - parsers can now do a simple stream-parse (or in-order DOM tree walk) and parse out '''all''' microformat objects, properties, and values, without having to know anything about any specific microformats.&lt;br /&gt;
&lt;br /&gt;
More examples: here is that same heading example with name components:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-fn&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with a hyperlink to Chris's URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;p-fn u-url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== COMPATIBILITY ====&lt;br /&gt;
&lt;br /&gt;
microformats 2.0 is backwards compatible in that in permits content authors to markup with both old and new class names for compatibility with old tools.&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Chris Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a microformats 2.0 parser would see the class name &amp;quot;h-card&amp;quot; and imply the one required property from the contents, while a microformats 1.0 parser would find the class name &amp;quot;vcard&amp;quot; and then look for the class name &amp;quot;fn&amp;quot;. no data duplication is required. this is a very important continuing application of the &amp;lt;abbr title=&amp;quot;don't repeat yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; [[principle]].&lt;br /&gt;
&lt;br /&gt;
And the above hyperlinked example with both sets of class names:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;p-fn u-url n fn url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== VENDOR EXTENSIONS ====&lt;br /&gt;
&lt;br /&gt;
(this section was only discussed verbally and not written up during discussions - capturing here as it is topical)&lt;br /&gt;
&lt;br /&gt;
Proprietary extensions to formats have typically been shortlived experimental failures with one big recent exception.&lt;br /&gt;
&lt;br /&gt;
Proprietary or experimental CSS3 property implementations have been very successful.&lt;br /&gt;
&lt;br /&gt;
There has been much use of border radius properties and animations/transitions which use CSS properties with vendor-specific prefixes like:&lt;br /&gt;
&lt;br /&gt;
* -moz-border-radius&lt;br /&gt;
* -webkit-border-radius&lt;br /&gt;
&lt;br /&gt;
etc.&lt;br /&gt;
&lt;br /&gt;
Note that these are merely string '''prefixes''', not bound to any URL, and thus not namespaces in any practical sense of the word.  This is quite an important distinction, as avoiding the need to bind to a URL has made them easier to support and use.&lt;br /&gt;
&lt;br /&gt;
This use of vendor specific CSS properties has in recent years allowed the larger web design/development/implementor communities to experiment and iterate on new CSS features while the features were being developed and standardized.&lt;br /&gt;
&lt;br /&gt;
The benefits have been two-fold:&lt;br /&gt;
* designers have been able to make more attractive sites sooner (at least in some browsers)&lt;br /&gt;
* features have been market / real-world tested before being fully standardized, thus resulting in better features&lt;br /&gt;
&lt;br /&gt;
Implementers have used/introduced &amp;quot;x-&amp;quot; prefixes for IETF MIME/content-types for experimental content-types, MIME parameter extensions, and HTTP header extensions, per RFC 2045 Section 6.3, RFC 3798 section 3.3, and [https://secure.wikimedia.org/wikipedia/en/wiki/List_of_HTTP_header_fields#Common_non-standard_headers Wikipedia: HTTP header fields - non-standard headers] (could use RFC reference instead) respectively, like:&lt;br /&gt;
&lt;br /&gt;
* application/x-latex (per [https://secure.wikimedia.org/wikipedia/en/wiki/Internet_media_type#Type_x Wikipedia Internet media type: Type x])&lt;br /&gt;
* x-spam-score (in email headers)&lt;br /&gt;
* X-Pingback (per [http://en.wikipedia.org/wiki/Pingback Wikipedia:Pingback])&lt;br /&gt;
&lt;br /&gt;
Some standard types started as experimental &amp;quot;x-&amp;quot; types, thus demonstrating this experiment first, standardize later approach has worked for at least some cases:&lt;br /&gt;
&lt;br /&gt;
* image/x-png (standardized as image/png, both per [http://tools.ietf.org/html/rfc2083 RFC2083])&lt;br /&gt;
&lt;br /&gt;
There have been times when specific sites have wanted to extend microformats beyond what the set of properties in the microformat, and currently lack any '''experimental''' way to do so - to try and see if a feature (or even a whole format) is interesting in the real world before bothering to pursue researching and walking it through the microformats process.  Thus:&lt;br /&gt;
&lt;br /&gt;
'''Proposal:'''&lt;br /&gt;
* '*-x-' + '-' + meaningful name for root and property class names&lt;br /&gt;
** where &amp;quot;*&amp;quot; indicates the single-character-prefix as defined above&lt;br /&gt;
** where &amp;quot;x&amp;quot; indicates a literal 'x' for an experimental extension OR&lt;br /&gt;
** OR &amp;quot;x&amp;quot; indicates a vendor prefix (more than one character, e.g. like CSS vendor extension abbreviations, or some stock symbols, avoiding first words/phrases/abbreviations of microformats properties like dt-)&lt;br /&gt;
** e.g.&lt;br /&gt;
** &amp;quot;h-bigco-one-ring&amp;quot; - a hypothetical &amp;quot;bigco&amp;quot; vendor-specific &amp;quot;onering&amp;quot; microformat root class name.&lt;br /&gt;
** &amp;quot;p-goog-preptime&amp;quot; - to represent [http://www.google.com/support/webmasters/bin/answer.py?answer=173379 Google's &amp;quot;preptime&amp;quot; property extension] to [[hRecipe]] (aside: &amp;quot;duration&amp;quot; may be another property type to consider separate from &amp;quot;datetime&amp;quot; as it may be subject to different parsing rules.)&lt;br /&gt;
** &amp;quot;p-x-prep-time&amp;quot; - a possible experimental property name to be added to hRecipe upon consideration/documentation of real-world usage/uptake.&lt;br /&gt;
&lt;br /&gt;
Background - this proposal is a composition of the following (at least somewhat) successful vendor extension syntaxes&lt;br /&gt;
* [http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords CSS 2.1 4.1.2.1 Vendor-specific extensions]&lt;br /&gt;
* IETF MIME/content-type &amp;quot;x-*&amp;quot; extensions per RFC 2045 Section 6.3. [http://en.wikipedia.org/wiki/Internet_media_type]&lt;br /&gt;
* IETF MIME experimental fields (e.g. x-spam-score)&lt;br /&gt;
* HTTP header extensions (e.g. x-pingback)&lt;br /&gt;
&lt;br /&gt;
==== FURTHER THOUGHTS REGARDING HUNGARIAN PREFIXING ====&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 proposes using an explicit &amp;lt;code&amp;gt;[a-z]-&amp;lt;/code&amp;gt; prefix on properties, to differentiate them from other uses of the class attribute, and identify them as microformat properties, such that they can be parsed generically.&lt;br /&gt;
&lt;br /&gt;
* The differentiation use case is supported by anecdotal evidence of sites (such as Facebook, Twitter, Yahoo) removing microformats or breaking objects in page edits. The addition of a prefix assists self-documentation of code.&lt;br /&gt;
* The generic parsing use case is supported by Google Rich Snippets, Yahoo Search Monkey, and extensible plugins like Operator and the Firefox microformats parser. Although these extract microformats from the page, they are intermediate systems between the page content and the actual interpretation of the data. They need to parse all objects from a page, and then another developer or application will interpret some of them into something else.&lt;br /&gt;
&lt;br /&gt;
The µf2 proposal goes further, though, into a small vocabulary of [http://en.wikipedia.org/wiki/Hungarian_notation Hungarian] prefixes of properties based on data type. This increases the level of understanding required to read microformats, and reduces the benefit of all microformat properties having a consistent identifying prefix.&lt;br /&gt;
&lt;br /&gt;
Hungarian notation itself is controversial amongst programmers. Plenty find it uglifies their code, can be a cause of confusion (especially when very-short prefixes are used, or esoteric types, or where the declared set of types differs from the available types in other programming languages.) Others support its benefits to type identification.&lt;br /&gt;
&lt;br /&gt;
Critically, however, there is no clear indication that either of the above use cases requires types to be strongly identified.&lt;br /&gt;
&lt;br /&gt;
* For identifying µf in pages, a differentiator is required from regular classnames. There is no evidence of further requirement to differentiate between properties beyond their name (and existing criticisms of Hungarian notation suggest it can harm understandability.)&lt;br /&gt;
* For generic parsing, there is no requirement that datatypes be established at extraction time. Data types will instead be applied by the developers of apps and widgets that build on the generic parsers.&lt;br /&gt;
* A counter argument may be that special properties in microformats—such as URLs, or images—need to be identified because in microformats it is common to parse an attribute (href, or src) rather than inner text of an element for these properties. However, in the context of extracting and then interpreting HTML in other contexts this is insufficient: For example, though an image only exists as a single property in vcard, in HTML it is both a URL to a resource ''and'' and text string (alt) representing an accessible fallback. A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context. Likewise, an application interpreting a URL may also consider using the original inner text as an inferred label. Both pieces of data are useful, and a generic parser should not discard elemental semantics at the extraction level.&lt;br /&gt;
&lt;br /&gt;
Given this, hungarian prefixes are of no benefit to parsers (and may in fact harm applications down the chain if parsing is prematurely strict.) It would be sufficient then not to concern embedding data types in property names, and instead settle on one single property prefix to differentiate all properties consistently. This would reduce the prefixes to just 3:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; would indicates a root class name. An ‘object in HTML’.&lt;br /&gt;
* &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; would indicates a property within an object.&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; would indicates an experimental extension to an object.&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== USERS ===&lt;br /&gt;
Need more tools and interfaces that:&lt;br /&gt;
* publish&lt;br /&gt;
* copy/paste&lt;br /&gt;
* right-click on a microformat&lt;br /&gt;
* share&lt;br /&gt;
* search results&lt;br /&gt;
&lt;br /&gt;
discussed some existing like: [[H2VX]] converts hCard to vCard, hCalendar to iCalendar&lt;br /&gt;
&lt;br /&gt;
how would we re-implement Live Clipboard today, making it easier for publishers and developers?&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=events/2011-03-sxsw&amp;diff=43538</id>
		<title>events/2011-03-sxsw</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=events/2011-03-sxsw&amp;diff=43538"/>
		<updated>2011-02-04T22:14:56Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Subjects to Cover */ New round of contributions from BenWard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;South By Southwest Interactive 2011&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Microformats events, content and so forth at SXSWi. &lt;br /&gt;
&lt;br /&gt;
==The Future of Microformats Panel==&lt;br /&gt;
&lt;br /&gt;
Featuring:&lt;br /&gt;
&lt;br /&gt;
* Frances Berriman&lt;br /&gt;
* Ben Ward&lt;br /&gt;
* Tantek Çelik&lt;br /&gt;
* Paul Tarjan&lt;br /&gt;
&lt;br /&gt;
=== 140 Character Summary for SXSW documentation===&lt;br /&gt;
&lt;br /&gt;
What is the future of structured data on the web? A look at new implementations, tools and hacks, plus updates on the microformats project.&lt;br /&gt;
&lt;br /&gt;
=== Social media hashtag ===&lt;br /&gt;
&lt;br /&gt;
hashtag: #futuremf&lt;br /&gt;
&lt;br /&gt;
===Brainstorming the Panel===&lt;br /&gt;
&lt;br /&gt;
Figure out the direction, content and general flow of the panel.&lt;br /&gt;
&lt;br /&gt;
====Subjects to Cover====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Summarize the state of Microformats&lt;br /&gt;
** “Are microformats dead?” (not necessarily in those terms…)&lt;br /&gt;
*** I'm curious about the self-consciousness behind this question. Is it an actual concern? One you have heard? Or just an ironic opener? [[User:Tantek|Tantek]] 19:28, 30 January 2011 (UTC)&lt;br /&gt;
**** I've had it asked of me repeatedly, for a while now. The blog is neglected, there've been no new formats promoted (which is an external impression of progress), none of us work actively on it, supposedly stable specs like hAtom remain at sub-1.0 versions, the mailing lists are deserted. It is an entirely legitimate impression that the effort has folded into irrelevance. — [[User:BenWard|BenWard]] 22:14, 4 February 2011 (UTC)&lt;br /&gt;
**** I've genuinely been asked if HTML 5 (various new elements) / Microdata replace microformats [[User:Phae|Phae]] 14:21, 31 January 2011 (UTC)&lt;br /&gt;
***** If the context is one of comparison, then let's handle that in comparison discussions (see below).  - [[User:Tantek|Tantek]] 23:35, 31 January 2011 (UTC)&lt;br /&gt;
** Major implementations (to date)&lt;br /&gt;
*** Show an overview slide with logos of all the sites publishing microformats&lt;br /&gt;
*** Google search results - screenshots of rich snippets&lt;br /&gt;
*** [[RelMeAuth]]&lt;br /&gt;
**** There's no way this can be framed as a ‘major implementation’. It's a brilliant experiment, a great proof of concept. It's not a major implementation. Given Glenn's new hacks too, maybe we need to break this into two sections; actual major implementations and then hot new experiments that demonstrate how the data which is now out there and stable can be used. — [[User:BenWard|BenWard]] 22:14, 4 February 2011 (UTC)&lt;br /&gt;
*** Could demonstrate Twitter Tweet Button using &amp;lt;code&amp;gt;rel=me&amp;lt;/code&amp;gt; to infer data from embedding pages.&lt;br /&gt;
**** It's a tiny small use, but it is also all over the web. Not worth much time, but a nice frame of the concept of using microformats for progressive enhancement. — [[User:BenWard|BenWard]] 22:14, 4 February 2011 (UTC)&lt;br /&gt;
*** Glenn Jones has a few neat things too&lt;br /&gt;
**** Possibly demo each very quickly? Glenn was asking about doing a demo too.&lt;br /&gt;
** What microformats are there which are stable, ‘complete’?&lt;br /&gt;
*** This might be a good time to discuss potential thoughts about more formally defined microformats spec stages, e.g. draft (brainstorm consensus, ready for publishers), specification (stable multiple publisher support, implementations recommended), standard (multiple interoperable implementations) - I've brainstormed this a bit with Kevin Marks, perhaps worth further discussion at a dinner and capturing on its own wiki page).&lt;br /&gt;
* Cover structured data in general (perhaps briefly, just to clear up confusion)&lt;br /&gt;
** do a slide comparing microformats, microdata, RDFa (when you use it, which vocabs in use) - I think this might be a good lead in for the &amp;quot;Microformats 2.0&amp;quot; introduction.&lt;br /&gt;
** What's microdata? What's it for? Where is it supported?&lt;br /&gt;
** RDFa: Depending on further checking of the figures cited in Peter Mika's blog post (http://tripletalk.wordpress.com/2011/01/25/rdfa-deployment-across-the-web), what vocabularies are emerging in the RDFa space?&lt;br /&gt;
*** If the figures are wrong though, or there aren't any major vocabularies, then can probably skip over this. — Ben&lt;br /&gt;
**** Yeah, I'm a little tired of the deceptive marketing by the RDFa crowd (that article, and Ben's and Kevin Marks' trivial critiques (c.f. their twitters) are a prime example) and frankly in such a short session we shouldn't give such deceptions any time. However I *would* suggest a backup slide to debunk it (e.g. showing adoption of the class attribute or meta keyword in comparison to RDFa) when the inevitable one RDFa question comes up from the one RDFa person in the crowd. [[User:Tantek|Tantek]]&lt;br /&gt;
**** We check the figures and if they are actually backed by a growth in particular vocabularies using RDFa, we mention them because they are relevant to structured data on the web. — [[User:BenWard|BenWard]] 22:14, 4 February 2011 (UTC)&lt;br /&gt;
* What's happening this year?&lt;br /&gt;
** Any new vocabularies expected to be stable?&lt;br /&gt;
** vCard 4.0, and how that will tie into hCard&lt;br /&gt;
*** updates to hCard in general hCard 1.0.1, 1.1 - [[User:Tantek|Tantek]]&lt;br /&gt;
** HTML5, and how the time element affects hCalendar, hAtom, etc.&lt;br /&gt;
*** Good to mention X2V/H2VX update to support HTML5 and time/datetime here. - [[User:Tantek|Tantek]]&lt;br /&gt;
** “Microformats 2” (datatype prefixes, generic tree parsing.)&lt;br /&gt;
*** If this is mentioned at all, assuming Tantek is even continuing this work at all(?), I am firmly of the view that it needs to framed as an exploration around a use case, not an accepted progression of microformats as a whole. — Ben&lt;br /&gt;
**** Yes it is continuing :) I agree with the general thinking behind Ben's framing, that is, we need to stay practical. Direct use cases are one subset of real world problems (which is how microformats started) that microformats solve. What's driving Microformats 2.0 *is* the solving of specific real world problems that sufficient developers have encountered (i.e. not just hypothetical) that it's now finally worth spending the time to solve them. And yes, the goal would be to have Microformats 2.0 &amp;quot;ready to use/parse&amp;quot; for introduction at this session, possibly with some publisher/parser support already available (thinking Twitter, Facebook, X2V, Operator offhand). - [[User:Tantek|Tantek]]&lt;br /&gt;
***** I don't see how it's feasible to take ‘Microformats 2’ from its current rough draft documentation, without consensus, into a deployed and consumable state in the space of a month. Especially given how slowly and sporadically things move here. — [[User:BenWard|BenWard]] 22:14, 4 February 2011 (UTC)&lt;br /&gt;
***** Additionally (and, I should stress, unrelated to my personal scepticism of the µf2 proposal) there's no way Twitter will be able to ship anything related to it before SXSW.&lt;br /&gt;
** If we're covering individually led efforts though, Ben would like to frame up the concept of rich data containers and expanding parsing rules for those (&amp;lt;code&amp;gt;vcalendar&amp;lt;/code&amp;gt; TV listings and the like.)&lt;br /&gt;
*** You know the drill, start an exploration wiki page on the subject :) - [[User:Tantek|Tantek]]&lt;br /&gt;
**** That's existed for a while actually: [[container-brainstorming]]&lt;br /&gt;
* Community Management? Being that this has been (is?) one of the larger challenges the microformats community has had, is it worth bringing up, lessons learned etc.?&lt;br /&gt;
** It's been on my mind a lot recently - particularly the reduction of traffic to mailing lists and potential stagnation of some proposals.  I think we've got a tricky balance to strike.  [[User:Phae|Phae]] 14:33, 31 January 2011 (UTC)&lt;br /&gt;
*** I think what essentially happened, to be blunt, is that the trolls &amp;quot;won&amp;quot;. We had a sufficient # of trolls who overwhelmed the cognitive surplus of the admins (and the rest of the community, none of which were experienced with community management), that people (including myself) lost a lot of motivation and daily participation, IRC, etc. dropped off. I've been thinking a lot about this lately, and I think we actually have an opportunity to fix this, that is, to set up much stricter (and upfront) participation guidelines and consequences, and then act swiftly, and fairly merciless to ban those that are even minimally disruptive, because frankly, we don't have the staff to deal with educating (i.e. teaching better online manners etc.) those who are either new, immature, or just obsessive (i.e. can't help themselves from sending repeated emails to the lists, they're welcome to get such training on W3C lists where there are paid staff to deal with such folks). At that point, we can re-engage editors to step up activity, and then as admins very vigilantly patrol the lists and keep the clear of trolls. I would rather have higher quality traffic from a few productive folks, than noise from drive-by emailers. We need to act more like a meritocratic, hierarchical open source project (e.g. Mozilla) than the semi-free-for-all perceived flat &amp;quot;democracy&amp;quot; that so many standards lists (e.g. W3C) have. - [[User:Tantek|Tantek]] 23:35, 31 January 2011 (UTC)&lt;br /&gt;
*** I think it's a bit much to pin all of this on trolls at this point. We banned them, they went away. After that—which was multiple years ago, remember—no one has done any major spec or community work with any visibility. There hasn't been any activity to draw people in or stimulate interest. We need to avoid playing some sort of excuses game here and focus on positive future effort, reasons why people should consider participating — [[User:BenWard|BenWard]] 22:14, 4 February 2011 (UTC)&lt;br /&gt;
*** Relatedly, hNews might count as a valid effort which did have activity around it, but which was hosted around a different place than microformats.org — [[User:BenWard|BenWard]] 22:14, 4 February 2011 (UTC)&lt;br /&gt;
* Accessibility? Since the value-class-pattern has solved these problems, is this worth mentioning at all?&lt;br /&gt;
** May be worth a mention, if only because I think the date-pattern debacle put a few souls off. [[User:Phae|Phae]] 14:33, 31 January 2011 (UTC)&lt;br /&gt;
*** Phae, that was 2 years ago - literally - we covered accessibility and the [[value-class-pattern]] at the SXSW 2009 session. What's left to do is debunk the out-of-date Wikipedia article on microformats and any other place the debate resurfaces. Not sure why it would be worth spending time on this at SXSW 2011 except in response to Q&amp;amp;A perhaps. - [[User:Tantek|Tantek]] 23:35, 31 January 2011 (UTC)&lt;br /&gt;
**** Fair enough, just thinking out loud :) [[User:Phae|Phae]]&lt;br /&gt;
**** We don't even need to do that concerning dates. At this point it's sufficient just to show HTML5 time elements in action. It may be reasonable at this point to consider updating all the specs to use time in the examples rather than old forms. — [[User:BenWard|BenWard]] 22:14, 4 February 2011 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Subjects not to cover at all====&lt;br /&gt;
* meta keywords&lt;br /&gt;
* microdata on its own&lt;br /&gt;
* RDFa on its own&lt;br /&gt;
* ontology/ontologies (lose most the crowd just by mentioning the word)&lt;br /&gt;
* why invisible metadata fails (perhaps backup slides for Q&amp;amp;A response only)&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=events/2011-03-sxsw&amp;diff=43473</id>
		<title>events/2011-03-sxsw</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=events/2011-03-sxsw&amp;diff=43473"/>
		<updated>2011-01-30T10:14:45Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Started the brainstorm page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;South By Southwest Interactive 2011&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Microformats events, content and so forth at SXSWi. &lt;br /&gt;
&lt;br /&gt;
==The Future of Microformats Panel==&lt;br /&gt;
&lt;br /&gt;
Featuring:&lt;br /&gt;
&lt;br /&gt;
* Frances Berriman&lt;br /&gt;
* Ben Ward&lt;br /&gt;
* Tantek Çelik&lt;br /&gt;
* Paul Tarjan&lt;br /&gt;
&lt;br /&gt;
=== 140 Character Summary for SXSW documentation===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
===Brainstorming the Panel===&lt;br /&gt;
&lt;br /&gt;
Figure out the direction, content and general flow of the panel.&lt;br /&gt;
&lt;br /&gt;
====Subjects to Cover====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Summarize the state of Microformats&lt;br /&gt;
** “Are microformats dead?” (not necessarily in those terms…)&lt;br /&gt;
** Major implementations:&lt;br /&gt;
*** Google search results&lt;br /&gt;
*** Could demonstrate Twitter Tweet Button using &amp;lt;code&amp;gt;rel=me&amp;lt;/code&amp;gt; to infer data from embedding pages&lt;br /&gt;
*** Glenn Jones has a few neat things too&lt;br /&gt;
**** Possibly demo each very quickly? Glenn was asking about doing a demo too.&lt;br /&gt;
** What microformats are there which are stable, ‘complete’?&lt;br /&gt;
* Cover structured data in general:&lt;br /&gt;
** What's microdata? What's it for? Where is it supported?&lt;br /&gt;
** RDFa: Depending on further checking of the figures cited in Peter Mika's blog post (http://tripletalk.wordpress.com/2011/01/25/rdfa-deployment-across-the-web), what vocabularies are emerging in the RDFa space?&lt;br /&gt;
*** If the figures are wrong though, or there aren't any major vocabularies, then can probably skip over this. — Ben&lt;br /&gt;
* What's happening this year?&lt;br /&gt;
** Any new vocabularies expected to be stable?&lt;br /&gt;
** VCard 4.0, and how that will tie into hCard&lt;br /&gt;
** HTML5, and how the time element affects hCalendar, hAtom, etc.&lt;br /&gt;
** “Microformats 2” (datatype prefixes, generic tree parsing.)&lt;br /&gt;
*** If this is mentioned at all, assuming Tantek is even continuing this work at all(?), I am firmly of the view that it needs to framed as an exploration around a use case, not an accepted progression of microformats as a whole. — Ben&lt;br /&gt;
** If we're covering individually led efforts though, Ben would like to frame up the concept of rich data containers and expanding parsing rules for those (&amp;lt;code&amp;gt;vcalendar&amp;lt;/code&amp;gt; TV listings and the like.) &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Subjects not to cover at all====&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=social-network-anti-patterns&amp;diff=42870</id>
		<title>social-network-anti-patterns</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=social-network-anti-patterns&amp;diff=42870"/>
		<updated>2010-07-19T20:45:38Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Facebook see if more friends have joined */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Social Network Anti-patterns&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
While [[social-network-portability]] documents what to do to put your site on the open social web and be a good user-centric service in general, it's been noted that not everyone follows such advice and instead opts for a bunch of alternative either one-off (wasteful) or downright user-unfriendly tactics.  This page documents such [[anti-patterns]] of social network design and implementation and provides (unfortunately) real world examples of such badly designed sites.&lt;br /&gt;
&lt;br /&gt;
== Spam your contacts ==&lt;br /&gt;
Many social networking sites ask you to &amp;lt;span id=&amp;quot;Upload_your_Address_Book&amp;quot;&amp;gt;upload your address book&amp;lt;/span&amp;gt;, or &amp;quot;Find Your Friends&amp;quot;, when what the feature really does is '''Spam your contacts'''.&lt;br /&gt;
&lt;br /&gt;
These sites seem to use your uploading of an address book as tacit/implied permission to spam all your friends with invites, which will annoy your friends, and make you look foolish. &lt;br /&gt;
* [http://twitter.com/spiller2/statuses/811960394 Stephen Spillane apologized on 2008-05-15] to his friends for what sounds like involuntary spamming due to a social network invite: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;apologies to anyone who got an annoying invite from me to some stupid social network. The things men make me do&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Making users annoy, look dumb to their friends, and feel compelled to apologize is not good design.&lt;br /&gt;
&lt;br /&gt;
This spamming behavior is now so bad, that users are creating new email accounts to knowingly avoid the problem:&lt;br /&gt;
* [http://twitter.com/lisamac/statuses/239777272 Lisa McMillan on Twitter 2007-08-31] &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;getting a special email account with no contacts for signing up to social networks. Then, I won't mind when they hijack my address book.&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apparently this contact spam has in at least one case taken the form of instant-message spam (spim) which is then used to spread a contact-based virus!&lt;br /&gt;
&lt;br /&gt;
* [http://twitter.com/theinfonaut/status/1246859290 Leslie Chicoine on Twitter 2009-02-24] &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;There's a contacts based virus going around, don't give your IM, Yahoo, Google Contacts etc. info to any website!&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solution: support [[social-network-portability]] instead, not address book spamming.&lt;br /&gt;
&lt;br /&gt;
Read more about why this is an anti-pattern:&lt;br /&gt;
* 2007-12-19 [http://factoryjoe.com/blog/2007/12/19/public-nuisance-1-importing-your-contacts/ Chris Messina: Public nuisance #1: Importing your contacts]&lt;br /&gt;
&lt;br /&gt;
Here are some sites that are currently doing this:&lt;br /&gt;
&lt;br /&gt;
=== Bebo invites===&lt;br /&gt;
Bebo appears to have a user interface that makes it too easy for users to unintentionally spam everyone in their address book.&lt;br /&gt;
&lt;br /&gt;
Evidence that users have unintentionally sending invite spam to their contacts:&lt;br /&gt;
&lt;br /&gt;
As [http://twitter.com/walelia/statuses/771302864 noted by user Valerie Noble on 2008-03-13]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;What the hell, I stupidly sent bebo invites to eveyone in my address book. Boo!&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and [http://twitter.com/cksthree/statuses/773542421 user C.K. Sample III on 2008-03-18]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;signed up for bebo. sorry to everyone in my address book who got spammed by the sign up. I thought it would work more like twitter&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Evidence that users are receiving Bebo invite spam:&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/frankensite/statuses/774020094 Brian Alvey notes on 2008-03-19]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;Considering deleting the duplicate Bebo invitations I'm getting. Everyone has 3+ addresses for me. Another address book spam engine. Hurray!&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still a problem as of May 2008:&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/cmpayne/statuses/811938598 Cameron Payne was unpleasantly surprised on 2008-05-15]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;goddamn Bebo just invited *everyone* in my Yahoo address book. I don't think I told it to do that. WTF!? Beware!&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Goodreads are your friends already on ===&lt;br /&gt;
Goodreads also has a user interface that misleads even very web-savvy users into unintentionally spamming everyone in their address book.&lt;br /&gt;
&lt;br /&gt;
[http://flickr.com/photos/redcarpet/2619408018/in/photostream/ http://farm4.static.flickr.com/3114/2619408018_25c0147054.jpg]&lt;br /&gt;
&lt;br /&gt;
[http://www.mickipedia.com/ Micki Krimmell] wrote both [http://www.mickipedia.com/?p=1174 a blog post] and a [http://getsatisfaction.com/goodreads/topics/why_did_goodreads_trick_me_into_spamming_my_entire_address_book post on GetSatisfaction] describing her experience with being tricked into spamming all her friends.&lt;br /&gt;
&lt;br /&gt;
A representative from Goodreads has followed up on both Micki's blog post and Getsatisfaction post, however, as far as is known, Goodreads' user interface has not been changed/improved accordingly to be less misleading.&lt;br /&gt;
&lt;br /&gt;
=== Quechup find your friends on ===&lt;br /&gt;
[http://www.flickr.com/photos/chrishambly/1302362704/ http://farm2.static.flickr.com/1339/1302362704_63d97a8930.jpg]&lt;br /&gt;
&lt;br /&gt;
Quechup has a feature to &amp;quot;find your friends&amp;quot; which, even if it says &amp;quot;no contact present&amp;quot; will spam all your contacts in your address book and thus annoy all your friends and embarrass you.  Clearly it is not just ''finding your friends from'' your address book, it is ''inviting everyone in'' your address book.&lt;br /&gt;
* 2007-07-31 [http://www.ibert.be/2007/07/quechup-disaster.html BERT VAN WASSENHOVE: Quechup disaster]&lt;br /&gt;
* 2007-09-02 [http://www.chrishambly.com/content/quechup-and-mass-hysteria Chris Hambly: Quechup And Mass Hysteria]&lt;br /&gt;
* 2007-09-02 [http://mashable.com/2007/09/02/quechup/ Mashable: Are You Getting Quechup Spammed?]&lt;br /&gt;
* 2007-09-05 [http://www.brianoberkirch.com/2007/09/05/should-google-help-us-stop-quechup-spam/ Brian Oberkirch: should google help us stop quechup spam?]&lt;br /&gt;
&lt;br /&gt;
=== Spock scan my address book ===&lt;br /&gt;
* 2007-12-17 [http://beth.typepad.com/beths_blog/2007/12/beware-of-spock.html Beth Kanter: Beware of Spock is not Star Trek 2.0 .... Beware]&lt;br /&gt;
&lt;br /&gt;
== Enter your other site login and password ==&lt;br /&gt;
Also known as:&lt;br /&gt;
* &amp;quot;&amp;lt;span id=&amp;quot;Enter_your_email_login_and_password&amp;quot;&amp;gt;Enter your email login and password&amp;lt;/span&amp;gt;&amp;quot; anti-pattern.&lt;br /&gt;
* Third Party Password Antipattern ([http://flickr.com/photos/tags/3ppantipattern 3ppantipattern], tppantipattern)&lt;br /&gt;
* Password Antipattern&lt;br /&gt;
&lt;br /&gt;
Giving any site your login credentials/permissions for another site or service is a &amp;lt;strong&amp;gt;very bad idea.&amp;lt;/strong&amp;gt;  You cannot trust that the site will treat your login credentials with proper care (e.g. Quechup uses this antipattern to implement the [[#Spam_your_contacts|spam everyone your the address book antipattern above]]).&lt;br /&gt;
&lt;br /&gt;
It is also very bad user interface design. These sites that ask for your login (whether gmail or other services) are teaching users a very bad habit, a habit that is akin to what phishing sites depend on.  Essentially you are teaching a user that this type of form is safe whereas it actually presents quite the danger given the number of phishing sites out there.&lt;br /&gt;
&lt;br /&gt;
Don't ask users for their login and password to another site like gMail etc.&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
* drop import support for the sites that don't offer hCard+XFN friends lists and/or [[OAuth]].&lt;br /&gt;
** Note that last.fm dropped support for their password anti-pattern support in the recent (2008 June) redesign!&lt;br /&gt;
* support [[social-network-portability]].&lt;br /&gt;
* and if you must, support site-specific proprietary APIs which depend on OAuth, e.g. Google Address Book API, Yahoo Address Book API.&lt;br /&gt;
&lt;br /&gt;
=== Posts ===&lt;br /&gt;
Read more about why this is an anti-pattern:&lt;br /&gt;
* 2007-08-14 [http://www.brianoberkirch.com/2007/08/14/two-social-system-design-trends-that-should-really-really-stop-like-now/ Brian Oberkirch: Two social system design trends that should really, really stop. like now.]&lt;br /&gt;
* 2007-10-11 [http://adactio.com/journal/1357 Jeremy Keith: The password anti-pattern]&lt;br /&gt;
* 2008-01-04 [http://www.brianoberkirch.com/2008/01/04/this-antipattern-is-kryptonite-to-the-open-social-web/ Brian Oberkirch: this antipattern is kryptonite to the open social web]&lt;br /&gt;
* 2008-03-15 [http://adactio.com/journal/1421/ Jeremy Keith: Anti-pattern begone] (mentions Google announcement of their Contacts Data API)&lt;br /&gt;
* 2008-06-04 [http://adactio.com/journal/1475/ Jeremy Keith: Making contact] (mentions the Yahoo announcement of the release of their Address Book API).&lt;br /&gt;
* 2008-07-15 [http://getsatisfaction.com/pownce/topics/why_does_pownce_keep_killing_kittens_with_the_password_anti_pattern Jeremy Keith: Why does Pownce keep killing kittens with the password anti-pattern?]&lt;br /&gt;
* 2008-09-23 [http://pownce.com/adactio/notes/3571554/ Jeremy Keith pownces Either the password anti-pattern goes or I do.]&lt;br /&gt;
* 2008-09-25 [http://adactio.com/journal/1513/ Jeremy Keith: Anti-pattern recognition]&lt;br /&gt;
&lt;br /&gt;
=== Excuses and responses===&lt;br /&gt;
* Some major players are not helping the cause.&lt;br /&gt;
** Just because someone/something else big is misbehaving, that is no excuse for you to do so.&lt;br /&gt;
* We are following pretty common practice.&lt;br /&gt;
** Just because many other folks are misbehaving, that is no excuse for you to.&lt;br /&gt;
* Variant: We are implementing the same code as Facebook and Twitter so we went for best practices.&lt;br /&gt;
** Implementing the same code is not best practice. Implementing the same code in this case is the lowest common denominator.&lt;br /&gt;
* We aren't in a terribly strong position to drop support.&lt;br /&gt;
** Of course you are! Precisely because you *are* small. You have less to lose.&lt;br /&gt;
** If you pick a public fight with a misbehaving big player over this, guess who wins? If the press covers it as little guy vs the big guy etc. narrative.&lt;br /&gt;
* Our growth is flat!&lt;br /&gt;
** Exactly - this won't affect it.  But maybe a little positive publicity will help.&lt;br /&gt;
* We could implement the OAuth-based proprietary address book APIs, but we'd have to invest the development time to do Facebook, Yahoo, and Google.&lt;br /&gt;
** Disable the the password anti-pattern code in the meantime.&lt;br /&gt;
* The pragmatic downside is that our growth is stagnant, we need to do features that'll benefit us, and this isn't at the top of the list of features that can do that for us.&lt;br /&gt;
** This is the opportunity cost argument.  It is the same problem with fixing polluting factories vs. building new factories.&lt;br /&gt;
* Why are people threatening to leave us or worse?&lt;br /&gt;
** Without community pressure/embarrassment, companies don't change.&lt;br /&gt;
* I think we've earned a little benefit of the doubt that we're not 'the industry'.&lt;br /&gt;
** Having a &amp;quot;polluting&amp;quot; interface that is on every day means no benefit of the doubt.&lt;br /&gt;
&lt;br /&gt;
==== Pollution analogy ====&lt;br /&gt;
The password anti-pattern = teaching people to pollute themselves.&lt;br /&gt;
*  Just because everyone else pollutes, doesn't mean it makes it right for you to do so.&lt;br /&gt;
* Polluting factories need to be fixed just as much as new factories need to be built.&lt;br /&gt;
* Without environmentalist pressure/embarrassment, polluting companies don't change.&lt;br /&gt;
* Why not focus your efforts on the huuuuuuge polluters like instead of my small company?&lt;br /&gt;
** Because easier to apply enough pressure to get smaller guys to change first. Same tactics worked for environmentalists.  Then they would use smaller victories to earn bigger victories, until they had racked up enough victories to make the big guys look *really* bad.&lt;br /&gt;
&lt;br /&gt;
Here are some sites that are currently doing this:&lt;br /&gt;
&lt;br /&gt;
=== Blipfm is better with friends ===&lt;br /&gt;
[http://www.flickr.com/photos/tantek/3199489045/ http://farm4.static.flickr.com/3389/3199489045_7169ea1a63.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://blip.fm Blip.fm]''' - Their &amp;quot;Import Address Book&amp;quot; functionality requests that you enter your username and password for your email provider(s): yahoo, gmail, hotmail, aol, msn.&lt;br /&gt;
&lt;br /&gt;
=== Facebook Connect ===&lt;br /&gt;
Per [http://micro.ben-ward.co.uk/post/65425363/facebook-connect Ben Ward's post on Facebook Connect], this user interface:&lt;br /&gt;
&lt;br /&gt;
[http://micro.ben-ward.co.uk/post/65425363/facebook-connect  http://5.media.tumblr.com/5vUVOHNMPhm1sj7138AlwQXho1_400.png]&lt;br /&gt;
&lt;br /&gt;
Appears to encourage users to enter their email address and password into something visually resembling (but easy to mimic) a Facebook popup window on ''any'' site.&lt;br /&gt;
&lt;br /&gt;
Thus all a malicious site would have to do is put up a button saying &amp;quot;Login with Facebook Connect&amp;quot;, then display an identically styled virtual popup, and the user, who has been taught by the Facebook Connect UI, will simply enter their email address and password.&lt;br /&gt;
&lt;br /&gt;
There's also a more detailed follow up on Ben's views of the Facebook Connect UI [http://ben-ward.co.uk/blog/oauth-flow/ on his blog] — and complements for the alternate version, whereby it uses the iframe to improve the UX for users who are ''already logged in'' to Facebook. There's a bit more snark as well, for those who are into that.&lt;br /&gt;
&lt;br /&gt;
Update: This issue was '''fixed''' by Facebook. They now use a separate pop-up window, complete with browser chrome, to log in when you're not already signed in to Facebook.&lt;br /&gt;
&lt;br /&gt;
=== Facebook see if more friends have joined ===&lt;br /&gt;
[http://flickr.com/photos/factoryjoe/2110461562/ http://farm3.static.flickr.com/2324/2110461562_e624ab4175.jpg]&lt;br /&gt;
&lt;br /&gt;
[http://blog.benward.me/post/825760204 http://28.media.tumblr.com/tumblr_l5qcn44Rxg1qzt3x8o1_500.png]&lt;br /&gt;
&lt;br /&gt;
'''[http://facebook.com Facebook]''' - Their &amp;quot;see if more friends have joined Facebook&amp;quot; feature provides you with a popup menu to enter passwords for numerous sites.&lt;br /&gt;
&lt;br /&gt;
=== GetSatisfaction Twitter This widget ===&lt;br /&gt;
As [http://twitter.com/adactio/status/1020708247 reported by Jeremy Keith], apparently the [http://getsatisfaction.com GetSatisfaction] &amp;quot;Twitter This&amp;quot; widget requests your Twitter username and password. &amp;lt;strong&amp;gt;(screenshot needed)&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the support thread on GetSatisfaction &amp;quot;[http://getsatisfaction.com/getsatisfaction/topics/stop_asking_for_twitter_passwords Stop asking for Twitter passwords]&amp;quot; for more.&lt;br /&gt;
&lt;br /&gt;
=== Nsyght import your profile and friends ===&lt;br /&gt;
[http://www.flickr.com/photos/tantek/2254537667/ http://farm3.static.flickr.com/2035/2254537667_d831c1fb3a.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://nsyght.com Nsyght]''' - Register for an account to import from Digg, Pownce, Last.fm, and Twitter (site is in public alpha)&lt;br /&gt;
* Unfortunately the &amp;quot;import from Digg, Pownce, Last.fm, and Twitter&amp;quot; feature depends on entering your username and password to those sites, which is ironic since those sites support microformats and [[social-network-portability]]!&lt;br /&gt;
&lt;br /&gt;
=== Plaxo - Let's look for your friends in your address book ===&lt;br /&gt;
[http://www.flickr.com/photos/manveru/3215481930/ http://farm4.static.flickr.com/3088/3215481930_979c0a7f61.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://plaxo.com plaxo]''' - Asks in several forms for passwords of different mail services.&lt;br /&gt;
&lt;br /&gt;
=== Plinky - Find Your Friends ===&lt;br /&gt;
[http://www.flickr.com/photos/tantek/3218629483/ http://farm4.static.flickr.com/3335/3218629483_e40019cac9.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://plinky.com Plinky]''''s &amp;quot;Find Your Friends&amp;quot; feature, which it presents to every newly signed up user, asks for your email address and password for a variety of services.&lt;br /&gt;
&lt;br /&gt;
As [http://twitter.com/dewitt/status/1145448221 DeWitt tweeted]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Google, Yahoo, and Microsoft all support browser-based delegated authorization apis for contacts. Plinky should use those apis.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also [http://friendfeed.com/e/6ff1f9ce-df01-4250-05de-c7009f31925f/Wow-Plinky-usernames-are-going-faster-than/ this thread by Jason Shellen (CEO of Plinky)] who says some hopeful things: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;DeWitt - You make a good point. I'll discuss it with the team Monday. In other news, we do support OAuth for posting to Blogger.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quechup which friends already use ===&lt;br /&gt;
[http://mashable.com/2007/09/02/quechup/ http://mashable.com/wp-content/uploads/2007/09/quechupsignup.PNG]&lt;br /&gt;
&lt;br /&gt;
=== ShareThis import your contact lists ===&lt;br /&gt;
[http://flickr.com/photos/factoryjoe/1344414673/ http://farm2.static.flickr.com/1088/1344414673_8e306e265d_o.png]&lt;br /&gt;
[http://flickr.com/photos/factoryjoe/1345315346/ http://farm2.static.flickr.com/1143/1345315346_8eb2cf4d7c_o.png]&lt;br /&gt;
&lt;br /&gt;
ShareThis asks for your username and password to email services and social network sites.&lt;br /&gt;
&lt;br /&gt;
=== SlideShare signup form ===&lt;br /&gt;
As [http://twitter.com/adactio/status/1020670561 reported by Jeremy Keith], apparently the [http://www.slideshare.net/signup SlideShare signup form] asks for your (in this order)&lt;br /&gt;
* Username &lt;br /&gt;
* Email Address &lt;br /&gt;
* Password &lt;br /&gt;
* Confirm Password&lt;br /&gt;
&amp;lt;strong&amp;gt;(screenshot needed)&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because of the proximity of &amp;quot;Email Address&amp;quot; and &amp;quot;Password&amp;quot; input fields it is easy to mistake this for asking for your email address and email password. Perhaps it is asking for your email password? Or perhaps it asks for that later in the process? Screenshots would help.&lt;br /&gt;
&lt;br /&gt;
See the GetSatisfaction support thread &amp;quot;[http://getsatisfaction.com/slideshare/topics/asking_for_3rd_party_passwords Asking for 3rd party passwords]&amp;quot; for more.&lt;br /&gt;
&lt;br /&gt;
=== StockTwits login ===&lt;br /&gt;
[http://www.flickr.com/photos/factoryjoe/3061262427/ http://farm4.static.flickr.com/3010/3061262427_3775189375.jpg]&lt;br /&gt;
&lt;br /&gt;
StockTwits.com asks you to &amp;quot;Login&amp;quot; with your Twitter username and password.  StockTwits is not run by Twitter, therefore they are asking you for your username and password to another site.&lt;br /&gt;
&lt;br /&gt;
=== Twitpic login to twitter ===&lt;br /&gt;
[http://flickr.com/photos/ronin691/2368324013/ http://farm3.static.flickr.com/2166/2368324013_0a15d337c0.jpg]&lt;br /&gt;
&lt;br /&gt;
Twitpic asks you to enter your Twitter username and password.  They are not the same site, nor are they run by the same people or company.&lt;br /&gt;
&lt;br /&gt;
=== Twitter are your friends on ===&lt;br /&gt;
[http://www.flickr.com/photos/ronin691/2110909518/ http://farm3.static.flickr.com/2179/2110909518_fde956c2ee.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://twitter.com/ Twitter]''' is a service that many users (including many of us active with microformats) love and adore and use constantly. Plus they implement microformats (e.g. [[hcard supporting user profiles]] and [[hcard xfn supporting friends lists]])!&lt;br /&gt;
&lt;br /&gt;
However, we still need to call them out for supporting the third-party password anti-pattern.&lt;br /&gt;
&lt;br /&gt;
As co-authors of [[Oauth]], please Twitter, implement and evangelize that path (perhaps even on that &amp;quot;are your friends on&amp;quot; page), rather than this anti-pattern.&lt;br /&gt;
&lt;br /&gt;
=== TwitterNotes ===&lt;br /&gt;
[http://flickr.com/photos/guspim/2138354357/ http://farm3.static.flickr.com/2221/2138354357_0c566fd62e.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://twitternotes.com/ TwitterNotes]''' asks you to &amp;quot;login with your Twitter account&amp;quot; username and password.  They are not the same site, nor are they run by the same people or company.&lt;br /&gt;
&lt;br /&gt;
== Join to fix your profile ==&lt;br /&gt;
Some social network sites create public profiles for you without you having any contact with them.  If there are any mistakes, they make you join in order to fix them.  This sounds like blackmail: Join our service or else we'll continue to publish inaccurate information about you and therefore spam websearch results about you with misinformation.&lt;br /&gt;
&lt;br /&gt;
=== Spock join to fix ===&lt;br /&gt;
* 2007-08-15 [http://www.wired.com/techbiz/startups/news/2007/08/spock_reputation Wired News: Astonishing! Spock Thinks You're a Pedophile]&lt;br /&gt;
* 2007-12-16 [http://www.fullcirc.com/wp/2007/12/16/please-dont-invite-me-to-spock/ Full Circle Associates: Please, don’t invite me to Spock]&lt;br /&gt;
* 2007-12-16 [http://ourfounder.typepad.com/leblog/2007/12/it-may-be-the-e.html Jim Benson: It May Be the Evil Spock] (and [http://ourfounder.typepad.com/leblog/2007/12/an-initial-resp.html An Initial Response to Spock])&lt;br /&gt;
&lt;br /&gt;
== One Unified Social Network ==&lt;br /&gt;
Several companies are trying to build the &amp;quot;one unified social network&amp;quot; (to rule them all) where they own/control the social network, and you're &amp;quot;allowed to&amp;quot; build applications on top of their proprietary platform.  The most recent example of this is perhaps [http://facebook.com/ Facebook].&lt;br /&gt;
&lt;br /&gt;
This is a bad idea for the same reason you don't see &amp;quot;one universal blogging service&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Other examples of folks walking down this path:&lt;br /&gt;
* [http://hcii.cmu.edu/M-HCI/2006/SocialstreamProject/index.php Socialstream] - a [http://google.com/ Google] sponsored project at CMU.  Key quote: &amp;quot;a unified social network that, as a service, provides social data to many other applications&amp;quot;.  See also references in this Forbes article: [http://www.forbes.com/technology/2007/08/28/google-brazil-network-tech-cx_ag_0828orkut.html Google's Secret Society].&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The hope is that these services will see the potential upside of providing open user profiles and social networks through [[social network portability]] and thus enable syndication of such data, as popular blogging services do.&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[social-network-portability]]&lt;br /&gt;
* [[anti-patterns]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=social-network-anti-patterns&amp;diff=42869</id>
		<title>social-network-anti-patterns</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=social-network-anti-patterns&amp;diff=42869"/>
		<updated>2010-07-19T20:44:06Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Facebook see if more friends have joined */ Added new Facebook password antipattern friend finder UI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Social Network Anti-patterns&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
While [[social-network-portability]] documents what to do to put your site on the open social web and be a good user-centric service in general, it's been noted that not everyone follows such advice and instead opts for a bunch of alternative either one-off (wasteful) or downright user-unfriendly tactics.  This page documents such [[anti-patterns]] of social network design and implementation and provides (unfortunately) real world examples of such badly designed sites.&lt;br /&gt;
&lt;br /&gt;
== Spam your contacts ==&lt;br /&gt;
Many social networking sites ask you to &amp;lt;span id=&amp;quot;Upload_your_Address_Book&amp;quot;&amp;gt;upload your address book&amp;lt;/span&amp;gt;, or &amp;quot;Find Your Friends&amp;quot;, when what the feature really does is '''Spam your contacts'''.&lt;br /&gt;
&lt;br /&gt;
These sites seem to use your uploading of an address book as tacit/implied permission to spam all your friends with invites, which will annoy your friends, and make you look foolish. &lt;br /&gt;
* [http://twitter.com/spiller2/statuses/811960394 Stephen Spillane apologized on 2008-05-15] to his friends for what sounds like involuntary spamming due to a social network invite: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;apologies to anyone who got an annoying invite from me to some stupid social network. The things men make me do&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Making users annoy, look dumb to their friends, and feel compelled to apologize is not good design.&lt;br /&gt;
&lt;br /&gt;
This spamming behavior is now so bad, that users are creating new email accounts to knowingly avoid the problem:&lt;br /&gt;
* [http://twitter.com/lisamac/statuses/239777272 Lisa McMillan on Twitter 2007-08-31] &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;getting a special email account with no contacts for signing up to social networks. Then, I won't mind when they hijack my address book.&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apparently this contact spam has in at least one case taken the form of instant-message spam (spim) which is then used to spread a contact-based virus!&lt;br /&gt;
&lt;br /&gt;
* [http://twitter.com/theinfonaut/status/1246859290 Leslie Chicoine on Twitter 2009-02-24] &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;There's a contacts based virus going around, don't give your IM, Yahoo, Google Contacts etc. info to any website!&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solution: support [[social-network-portability]] instead, not address book spamming.&lt;br /&gt;
&lt;br /&gt;
Read more about why this is an anti-pattern:&lt;br /&gt;
* 2007-12-19 [http://factoryjoe.com/blog/2007/12/19/public-nuisance-1-importing-your-contacts/ Chris Messina: Public nuisance #1: Importing your contacts]&lt;br /&gt;
&lt;br /&gt;
Here are some sites that are currently doing this:&lt;br /&gt;
&lt;br /&gt;
=== Bebo invites===&lt;br /&gt;
Bebo appears to have a user interface that makes it too easy for users to unintentionally spam everyone in their address book.&lt;br /&gt;
&lt;br /&gt;
Evidence that users have unintentionally sending invite spam to their contacts:&lt;br /&gt;
&lt;br /&gt;
As [http://twitter.com/walelia/statuses/771302864 noted by user Valerie Noble on 2008-03-13]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;What the hell, I stupidly sent bebo invites to eveyone in my address book. Boo!&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and [http://twitter.com/cksthree/statuses/773542421 user C.K. Sample III on 2008-03-18]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;signed up for bebo. sorry to everyone in my address book who got spammed by the sign up. I thought it would work more like twitter&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Evidence that users are receiving Bebo invite spam:&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/frankensite/statuses/774020094 Brian Alvey notes on 2008-03-19]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;Considering deleting the duplicate Bebo invitations I'm getting. Everyone has 3+ addresses for me. Another address book spam engine. Hurray!&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still a problem as of May 2008:&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/cmpayne/statuses/811938598 Cameron Payne was unpleasantly surprised on 2008-05-15]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;goddamn Bebo just invited *everyone* in my Yahoo address book. I don't think I told it to do that. WTF!? Beware!&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Goodreads are your friends already on ===&lt;br /&gt;
Goodreads also has a user interface that misleads even very web-savvy users into unintentionally spamming everyone in their address book.&lt;br /&gt;
&lt;br /&gt;
[http://flickr.com/photos/redcarpet/2619408018/in/photostream/ http://farm4.static.flickr.com/3114/2619408018_25c0147054.jpg]&lt;br /&gt;
&lt;br /&gt;
[http://www.mickipedia.com/ Micki Krimmell] wrote both [http://www.mickipedia.com/?p=1174 a blog post] and a [http://getsatisfaction.com/goodreads/topics/why_did_goodreads_trick_me_into_spamming_my_entire_address_book post on GetSatisfaction] describing her experience with being tricked into spamming all her friends.&lt;br /&gt;
&lt;br /&gt;
A representative from Goodreads has followed up on both Micki's blog post and Getsatisfaction post, however, as far as is known, Goodreads' user interface has not been changed/improved accordingly to be less misleading.&lt;br /&gt;
&lt;br /&gt;
=== Quechup find your friends on ===&lt;br /&gt;
[http://www.flickr.com/photos/chrishambly/1302362704/ http://farm2.static.flickr.com/1339/1302362704_63d97a8930.jpg]&lt;br /&gt;
&lt;br /&gt;
Quechup has a feature to &amp;quot;find your friends&amp;quot; which, even if it says &amp;quot;no contact present&amp;quot; will spam all your contacts in your address book and thus annoy all your friends and embarrass you.  Clearly it is not just ''finding your friends from'' your address book, it is ''inviting everyone in'' your address book.&lt;br /&gt;
* 2007-07-31 [http://www.ibert.be/2007/07/quechup-disaster.html BERT VAN WASSENHOVE: Quechup disaster]&lt;br /&gt;
* 2007-09-02 [http://www.chrishambly.com/content/quechup-and-mass-hysteria Chris Hambly: Quechup And Mass Hysteria]&lt;br /&gt;
* 2007-09-02 [http://mashable.com/2007/09/02/quechup/ Mashable: Are You Getting Quechup Spammed?]&lt;br /&gt;
* 2007-09-05 [http://www.brianoberkirch.com/2007/09/05/should-google-help-us-stop-quechup-spam/ Brian Oberkirch: should google help us stop quechup spam?]&lt;br /&gt;
&lt;br /&gt;
=== Spock scan my address book ===&lt;br /&gt;
* 2007-12-17 [http://beth.typepad.com/beths_blog/2007/12/beware-of-spock.html Beth Kanter: Beware of Spock is not Star Trek 2.0 .... Beware]&lt;br /&gt;
&lt;br /&gt;
== Enter your other site login and password ==&lt;br /&gt;
Also known as:&lt;br /&gt;
* &amp;quot;&amp;lt;span id=&amp;quot;Enter_your_email_login_and_password&amp;quot;&amp;gt;Enter your email login and password&amp;lt;/span&amp;gt;&amp;quot; anti-pattern.&lt;br /&gt;
* Third Party Password Antipattern ([http://flickr.com/photos/tags/3ppantipattern 3ppantipattern], tppantipattern)&lt;br /&gt;
* Password Antipattern&lt;br /&gt;
&lt;br /&gt;
Giving any site your login credentials/permissions for another site or service is a &amp;lt;strong&amp;gt;very bad idea.&amp;lt;/strong&amp;gt;  You cannot trust that the site will treat your login credentials with proper care (e.g. Quechup uses this antipattern to implement the [[#Spam_your_contacts|spam everyone your the address book antipattern above]]).&lt;br /&gt;
&lt;br /&gt;
It is also very bad user interface design. These sites that ask for your login (whether gmail or other services) are teaching users a very bad habit, a habit that is akin to what phishing sites depend on.  Essentially you are teaching a user that this type of form is safe whereas it actually presents quite the danger given the number of phishing sites out there.&lt;br /&gt;
&lt;br /&gt;
Don't ask users for their login and password to another site like gMail etc.&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
* drop import support for the sites that don't offer hCard+XFN friends lists and/or [[OAuth]].&lt;br /&gt;
** Note that last.fm dropped support for their password anti-pattern support in the recent (2008 June) redesign!&lt;br /&gt;
* support [[social-network-portability]].&lt;br /&gt;
* and if you must, support site-specific proprietary APIs which depend on OAuth, e.g. Google Address Book API, Yahoo Address Book API.&lt;br /&gt;
&lt;br /&gt;
=== Posts ===&lt;br /&gt;
Read more about why this is an anti-pattern:&lt;br /&gt;
* 2007-08-14 [http://www.brianoberkirch.com/2007/08/14/two-social-system-design-trends-that-should-really-really-stop-like-now/ Brian Oberkirch: Two social system design trends that should really, really stop. like now.]&lt;br /&gt;
* 2007-10-11 [http://adactio.com/journal/1357 Jeremy Keith: The password anti-pattern]&lt;br /&gt;
* 2008-01-04 [http://www.brianoberkirch.com/2008/01/04/this-antipattern-is-kryptonite-to-the-open-social-web/ Brian Oberkirch: this antipattern is kryptonite to the open social web]&lt;br /&gt;
* 2008-03-15 [http://adactio.com/journal/1421/ Jeremy Keith: Anti-pattern begone] (mentions Google announcement of their Contacts Data API)&lt;br /&gt;
* 2008-06-04 [http://adactio.com/journal/1475/ Jeremy Keith: Making contact] (mentions the Yahoo announcement of the release of their Address Book API).&lt;br /&gt;
* 2008-07-15 [http://getsatisfaction.com/pownce/topics/why_does_pownce_keep_killing_kittens_with_the_password_anti_pattern Jeremy Keith: Why does Pownce keep killing kittens with the password anti-pattern?]&lt;br /&gt;
* 2008-09-23 [http://pownce.com/adactio/notes/3571554/ Jeremy Keith pownces Either the password anti-pattern goes or I do.]&lt;br /&gt;
* 2008-09-25 [http://adactio.com/journal/1513/ Jeremy Keith: Anti-pattern recognition]&lt;br /&gt;
&lt;br /&gt;
=== Excuses and responses===&lt;br /&gt;
* Some major players are not helping the cause.&lt;br /&gt;
** Just because someone/something else big is misbehaving, that is no excuse for you to do so.&lt;br /&gt;
* We are following pretty common practice.&lt;br /&gt;
** Just because many other folks are misbehaving, that is no excuse for you to.&lt;br /&gt;
* Variant: We are implementing the same code as Facebook and Twitter so we went for best practices.&lt;br /&gt;
** Implementing the same code is not best practice. Implementing the same code in this case is the lowest common denominator.&lt;br /&gt;
* We aren't in a terribly strong position to drop support.&lt;br /&gt;
** Of course you are! Precisely because you *are* small. You have less to lose.&lt;br /&gt;
** If you pick a public fight with a misbehaving big player over this, guess who wins? If the press covers it as little guy vs the big guy etc. narrative.&lt;br /&gt;
* Our growth is flat!&lt;br /&gt;
** Exactly - this won't affect it.  But maybe a little positive publicity will help.&lt;br /&gt;
* We could implement the OAuth-based proprietary address book APIs, but we'd have to invest the development time to do Facebook, Yahoo, and Google.&lt;br /&gt;
** Disable the the password anti-pattern code in the meantime.&lt;br /&gt;
* The pragmatic downside is that our growth is stagnant, we need to do features that'll benefit us, and this isn't at the top of the list of features that can do that for us.&lt;br /&gt;
** This is the opportunity cost argument.  It is the same problem with fixing polluting factories vs. building new factories.&lt;br /&gt;
* Why are people threatening to leave us or worse?&lt;br /&gt;
** Without community pressure/embarrassment, companies don't change.&lt;br /&gt;
* I think we've earned a little benefit of the doubt that we're not 'the industry'.&lt;br /&gt;
** Having a &amp;quot;polluting&amp;quot; interface that is on every day means no benefit of the doubt.&lt;br /&gt;
&lt;br /&gt;
==== Pollution analogy ====&lt;br /&gt;
The password anti-pattern = teaching people to pollute themselves.&lt;br /&gt;
*  Just because everyone else pollutes, doesn't mean it makes it right for you to do so.&lt;br /&gt;
* Polluting factories need to be fixed just as much as new factories need to be built.&lt;br /&gt;
* Without environmentalist pressure/embarrassment, polluting companies don't change.&lt;br /&gt;
* Why not focus your efforts on the huuuuuuge polluters like instead of my small company?&lt;br /&gt;
** Because easier to apply enough pressure to get smaller guys to change first. Same tactics worked for environmentalists.  Then they would use smaller victories to earn bigger victories, until they had racked up enough victories to make the big guys look *really* bad.&lt;br /&gt;
&lt;br /&gt;
Here are some sites that are currently doing this:&lt;br /&gt;
&lt;br /&gt;
=== Blipfm is better with friends ===&lt;br /&gt;
[http://www.flickr.com/photos/tantek/3199489045/ http://farm4.static.flickr.com/3389/3199489045_7169ea1a63.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://blip.fm Blip.fm]''' - Their &amp;quot;Import Address Book&amp;quot; functionality requests that you enter your username and password for your email provider(s): yahoo, gmail, hotmail, aol, msn.&lt;br /&gt;
&lt;br /&gt;
=== Facebook Connect ===&lt;br /&gt;
Per [http://micro.ben-ward.co.uk/post/65425363/facebook-connect Ben Ward's post on Facebook Connect], this user interface:&lt;br /&gt;
&lt;br /&gt;
[http://micro.ben-ward.co.uk/post/65425363/facebook-connect  http://5.media.tumblr.com/5vUVOHNMPhm1sj7138AlwQXho1_400.png]&lt;br /&gt;
&lt;br /&gt;
Appears to encourage users to enter their email address and password into something visually resembling (but easy to mimic) a Facebook popup window on ''any'' site.&lt;br /&gt;
&lt;br /&gt;
Thus all a malicious site would have to do is put up a button saying &amp;quot;Login with Facebook Connect&amp;quot;, then display an identically styled virtual popup, and the user, who has been taught by the Facebook Connect UI, will simply enter their email address and password.&lt;br /&gt;
&lt;br /&gt;
There's also a more detailed follow up on Ben's views of the Facebook Connect UI [http://ben-ward.co.uk/blog/oauth-flow/ on his blog] — and complements for the alternate version, whereby it uses the iframe to improve the UX for users who are ''already logged in'' to Facebook. There's a bit more snark as well, for those who are into that.&lt;br /&gt;
&lt;br /&gt;
Update: This issue was '''fixed''' by Facebook. They now use a separate pop-up window, complete with browser chrome, to log in when you're not already signed in to Facebook.&lt;br /&gt;
&lt;br /&gt;
=== Facebook see if more friends have joined ===&lt;br /&gt;
[http://flickr.com/photos/factoryjoe/2110461562/ http://farm3.static.flickr.com/2324/2110461562_e624ab4175.jpg]&lt;br /&gt;
&lt;br /&gt;
[http://28.media.tumblr.com/tumblr_l5qcn44Rxg1qzt3x8o1_500.png]&lt;br /&gt;
&lt;br /&gt;
'''[http://facebook.com Facebook]''' - Their &amp;quot;see if more friends have joined Facebook&amp;quot; feature provides you with a popup menu to enter passwords for numerous sites.&lt;br /&gt;
&lt;br /&gt;
=== GetSatisfaction Twitter This widget ===&lt;br /&gt;
As [http://twitter.com/adactio/status/1020708247 reported by Jeremy Keith], apparently the [http://getsatisfaction.com GetSatisfaction] &amp;quot;Twitter This&amp;quot; widget requests your Twitter username and password. &amp;lt;strong&amp;gt;(screenshot needed)&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the support thread on GetSatisfaction &amp;quot;[http://getsatisfaction.com/getsatisfaction/topics/stop_asking_for_twitter_passwords Stop asking for Twitter passwords]&amp;quot; for more.&lt;br /&gt;
&lt;br /&gt;
=== Nsyght import your profile and friends ===&lt;br /&gt;
[http://www.flickr.com/photos/tantek/2254537667/ http://farm3.static.flickr.com/2035/2254537667_d831c1fb3a.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://nsyght.com Nsyght]''' - Register for an account to import from Digg, Pownce, Last.fm, and Twitter (site is in public alpha)&lt;br /&gt;
* Unfortunately the &amp;quot;import from Digg, Pownce, Last.fm, and Twitter&amp;quot; feature depends on entering your username and password to those sites, which is ironic since those sites support microformats and [[social-network-portability]]!&lt;br /&gt;
&lt;br /&gt;
=== Plaxo - Let's look for your friends in your address book ===&lt;br /&gt;
[http://www.flickr.com/photos/manveru/3215481930/ http://farm4.static.flickr.com/3088/3215481930_979c0a7f61.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://plaxo.com plaxo]''' - Asks in several forms for passwords of different mail services.&lt;br /&gt;
&lt;br /&gt;
=== Plinky - Find Your Friends ===&lt;br /&gt;
[http://www.flickr.com/photos/tantek/3218629483/ http://farm4.static.flickr.com/3335/3218629483_e40019cac9.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://plinky.com Plinky]''''s &amp;quot;Find Your Friends&amp;quot; feature, which it presents to every newly signed up user, asks for your email address and password for a variety of services.&lt;br /&gt;
&lt;br /&gt;
As [http://twitter.com/dewitt/status/1145448221 DeWitt tweeted]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Google, Yahoo, and Microsoft all support browser-based delegated authorization apis for contacts. Plinky should use those apis.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also [http://friendfeed.com/e/6ff1f9ce-df01-4250-05de-c7009f31925f/Wow-Plinky-usernames-are-going-faster-than/ this thread by Jason Shellen (CEO of Plinky)] who says some hopeful things: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;DeWitt - You make a good point. I'll discuss it with the team Monday. In other news, we do support OAuth for posting to Blogger.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quechup which friends already use ===&lt;br /&gt;
[http://mashable.com/2007/09/02/quechup/ http://mashable.com/wp-content/uploads/2007/09/quechupsignup.PNG]&lt;br /&gt;
&lt;br /&gt;
=== ShareThis import your contact lists ===&lt;br /&gt;
[http://flickr.com/photos/factoryjoe/1344414673/ http://farm2.static.flickr.com/1088/1344414673_8e306e265d_o.png]&lt;br /&gt;
[http://flickr.com/photos/factoryjoe/1345315346/ http://farm2.static.flickr.com/1143/1345315346_8eb2cf4d7c_o.png]&lt;br /&gt;
&lt;br /&gt;
ShareThis asks for your username and password to email services and social network sites.&lt;br /&gt;
&lt;br /&gt;
=== SlideShare signup form ===&lt;br /&gt;
As [http://twitter.com/adactio/status/1020670561 reported by Jeremy Keith], apparently the [http://www.slideshare.net/signup SlideShare signup form] asks for your (in this order)&lt;br /&gt;
* Username &lt;br /&gt;
* Email Address &lt;br /&gt;
* Password &lt;br /&gt;
* Confirm Password&lt;br /&gt;
&amp;lt;strong&amp;gt;(screenshot needed)&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because of the proximity of &amp;quot;Email Address&amp;quot; and &amp;quot;Password&amp;quot; input fields it is easy to mistake this for asking for your email address and email password. Perhaps it is asking for your email password? Or perhaps it asks for that later in the process? Screenshots would help.&lt;br /&gt;
&lt;br /&gt;
See the GetSatisfaction support thread &amp;quot;[http://getsatisfaction.com/slideshare/topics/asking_for_3rd_party_passwords Asking for 3rd party passwords]&amp;quot; for more.&lt;br /&gt;
&lt;br /&gt;
=== StockTwits login ===&lt;br /&gt;
[http://www.flickr.com/photos/factoryjoe/3061262427/ http://farm4.static.flickr.com/3010/3061262427_3775189375.jpg]&lt;br /&gt;
&lt;br /&gt;
StockTwits.com asks you to &amp;quot;Login&amp;quot; with your Twitter username and password.  StockTwits is not run by Twitter, therefore they are asking you for your username and password to another site.&lt;br /&gt;
&lt;br /&gt;
=== Twitpic login to twitter ===&lt;br /&gt;
[http://flickr.com/photos/ronin691/2368324013/ http://farm3.static.flickr.com/2166/2368324013_0a15d337c0.jpg]&lt;br /&gt;
&lt;br /&gt;
Twitpic asks you to enter your Twitter username and password.  They are not the same site, nor are they run by the same people or company.&lt;br /&gt;
&lt;br /&gt;
=== Twitter are your friends on ===&lt;br /&gt;
[http://www.flickr.com/photos/ronin691/2110909518/ http://farm3.static.flickr.com/2179/2110909518_fde956c2ee.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://twitter.com/ Twitter]''' is a service that many users (including many of us active with microformats) love and adore and use constantly. Plus they implement microformats (e.g. [[hcard supporting user profiles]] and [[hcard xfn supporting friends lists]])!&lt;br /&gt;
&lt;br /&gt;
However, we still need to call them out for supporting the third-party password anti-pattern.&lt;br /&gt;
&lt;br /&gt;
As co-authors of [[Oauth]], please Twitter, implement and evangelize that path (perhaps even on that &amp;quot;are your friends on&amp;quot; page), rather than this anti-pattern.&lt;br /&gt;
&lt;br /&gt;
=== TwitterNotes ===&lt;br /&gt;
[http://flickr.com/photos/guspim/2138354357/ http://farm3.static.flickr.com/2221/2138354357_0c566fd62e.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://twitternotes.com/ TwitterNotes]''' asks you to &amp;quot;login with your Twitter account&amp;quot; username and password.  They are not the same site, nor are they run by the same people or company.&lt;br /&gt;
&lt;br /&gt;
== Join to fix your profile ==&lt;br /&gt;
Some social network sites create public profiles for you without you having any contact with them.  If there are any mistakes, they make you join in order to fix them.  This sounds like blackmail: Join our service or else we'll continue to publish inaccurate information about you and therefore spam websearch results about you with misinformation.&lt;br /&gt;
&lt;br /&gt;
=== Spock join to fix ===&lt;br /&gt;
* 2007-08-15 [http://www.wired.com/techbiz/startups/news/2007/08/spock_reputation Wired News: Astonishing! Spock Thinks You're a Pedophile]&lt;br /&gt;
* 2007-12-16 [http://www.fullcirc.com/wp/2007/12/16/please-dont-invite-me-to-spock/ Full Circle Associates: Please, don’t invite me to Spock]&lt;br /&gt;
* 2007-12-16 [http://ourfounder.typepad.com/leblog/2007/12/it-may-be-the-e.html Jim Benson: It May Be the Evil Spock] (and [http://ourfounder.typepad.com/leblog/2007/12/an-initial-resp.html An Initial Response to Spock])&lt;br /&gt;
&lt;br /&gt;
== One Unified Social Network ==&lt;br /&gt;
Several companies are trying to build the &amp;quot;one unified social network&amp;quot; (to rule them all) where they own/control the social network, and you're &amp;quot;allowed to&amp;quot; build applications on top of their proprietary platform.  The most recent example of this is perhaps [http://facebook.com/ Facebook].&lt;br /&gt;
&lt;br /&gt;
This is a bad idea for the same reason you don't see &amp;quot;one universal blogging service&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Other examples of folks walking down this path:&lt;br /&gt;
* [http://hcii.cmu.edu/M-HCI/2006/SocialstreamProject/index.php Socialstream] - a [http://google.com/ Google] sponsored project at CMU.  Key quote: &amp;quot;a unified social network that, as a service, provides social data to many other applications&amp;quot;.  See also references in this Forbes article: [http://www.forbes.com/technology/2007/08/28/google-brazil-network-tech-cx_ag_0828orkut.html Google's Secret Society].&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The hope is that these services will see the potential upside of providing open user profiles and social networks through [[social network portability]] and thus enable syndication of such data, as popular blogging services do.&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[social-network-portability]]&lt;br /&gt;
* [[anti-patterns]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=social-network-anti-patterns&amp;diff=42868</id>
		<title>social-network-anti-patterns</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=social-network-anti-patterns&amp;diff=42868"/>
		<updated>2010-07-19T20:42:47Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Facebook Connect */ Facebook have fixed Connect UI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Social Network Anti-patterns&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
While [[social-network-portability]] documents what to do to put your site on the open social web and be a good user-centric service in general, it's been noted that not everyone follows such advice and instead opts for a bunch of alternative either one-off (wasteful) or downright user-unfriendly tactics.  This page documents such [[anti-patterns]] of social network design and implementation and provides (unfortunately) real world examples of such badly designed sites.&lt;br /&gt;
&lt;br /&gt;
== Spam your contacts ==&lt;br /&gt;
Many social networking sites ask you to &amp;lt;span id=&amp;quot;Upload_your_Address_Book&amp;quot;&amp;gt;upload your address book&amp;lt;/span&amp;gt;, or &amp;quot;Find Your Friends&amp;quot;, when what the feature really does is '''Spam your contacts'''.&lt;br /&gt;
&lt;br /&gt;
These sites seem to use your uploading of an address book as tacit/implied permission to spam all your friends with invites, which will annoy your friends, and make you look foolish. &lt;br /&gt;
* [http://twitter.com/spiller2/statuses/811960394 Stephen Spillane apologized on 2008-05-15] to his friends for what sounds like involuntary spamming due to a social network invite: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;apologies to anyone who got an annoying invite from me to some stupid social network. The things men make me do&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Making users annoy, look dumb to their friends, and feel compelled to apologize is not good design.&lt;br /&gt;
&lt;br /&gt;
This spamming behavior is now so bad, that users are creating new email accounts to knowingly avoid the problem:&lt;br /&gt;
* [http://twitter.com/lisamac/statuses/239777272 Lisa McMillan on Twitter 2007-08-31] &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;getting a special email account with no contacts for signing up to social networks. Then, I won't mind when they hijack my address book.&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apparently this contact spam has in at least one case taken the form of instant-message spam (spim) which is then used to spread a contact-based virus!&lt;br /&gt;
&lt;br /&gt;
* [http://twitter.com/theinfonaut/status/1246859290 Leslie Chicoine on Twitter 2009-02-24] &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;There's a contacts based virus going around, don't give your IM, Yahoo, Google Contacts etc. info to any website!&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solution: support [[social-network-portability]] instead, not address book spamming.&lt;br /&gt;
&lt;br /&gt;
Read more about why this is an anti-pattern:&lt;br /&gt;
* 2007-12-19 [http://factoryjoe.com/blog/2007/12/19/public-nuisance-1-importing-your-contacts/ Chris Messina: Public nuisance #1: Importing your contacts]&lt;br /&gt;
&lt;br /&gt;
Here are some sites that are currently doing this:&lt;br /&gt;
&lt;br /&gt;
=== Bebo invites===&lt;br /&gt;
Bebo appears to have a user interface that makes it too easy for users to unintentionally spam everyone in their address book.&lt;br /&gt;
&lt;br /&gt;
Evidence that users have unintentionally sending invite spam to their contacts:&lt;br /&gt;
&lt;br /&gt;
As [http://twitter.com/walelia/statuses/771302864 noted by user Valerie Noble on 2008-03-13]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;What the hell, I stupidly sent bebo invites to eveyone in my address book. Boo!&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and [http://twitter.com/cksthree/statuses/773542421 user C.K. Sample III on 2008-03-18]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;signed up for bebo. sorry to everyone in my address book who got spammed by the sign up. I thought it would work more like twitter&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Evidence that users are receiving Bebo invite spam:&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/frankensite/statuses/774020094 Brian Alvey notes on 2008-03-19]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;Considering deleting the duplicate Bebo invitations I'm getting. Everyone has 3+ addresses for me. Another address book spam engine. Hurray!&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still a problem as of May 2008:&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/cmpayne/statuses/811938598 Cameron Payne was unpleasantly surprised on 2008-05-15]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;goddamn Bebo just invited *everyone* in my Yahoo address book. I don't think I told it to do that. WTF!? Beware!&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Goodreads are your friends already on ===&lt;br /&gt;
Goodreads also has a user interface that misleads even very web-savvy users into unintentionally spamming everyone in their address book.&lt;br /&gt;
&lt;br /&gt;
[http://flickr.com/photos/redcarpet/2619408018/in/photostream/ http://farm4.static.flickr.com/3114/2619408018_25c0147054.jpg]&lt;br /&gt;
&lt;br /&gt;
[http://www.mickipedia.com/ Micki Krimmell] wrote both [http://www.mickipedia.com/?p=1174 a blog post] and a [http://getsatisfaction.com/goodreads/topics/why_did_goodreads_trick_me_into_spamming_my_entire_address_book post on GetSatisfaction] describing her experience with being tricked into spamming all her friends.&lt;br /&gt;
&lt;br /&gt;
A representative from Goodreads has followed up on both Micki's blog post and Getsatisfaction post, however, as far as is known, Goodreads' user interface has not been changed/improved accordingly to be less misleading.&lt;br /&gt;
&lt;br /&gt;
=== Quechup find your friends on ===&lt;br /&gt;
[http://www.flickr.com/photos/chrishambly/1302362704/ http://farm2.static.flickr.com/1339/1302362704_63d97a8930.jpg]&lt;br /&gt;
&lt;br /&gt;
Quechup has a feature to &amp;quot;find your friends&amp;quot; which, even if it says &amp;quot;no contact present&amp;quot; will spam all your contacts in your address book and thus annoy all your friends and embarrass you.  Clearly it is not just ''finding your friends from'' your address book, it is ''inviting everyone in'' your address book.&lt;br /&gt;
* 2007-07-31 [http://www.ibert.be/2007/07/quechup-disaster.html BERT VAN WASSENHOVE: Quechup disaster]&lt;br /&gt;
* 2007-09-02 [http://www.chrishambly.com/content/quechup-and-mass-hysteria Chris Hambly: Quechup And Mass Hysteria]&lt;br /&gt;
* 2007-09-02 [http://mashable.com/2007/09/02/quechup/ Mashable: Are You Getting Quechup Spammed?]&lt;br /&gt;
* 2007-09-05 [http://www.brianoberkirch.com/2007/09/05/should-google-help-us-stop-quechup-spam/ Brian Oberkirch: should google help us stop quechup spam?]&lt;br /&gt;
&lt;br /&gt;
=== Spock scan my address book ===&lt;br /&gt;
* 2007-12-17 [http://beth.typepad.com/beths_blog/2007/12/beware-of-spock.html Beth Kanter: Beware of Spock is not Star Trek 2.0 .... Beware]&lt;br /&gt;
&lt;br /&gt;
== Enter your other site login and password ==&lt;br /&gt;
Also known as:&lt;br /&gt;
* &amp;quot;&amp;lt;span id=&amp;quot;Enter_your_email_login_and_password&amp;quot;&amp;gt;Enter your email login and password&amp;lt;/span&amp;gt;&amp;quot; anti-pattern.&lt;br /&gt;
* Third Party Password Antipattern ([http://flickr.com/photos/tags/3ppantipattern 3ppantipattern], tppantipattern)&lt;br /&gt;
* Password Antipattern&lt;br /&gt;
&lt;br /&gt;
Giving any site your login credentials/permissions for another site or service is a &amp;lt;strong&amp;gt;very bad idea.&amp;lt;/strong&amp;gt;  You cannot trust that the site will treat your login credentials with proper care (e.g. Quechup uses this antipattern to implement the [[#Spam_your_contacts|spam everyone your the address book antipattern above]]).&lt;br /&gt;
&lt;br /&gt;
It is also very bad user interface design. These sites that ask for your login (whether gmail or other services) are teaching users a very bad habit, a habit that is akin to what phishing sites depend on.  Essentially you are teaching a user that this type of form is safe whereas it actually presents quite the danger given the number of phishing sites out there.&lt;br /&gt;
&lt;br /&gt;
Don't ask users for their login and password to another site like gMail etc.&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
* drop import support for the sites that don't offer hCard+XFN friends lists and/or [[OAuth]].&lt;br /&gt;
** Note that last.fm dropped support for their password anti-pattern support in the recent (2008 June) redesign!&lt;br /&gt;
* support [[social-network-portability]].&lt;br /&gt;
* and if you must, support site-specific proprietary APIs which depend on OAuth, e.g. Google Address Book API, Yahoo Address Book API.&lt;br /&gt;
&lt;br /&gt;
=== Posts ===&lt;br /&gt;
Read more about why this is an anti-pattern:&lt;br /&gt;
* 2007-08-14 [http://www.brianoberkirch.com/2007/08/14/two-social-system-design-trends-that-should-really-really-stop-like-now/ Brian Oberkirch: Two social system design trends that should really, really stop. like now.]&lt;br /&gt;
* 2007-10-11 [http://adactio.com/journal/1357 Jeremy Keith: The password anti-pattern]&lt;br /&gt;
* 2008-01-04 [http://www.brianoberkirch.com/2008/01/04/this-antipattern-is-kryptonite-to-the-open-social-web/ Brian Oberkirch: this antipattern is kryptonite to the open social web]&lt;br /&gt;
* 2008-03-15 [http://adactio.com/journal/1421/ Jeremy Keith: Anti-pattern begone] (mentions Google announcement of their Contacts Data API)&lt;br /&gt;
* 2008-06-04 [http://adactio.com/journal/1475/ Jeremy Keith: Making contact] (mentions the Yahoo announcement of the release of their Address Book API).&lt;br /&gt;
* 2008-07-15 [http://getsatisfaction.com/pownce/topics/why_does_pownce_keep_killing_kittens_with_the_password_anti_pattern Jeremy Keith: Why does Pownce keep killing kittens with the password anti-pattern?]&lt;br /&gt;
* 2008-09-23 [http://pownce.com/adactio/notes/3571554/ Jeremy Keith pownces Either the password anti-pattern goes or I do.]&lt;br /&gt;
* 2008-09-25 [http://adactio.com/journal/1513/ Jeremy Keith: Anti-pattern recognition]&lt;br /&gt;
&lt;br /&gt;
=== Excuses and responses===&lt;br /&gt;
* Some major players are not helping the cause.&lt;br /&gt;
** Just because someone/something else big is misbehaving, that is no excuse for you to do so.&lt;br /&gt;
* We are following pretty common practice.&lt;br /&gt;
** Just because many other folks are misbehaving, that is no excuse for you to.&lt;br /&gt;
* Variant: We are implementing the same code as Facebook and Twitter so we went for best practices.&lt;br /&gt;
** Implementing the same code is not best practice. Implementing the same code in this case is the lowest common denominator.&lt;br /&gt;
* We aren't in a terribly strong position to drop support.&lt;br /&gt;
** Of course you are! Precisely because you *are* small. You have less to lose.&lt;br /&gt;
** If you pick a public fight with a misbehaving big player over this, guess who wins? If the press covers it as little guy vs the big guy etc. narrative.&lt;br /&gt;
* Our growth is flat!&lt;br /&gt;
** Exactly - this won't affect it.  But maybe a little positive publicity will help.&lt;br /&gt;
* We could implement the OAuth-based proprietary address book APIs, but we'd have to invest the development time to do Facebook, Yahoo, and Google.&lt;br /&gt;
** Disable the the password anti-pattern code in the meantime.&lt;br /&gt;
* The pragmatic downside is that our growth is stagnant, we need to do features that'll benefit us, and this isn't at the top of the list of features that can do that for us.&lt;br /&gt;
** This is the opportunity cost argument.  It is the same problem with fixing polluting factories vs. building new factories.&lt;br /&gt;
* Why are people threatening to leave us or worse?&lt;br /&gt;
** Without community pressure/embarrassment, companies don't change.&lt;br /&gt;
* I think we've earned a little benefit of the doubt that we're not 'the industry'.&lt;br /&gt;
** Having a &amp;quot;polluting&amp;quot; interface that is on every day means no benefit of the doubt.&lt;br /&gt;
&lt;br /&gt;
==== Pollution analogy ====&lt;br /&gt;
The password anti-pattern = teaching people to pollute themselves.&lt;br /&gt;
*  Just because everyone else pollutes, doesn't mean it makes it right for you to do so.&lt;br /&gt;
* Polluting factories need to be fixed just as much as new factories need to be built.&lt;br /&gt;
* Without environmentalist pressure/embarrassment, polluting companies don't change.&lt;br /&gt;
* Why not focus your efforts on the huuuuuuge polluters like instead of my small company?&lt;br /&gt;
** Because easier to apply enough pressure to get smaller guys to change first. Same tactics worked for environmentalists.  Then they would use smaller victories to earn bigger victories, until they had racked up enough victories to make the big guys look *really* bad.&lt;br /&gt;
&lt;br /&gt;
Here are some sites that are currently doing this:&lt;br /&gt;
&lt;br /&gt;
=== Blipfm is better with friends ===&lt;br /&gt;
[http://www.flickr.com/photos/tantek/3199489045/ http://farm4.static.flickr.com/3389/3199489045_7169ea1a63.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://blip.fm Blip.fm]''' - Their &amp;quot;Import Address Book&amp;quot; functionality requests that you enter your username and password for your email provider(s): yahoo, gmail, hotmail, aol, msn.&lt;br /&gt;
&lt;br /&gt;
=== Facebook Connect ===&lt;br /&gt;
Per [http://micro.ben-ward.co.uk/post/65425363/facebook-connect Ben Ward's post on Facebook Connect], this user interface:&lt;br /&gt;
&lt;br /&gt;
[http://micro.ben-ward.co.uk/post/65425363/facebook-connect  http://5.media.tumblr.com/5vUVOHNMPhm1sj7138AlwQXho1_400.png]&lt;br /&gt;
&lt;br /&gt;
Appears to encourage users to enter their email address and password into something visually resembling (but easy to mimic) a Facebook popup window on ''any'' site.&lt;br /&gt;
&lt;br /&gt;
Thus all a malicious site would have to do is put up a button saying &amp;quot;Login with Facebook Connect&amp;quot;, then display an identically styled virtual popup, and the user, who has been taught by the Facebook Connect UI, will simply enter their email address and password.&lt;br /&gt;
&lt;br /&gt;
There's also a more detailed follow up on Ben's views of the Facebook Connect UI [http://ben-ward.co.uk/blog/oauth-flow/ on his blog] — and complements for the alternate version, whereby it uses the iframe to improve the UX for users who are ''already logged in'' to Facebook. There's a bit more snark as well, for those who are into that.&lt;br /&gt;
&lt;br /&gt;
Update: This issue was '''fixed''' by Facebook. They now use a separate pop-up window, complete with browser chrome, to log in when you're not already signed in to Facebook.&lt;br /&gt;
&lt;br /&gt;
=== Facebook see if more friends have joined ===&lt;br /&gt;
[http://flickr.com/photos/factoryjoe/2110461562/ http://farm3.static.flickr.com/2324/2110461562_e624ab4175.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://facebook.com Facebook]''' - Their &amp;quot;see if more friends have joined Facebook&amp;quot; feature provides you with a popup menu to enter passwords for numerous sites.&lt;br /&gt;
&lt;br /&gt;
=== GetSatisfaction Twitter This widget ===&lt;br /&gt;
As [http://twitter.com/adactio/status/1020708247 reported by Jeremy Keith], apparently the [http://getsatisfaction.com GetSatisfaction] &amp;quot;Twitter This&amp;quot; widget requests your Twitter username and password. &amp;lt;strong&amp;gt;(screenshot needed)&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the support thread on GetSatisfaction &amp;quot;[http://getsatisfaction.com/getsatisfaction/topics/stop_asking_for_twitter_passwords Stop asking for Twitter passwords]&amp;quot; for more.&lt;br /&gt;
&lt;br /&gt;
=== Nsyght import your profile and friends ===&lt;br /&gt;
[http://www.flickr.com/photos/tantek/2254537667/ http://farm3.static.flickr.com/2035/2254537667_d831c1fb3a.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://nsyght.com Nsyght]''' - Register for an account to import from Digg, Pownce, Last.fm, and Twitter (site is in public alpha)&lt;br /&gt;
* Unfortunately the &amp;quot;import from Digg, Pownce, Last.fm, and Twitter&amp;quot; feature depends on entering your username and password to those sites, which is ironic since those sites support microformats and [[social-network-portability]]!&lt;br /&gt;
&lt;br /&gt;
=== Plaxo - Let's look for your friends in your address book ===&lt;br /&gt;
[http://www.flickr.com/photos/manveru/3215481930/ http://farm4.static.flickr.com/3088/3215481930_979c0a7f61.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://plaxo.com plaxo]''' - Asks in several forms for passwords of different mail services.&lt;br /&gt;
&lt;br /&gt;
=== Plinky - Find Your Friends ===&lt;br /&gt;
[http://www.flickr.com/photos/tantek/3218629483/ http://farm4.static.flickr.com/3335/3218629483_e40019cac9.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://plinky.com Plinky]''''s &amp;quot;Find Your Friends&amp;quot; feature, which it presents to every newly signed up user, asks for your email address and password for a variety of services.&lt;br /&gt;
&lt;br /&gt;
As [http://twitter.com/dewitt/status/1145448221 DeWitt tweeted]: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Google, Yahoo, and Microsoft all support browser-based delegated authorization apis for contacts. Plinky should use those apis.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also [http://friendfeed.com/e/6ff1f9ce-df01-4250-05de-c7009f31925f/Wow-Plinky-usernames-are-going-faster-than/ this thread by Jason Shellen (CEO of Plinky)] who says some hopeful things: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;DeWitt - You make a good point. I'll discuss it with the team Monday. In other news, we do support OAuth for posting to Blogger.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quechup which friends already use ===&lt;br /&gt;
[http://mashable.com/2007/09/02/quechup/ http://mashable.com/wp-content/uploads/2007/09/quechupsignup.PNG]&lt;br /&gt;
&lt;br /&gt;
=== ShareThis import your contact lists ===&lt;br /&gt;
[http://flickr.com/photos/factoryjoe/1344414673/ http://farm2.static.flickr.com/1088/1344414673_8e306e265d_o.png]&lt;br /&gt;
[http://flickr.com/photos/factoryjoe/1345315346/ http://farm2.static.flickr.com/1143/1345315346_8eb2cf4d7c_o.png]&lt;br /&gt;
&lt;br /&gt;
ShareThis asks for your username and password to email services and social network sites.&lt;br /&gt;
&lt;br /&gt;
=== SlideShare signup form ===&lt;br /&gt;
As [http://twitter.com/adactio/status/1020670561 reported by Jeremy Keith], apparently the [http://www.slideshare.net/signup SlideShare signup form] asks for your (in this order)&lt;br /&gt;
* Username &lt;br /&gt;
* Email Address &lt;br /&gt;
* Password &lt;br /&gt;
* Confirm Password&lt;br /&gt;
&amp;lt;strong&amp;gt;(screenshot needed)&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because of the proximity of &amp;quot;Email Address&amp;quot; and &amp;quot;Password&amp;quot; input fields it is easy to mistake this for asking for your email address and email password. Perhaps it is asking for your email password? Or perhaps it asks for that later in the process? Screenshots would help.&lt;br /&gt;
&lt;br /&gt;
See the GetSatisfaction support thread &amp;quot;[http://getsatisfaction.com/slideshare/topics/asking_for_3rd_party_passwords Asking for 3rd party passwords]&amp;quot; for more.&lt;br /&gt;
&lt;br /&gt;
=== StockTwits login ===&lt;br /&gt;
[http://www.flickr.com/photos/factoryjoe/3061262427/ http://farm4.static.flickr.com/3010/3061262427_3775189375.jpg]&lt;br /&gt;
&lt;br /&gt;
StockTwits.com asks you to &amp;quot;Login&amp;quot; with your Twitter username and password.  StockTwits is not run by Twitter, therefore they are asking you for your username and password to another site.&lt;br /&gt;
&lt;br /&gt;
=== Twitpic login to twitter ===&lt;br /&gt;
[http://flickr.com/photos/ronin691/2368324013/ http://farm3.static.flickr.com/2166/2368324013_0a15d337c0.jpg]&lt;br /&gt;
&lt;br /&gt;
Twitpic asks you to enter your Twitter username and password.  They are not the same site, nor are they run by the same people or company.&lt;br /&gt;
&lt;br /&gt;
=== Twitter are your friends on ===&lt;br /&gt;
[http://www.flickr.com/photos/ronin691/2110909518/ http://farm3.static.flickr.com/2179/2110909518_fde956c2ee.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://twitter.com/ Twitter]''' is a service that many users (including many of us active with microformats) love and adore and use constantly. Plus they implement microformats (e.g. [[hcard supporting user profiles]] and [[hcard xfn supporting friends lists]])!&lt;br /&gt;
&lt;br /&gt;
However, we still need to call them out for supporting the third-party password anti-pattern.&lt;br /&gt;
&lt;br /&gt;
As co-authors of [[Oauth]], please Twitter, implement and evangelize that path (perhaps even on that &amp;quot;are your friends on&amp;quot; page), rather than this anti-pattern.&lt;br /&gt;
&lt;br /&gt;
=== TwitterNotes ===&lt;br /&gt;
[http://flickr.com/photos/guspim/2138354357/ http://farm3.static.flickr.com/2221/2138354357_0c566fd62e.jpg]&lt;br /&gt;
&lt;br /&gt;
'''[http://twitternotes.com/ TwitterNotes]''' asks you to &amp;quot;login with your Twitter account&amp;quot; username and password.  They are not the same site, nor are they run by the same people or company.&lt;br /&gt;
&lt;br /&gt;
== Join to fix your profile ==&lt;br /&gt;
Some social network sites create public profiles for you without you having any contact with them.  If there are any mistakes, they make you join in order to fix them.  This sounds like blackmail: Join our service or else we'll continue to publish inaccurate information about you and therefore spam websearch results about you with misinformation.&lt;br /&gt;
&lt;br /&gt;
=== Spock join to fix ===&lt;br /&gt;
* 2007-08-15 [http://www.wired.com/techbiz/startups/news/2007/08/spock_reputation Wired News: Astonishing! Spock Thinks You're a Pedophile]&lt;br /&gt;
* 2007-12-16 [http://www.fullcirc.com/wp/2007/12/16/please-dont-invite-me-to-spock/ Full Circle Associates: Please, don’t invite me to Spock]&lt;br /&gt;
* 2007-12-16 [http://ourfounder.typepad.com/leblog/2007/12/it-may-be-the-e.html Jim Benson: It May Be the Evil Spock] (and [http://ourfounder.typepad.com/leblog/2007/12/an-initial-resp.html An Initial Response to Spock])&lt;br /&gt;
&lt;br /&gt;
== One Unified Social Network ==&lt;br /&gt;
Several companies are trying to build the &amp;quot;one unified social network&amp;quot; (to rule them all) where they own/control the social network, and you're &amp;quot;allowed to&amp;quot; build applications on top of their proprietary platform.  The most recent example of this is perhaps [http://facebook.com/ Facebook].&lt;br /&gt;
&lt;br /&gt;
This is a bad idea for the same reason you don't see &amp;quot;one universal blogging service&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Other examples of folks walking down this path:&lt;br /&gt;
* [http://hcii.cmu.edu/M-HCI/2006/SocialstreamProject/index.php Socialstream] - a [http://google.com/ Google] sponsored project at CMU.  Key quote: &amp;quot;a unified social network that, as a service, provides social data to many other applications&amp;quot;.  See also references in this Forbes article: [http://www.forbes.com/technology/2007/08/28/google-brazil-network-tech-cx_ag_0828orkut.html Google's Secret Society].&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The hope is that these services will see the potential upside of providing open user profiles and social networks through [[social network portability]] and thus enable syndication of such data, as popular blogging services do.&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[social-network-portability]]&lt;br /&gt;
* [[anti-patterns]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=42155</id>
		<title>value-class-pattern</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=42155"/>
		<updated>2010-03-10T19:19:26Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Parsing machine-data value-title */ Updated language regarding microformats which *must* advise on value-class-pattern support, and refer to the subsequent documentation for retroactive support.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Value Class Pattern&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value class pattern is derived from [[hCard#Value_excerpting|value-excerpting]] in hCard.&lt;br /&gt;
&lt;br /&gt;
''The editors believe the value-class-pattern to be feature complete and ready for use in markup. Implementers are encouraged to update accordingly and provide [[value-class-pattern-feedback|feedback]]. '''Note''', the precise parsing behavior could change in response to implementer feedback, but the core methods are stable. You should watch this page for updates.''&lt;br /&gt;
&lt;br /&gt;
See also, the [http://microformats.org/blog/2009/05/12/value-class-pattern/ blog announcement].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
; Editors&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:BenWard|Ben Ward]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
; Short URL&lt;br /&gt;
: &amp;lt;kbd&amp;gt;http://tr.im/valueclass&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, only a part of an element's content is to be used as the value of a microformat property. This may occur when a property has optional subproperties, such as &amp;lt;code&amp;gt;tel: type&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tel: value&amp;lt;/code&amp;gt; in [[hCard]]. Other times, the most appropriate structure for a property may include other content.&lt;br /&gt;
&lt;br /&gt;
For these purposes, the special class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used to mark-up the relevant data excerpt from larger element content.&lt;br /&gt;
&lt;br /&gt;
==Simple Examples==&lt;br /&gt;
&lt;br /&gt;
Here is markup for a home phone number:&lt;br /&gt;
&lt;br /&gt;
vCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;TEL;TYPE=HOME:+1.415.555.1212&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;+1.415.555.1212&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;Home: +1.415.555.1212&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sometimes the value for a microformats property must be split into multiple pieces in the content of the element representing that property. Multiple elements with a class name of &amp;quot;value&amp;quot; (value elements) can be used to extract and concatenate these pieces into a single value for microformats properties which expect simple strings or tel values.&lt;br /&gt;
&lt;br /&gt;
Another example, this time using a localized (British) telephone number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+44&amp;lt;/span&amp;gt; (0) &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;1223 123 123&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the valid ''data'' for the telephone number is &amp;lt;samp&amp;gt;+441223123123&amp;lt;/samp&amp;gt;, but the way in which phone number is presented in Britain will include the &amp;lt;samp&amp;gt;(0)&amp;lt;/samp&amp;gt;, for local dialling. That is, from anywhere in the world you may dial &amp;lt;kbd&amp;gt;+441223123123&amp;lt;/kbd&amp;gt;, or from within Britain you may dial &amp;lt;kbd&amp;gt;01223123123&amp;lt;/kbd&amp;gt;. Common local publishing interferes with the data, since dialling &amp;lt;kbd&amp;gt;'''+440'''1223123123&amp;lt;/kbd&amp;gt; is an invalid number.&lt;br /&gt;
&lt;br /&gt;
In the mark-up, two &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes target the part of the telephone number string that makes an international, valid number, whilst allowing conventional presentation.&lt;br /&gt;
&lt;br /&gt;
Another example, adding a place name to a [[geo]] co-ordinate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I'm loitering outside The Bricklayer's Arms&lt;br /&gt;
  &amp;lt;span class=&amp;quot;geo&amp;quot;&amp;gt;&lt;br /&gt;
    51° 30' 48.45&amp;quot;, -0° 8' 53.23&amp;quot;&lt;br /&gt;
    (&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;51.513458;-0.14812&amp;lt;/span&amp;gt;)&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whilst the entire string is a geo point, it's only the decimal encoded co-ordinates which must be consumed by a microformats parser, so the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; class isolates it from the degrees form, which the publisher includes for completeness.&lt;br /&gt;
&lt;br /&gt;
==Basic Parsing==&lt;br /&gt;
# The value class pattern only applies to properties which are simple strings, enumerated values, telephone numbers, and datetimes. The value class pattern does not affect parsing of properties of type email, URL, URI, UID.&lt;br /&gt;
# Where an element with such a microformat property class name has a descendant with class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (a &amp;quot;value&amp;quot; element), parsers should use the following portion of that element:  &lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## for any other element, use its inner-text.&lt;br /&gt;
# Where there are multiple descendants of a property with class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (multiple value elements)&lt;br /&gt;
## if the microformats property expects a simple string, enumerated value, or telephone number, then the values extracted from the value elements should be concatenated ''without'' inserting additional characters or white-space.&lt;br /&gt;
## if the microformats property expects a datetime value, see the [[#Date_and_time_parsing|Date Time Parsing]] section.&lt;br /&gt;
# Descendants with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; must not be parsed deeper than one level. That is, where an element &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; has a &amp;lt;em&amp;gt;descendant&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;, the content of &amp;lt;strong&amp;gt;&amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt;&amp;lt;/strong&amp;gt; is taken as the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. Nesting additional elements with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; cannot be used to further isolate a property's value.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
 &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;lt;/em&amp;gt;&lt;br /&gt;
    &amp;lt;strong&amp;gt;But kittens are better!&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; has a child ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’, and that child has a ''grandchild'' ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’. However, the parsing of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes stops at the first level, so the data for &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is: &amp;lt;samp&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;amp;lt;/em&amp;gt;&amp;amp;lt;strong&amp;gt;But kittens are better!&amp;amp;lt;/strong&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/samp&amp;gt;, not just &amp;lt;samp&amp;gt;Puppies Rule!&amp;lt;/samp&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Date and time values ==&lt;br /&gt;
=== Summary ===&lt;br /&gt;
Some microformats properties expect an ISO8601 datetime value, e.g.  [[hCalendar]] &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dtend&amp;lt;/code&amp;gt; or [[hAtom]] &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Authors may use the value class pattern to separately specify the date and the time, which are then combined to specify a single datetime value.&lt;br /&gt;
&lt;br /&gt;
Example, this hCalendar 'dtstart' property with 'value' elements: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The weekly dinner will be on &lt;br /&gt;
    &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;abbr class=&amp;quot;value&amp;quot; title=&amp;quot;2008-06-24&amp;quot;&amp;gt;this Tuesday&amp;lt;/abbr&amp;gt; &lt;br /&gt;
     at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;18:30&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produces the following 'dtstart' value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
2008-06-24T18:30:00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and iCalendar converters produce the following DTSTART:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
DTSTART:20080624T183000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The lack of a timezone indicates a &amp;quot;floating&amp;quot; datetime, that is a datetime independent of any particular timezone. Examples of floating datetimes could be an alarm clock you set to ring at 7am, or the common 9am-5pm workday.&lt;br /&gt;
&lt;br /&gt;
=== Date and time parsing ===&lt;br /&gt;
For all date time properties (as defined in their respective microformats specifications), the following rules apply in addition to (and in some cases replacing) the above value class pattern parsing rules.&lt;br /&gt;
&lt;br /&gt;
When a &amp;quot;value&amp;quot; element is found, parse a value from the element as follows:&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* for any other element, use its inner-text.&lt;br /&gt;
* if the value has both a specific ISO8601 date and a specific time, use those and stop looking for &amp;quot;value&amp;quot; elements.&lt;br /&gt;
* if the value has *only* a specific date, specifically, fits the following ISO8601 date patterns (i.e. as documented in the [http://en.wikipedia.org/wiki/ISO_8601 Wikipedia summary of ISO8601])&lt;br /&gt;
** YYYY-MM-DD&lt;br /&gt;
** YYYY-DDD&lt;br /&gt;
** then use that as the date value.  For the purposes of the value class pattern, the hyphens &amp;quot;-&amp;quot; separating the year, month, day and/or ordinal day are required.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the date.&lt;br /&gt;
* if the value has *only* a specific time (with or without timezone), parse it for a time value that can match any of the following:&lt;br /&gt;
** HH:MM:SS-XX:YY&lt;br /&gt;
** HH:MM:SS+XX:YY&lt;br /&gt;
** HH:MM:SS-XXYY&lt;br /&gt;
** HH:MM:SS+XXYY&lt;br /&gt;
** HH:MM:SSZ&lt;br /&gt;
** HH:MM:SS&lt;br /&gt;
** HH:MM-XX:YY&lt;br /&gt;
** HH:MM+XX:YY&lt;br /&gt;
** HH:MM-XXYY&lt;br /&gt;
** HH:MM+XXYY&lt;br /&gt;
** HH:MMZ&lt;br /&gt;
** HH:MM&lt;br /&gt;
** HH is the 24 hour &amp;quot;hours&amp;quot; in the time, from 00 to 24, with optional leading 0 for values less than 10.&lt;br /&gt;
** MM are the minutes from 00 to 59&lt;br /&gt;
** SS are the optional seconds from 00 to 59 (60 for a leap second). If omitted, infer 00 seconds.&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** For the purposes of the value class pattern, the colons &amp;quot;:&amp;quot; separating the hour, minutes, seconds are required. &lt;br /&gt;
** However the colons &amp;quot;:&amp;quot; separating the hours and minutes of any timezone offset are ''optional'' and discouraged in order to make it less likely that a timezone offset will be confused for a time.&lt;br /&gt;
** Case insensitive { }&amp;quot;am&amp;quot;|{ }&amp;quot;a.m.&amp;quot; suffix to treat an HH value of 12 as 00, or a case-insensitive { }&amp;quot;pm&amp;quot;|{ }&amp;quot;p.m.&amp;quot; suffix to add 12 to HH value less than 12 - per [http://en.wikipedia.org/wiki/12-hour_clock Wikipedia article on the 12 hour clock]. Note: [[X2V]] has implemented this.&lt;br /&gt;
*** HH:MM:SSam&lt;br /&gt;
*** HH:MM:SSpm&lt;br /&gt;
*** HH:MMam&lt;br /&gt;
*** HH:MMpm&lt;br /&gt;
*** HHam&lt;br /&gt;
*** HHpm&lt;br /&gt;
*** where &amp;quot;am&amp;quot; and &amp;quot;pm&amp;quot; mean &amp;quot;am or a.m.&amp;quot; and &amp;quot;pm or p.m.&amp;quot; &lt;br /&gt;
*** when MM is omitted, infer 00 minutes.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the time.&lt;br /&gt;
* if the value has *only* a specific timezone, parse it for a time zone value that can match any of the following:&lt;br /&gt;
** -XX:YY&lt;br /&gt;
** +XX:YY&lt;br /&gt;
** -XXYY&lt;br /&gt;
** +XXYY&lt;br /&gt;
** -XX&lt;br /&gt;
** +XX&lt;br /&gt;
** Z&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the timezone.&lt;br /&gt;
&lt;br /&gt;
If by parsing the &amp;quot;value&amp;quot; element(s), at least a specific date has been found, then the &amp;quot;value&amp;quot; is overall valid, and the parser assembles the overall datetime value by concatenating the specific date, &amp;quot;T&amp;quot; and specific time (if time was specified, with 00 seconds implied if no seconds are provided), and specific timezone (if timezone and a specific time was specified).&lt;br /&gt;
* YYYY-MM-DD - no time specified&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS - time specified but no timezone.  This is a floating time.&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS-XXYY or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SSZ or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS+XXYY - both time and timezone were specified.&lt;br /&gt;
&lt;br /&gt;
=== format specific details ===&lt;br /&gt;
The following are format specific details and &amp;lt;span id=&amp;quot;format_specific_optimizations&amp;quot;&amp;gt;optimizations&amp;lt;/span&amp;gt; that make use of the value-class-pattern.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span style=&amp;quot;font-size:smaller&amp;quot;&amp;gt;short URL for this section&amp;lt;/span&amp;gt;&lt;br /&gt;
:http://tr.im/vcpfso&lt;br /&gt;
&lt;br /&gt;
==== hCalendar dtend implied date ====&lt;br /&gt;
Typically events that start and end the same day only display the date of the event once (makes sense per the DRY [[principle]]) (real world examples: [http://upcoming.yahoo.com/event/3010807/ Upcoming], ... more examples with URLs would help for thoroughness).  &lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hCalendar]] event &amp;quot;dtend&amp;quot; date from its &amp;quot;dtstart&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;dtend&amp;quot;, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hCalendar processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;dtend&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCalendar to iCalendar converters should produce the following iCalendar fragment (as part of a valid .ics file) from either of the above two examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
BEGIN:VEVENT&lt;br /&gt;
SUMMARY:party&lt;br /&gt;
DTSTART:20090626T190000&lt;br /&gt;
DTEND:20090626T220000&lt;br /&gt;
END:VEVENT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: [[X2V]] has implemented dtend implied date from dtstart.&lt;br /&gt;
&lt;br /&gt;
Examples &amp;quot;in the wild&amp;quot;:&lt;br /&gt;
* http://microformats.org/wiki/events/2009-08-12-nyc-workshop (real world example, but on this wiki).&lt;br /&gt;
&lt;br /&gt;
==== iCalendar generators ====&lt;br /&gt;
microformats implementations which consume [[hCalendar]] and generate iCalendar {{must}} in addition:&lt;br /&gt;
# remove any dash &amp;quot;-&amp;quot; separators in the date.&lt;br /&gt;
# remove any colon &amp;quot;:&amp;quot; separators in the time.&lt;br /&gt;
# add a whole day to any date-only (lacking a specified time) (date inclusive) hCalendar &amp;lt;code&amp;gt;dtend&amp;lt;/code&amp;gt; property values in order to generate an (date exclusive) iCalendar &amp;lt;code&amp;gt;DTEND&amp;lt;/code&amp;gt; property value with the same meaning, per the resolution to the [[dtend-issue]].&lt;br /&gt;
# perform datetime math on any +/- relative timezone value, and produce an effective UTC value ending with &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== hAtom updated implied date ====&lt;br /&gt;
Similarly, in blog posts that indicate both when they were &amp;quot;published&amp;quot; and &amp;quot;updated&amp;quot;, the date is usually only displayed once, typically when &amp;quot;published&amp;quot; (real world examples with URLs would help for thoroughness).&lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hAtom]] entry &amp;quot;updated&amp;quot; date from its &amp;quot;published&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;updated&amp;quot;, e.g. for a blog post that was updated the same day:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hAtom processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;updated&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Atom generators ====&lt;br /&gt;
microformats implementations which consume [[hAtom]] and generate &lt;br /&gt;
Atom {{must}} in addition:&lt;br /&gt;
* normalize all date and datetime values to [[RFC3339]].&lt;br /&gt;
&lt;br /&gt;
=== derivation and tests ===&lt;br /&gt;
This section is &amp;lt;em&amp;gt;informative&amp;lt;/em&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The handling of date and time values in the value class pattern was originally [[value-excerption-pattern-brainstorming#date_and_time_separation|brainstormed on the value-excerption-pattern-brainstorming]] page and derived from that analysis and feedback. For the curious, historical details may be found there, along with additional thoughts for extension.&lt;br /&gt;
&lt;br /&gt;
See [[value-class-date-time-tests]] for test cases.&lt;br /&gt;
&lt;br /&gt;
==Parsing value from a &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute==&lt;br /&gt;
The &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; class name allows the publisher to indicate the data value for a parent property is contained in the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of an element, rather than the inner-text.&lt;br /&gt;
&lt;br /&gt;
This can be used to provide a synonym within content, or used to quietly publish alternate forms of information for microformats parsing, without affecting the consumption of content.&lt;br /&gt;
&lt;br /&gt;
For example, you can use casual localization with dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It was &lt;br /&gt;
 &amp;lt;span class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2008'&amp;gt;last year&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
  that I realised my addiction to cashew nuts would cost this country so dear.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsing rules for &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; are the same as for &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; above, with the following change:&lt;br /&gt;
&lt;br /&gt;
* Where a microformats property has a child element with class name of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;, the content of the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of that element must be parsed, rather than the portion of the element that would be parsed for a class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Using &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; to publish machine-data===&lt;br /&gt;
&lt;br /&gt;
The initial usage of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is used to publish alternate, parsable forms of property values in a visible context without the use of the &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element whose semantics already support interpretation of the 'title' attribute as an expanded, more precise form of the content. &lt;br /&gt;
&lt;br /&gt;
Experience has found that there are some cases in microformats where a number of publishers want to include a precisely accurate and parsable value for a property but do not want it to be visible in their page, even as a tooltip.&lt;br /&gt;
&lt;br /&gt;
For example, full [[ISO8601]] datetimes may be confusing to readers of the page (as a tooltip or when read aloud by a screen reader), and enumerated values such as the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; subproperty of hCard's &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; property use US-English terms, which are not part of pages in any other language.&lt;br /&gt;
&lt;br /&gt;
Since both of those scenarios have shown to be obstacles for a number of publishers, for these cases, and these alone, there exists a further extension of value-excerption. This extension allows the parsable form of the property to be published ‘silently’ immediately adjacent with the respective local visible content.&lt;br /&gt;
&lt;br /&gt;
Here is an example, with the required use of a first child element with class name &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='tel' lang='en-gb'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='type'&amp;gt;&lt;br /&gt;
    &amp;lt;span class='value-title' title='cell'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
      mobile&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value'&amp;gt;+44 7773 000 000&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;samp&amp;gt;cell&amp;lt;/samp&amp;gt; value is parsed for the 'type' subproperty, but &amp;lt;samp&amp;gt;mobile&amp;lt;/samp&amp;gt; is presented to the user.&lt;br /&gt;
&lt;br /&gt;
In the case of dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2009-03-14T16:28-0600'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
  March 14th 2009, around half-past four&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A microformats parser will read the ISO8601 format datetime &amp;lt;samp&amp;gt;2009-03-14T16:28-0600&amp;lt;/samp&amp;gt;, but users will only see &amp;lt;samp&amp;gt;March 14th 2009, around half-past four&amp;lt;/samp&amp;gt;. Testing has shown that the ISO8601 datetime above does not get exposed to any user at all.&lt;br /&gt;
&lt;br /&gt;
===Parsing machine-data &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Browsers collapse the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; span down to a width of &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, effectively providing no visual rendering, whilst keeping the element in the DOM. With no physical dimensions, there is no ‘hover’ state, so no tooltip is revealed. Furthermore, the empty element is not passed to assistive technology layers such as VoiceOver.  Screen readers do not read the contents of the title attribute of an empty &amp;lt;code&amp;gt;span&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
We conducted [[value-excerption-value-title-test|thorough testing]] of these parsing behaviors to ensure accessibility.&lt;br /&gt;
&lt;br /&gt;
''Note: Whilst the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element is more gracefully written without whitespace inner-text (or as self-closing &amp;lt;code&amp;gt;&amp;amp;lt;foo /&amp;gt;&amp;lt;/code&amp;gt; element in XHTML), some tools such as WYSIWYG editors and HTML-Tidy will erroneously discard such elements, resulting in parsable data being thrown away by some tools. As such, &amp;lt;code&amp;gt;&amp;amp;lt;span class='value-title'&amp;gt; &amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, including a single whitespace character between the opening and closing tag, may also be used. In some situations, this whitespace may be rendered by the browser, and authors should test their output.''&lt;br /&gt;
&lt;br /&gt;
Parsing this final &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; extension imposes some stricter restrictions on usage. These restrictions exist to reduce the impact of &amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; violations, reduce the opportunity for sites to spoof data, and encourage best practice for maintaining both forms of data accurately.&lt;br /&gt;
&lt;br /&gt;
Where an element with class &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is to be parsed as data for a property, and that element also contains no non-whitespace content (hereafter referred to as ‘empty’), the following rules apply:&lt;br /&gt;
&lt;br /&gt;
* The ‘empty’ value-title element must be the '''first, non-whitespace child''' of the property element. That is, it should follow immediately after the property is declared, before the human-readable form, and without any additional nesting.&lt;br /&gt;
* The ‘empty’ value-title element can only be used for specific properties. Future microformat specifications (and updates to existing microformats) must explicitly state which properties may be used with this extension of the value-class-pattern. (Retroactive property support for existing microformats is documented below.)&lt;br /&gt;
* Where an ‘empty’ value-title element is to be used as the single property value, it must be the ''only'' such &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; content. That is, the first instance of a conforming &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element overrides all other &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; siblings and/or cousins.&lt;br /&gt;
* Tools written to perform Conformance Testing and/or Validation of microformats ''should'' attempt to compare the machine-data and human-legible forms of the property data, and warn authors if the forms do not match.&lt;br /&gt;
&lt;br /&gt;
=== limited use of value-title ===&lt;br /&gt;
Due to the fact that the value-title pattern hides some amount of data which tends to be a machine-specific duplicate of data that is provided in the human readable content, there are two microformats [[principles]] being compromised: '''visibility''' and '''&amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt;'''. Thus the applicability of this pattern is deliberately restricted to properties that have demonstrated through experience a need for it, with no known better alternative.&lt;br /&gt;
&lt;br /&gt;
In general authors should:&lt;br /&gt;
&lt;br /&gt;
# First, try to directly specify microformats property values inline (the most visible, no duplication),&lt;br /&gt;
# Then consider using the value-class pattern&lt;br /&gt;
## Including multiple value elements for date and time properties&lt;br /&gt;
# and then only if those methods are insufficient, consider the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
This document post-dates other microformat specifications, such that they may not yet indicate which properties permit use of this pattern. In the interim, '''only''' the following types of properties should allow the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
* ISO8601 date, datetime, timezone, and duration values&lt;br /&gt;
* Enumerated values (such as the hCard tel/email/adr 'type' subproperties)&lt;br /&gt;
* Co-ordinates (such as the [[geo]] 'latitude' and 'longitude' properties)&lt;br /&gt;
* Telephone number properties (e.g. the hCard 'tel' property)&lt;br /&gt;
&lt;br /&gt;
The [[machine-data]] page has documentation of some of the properties of some specs which experience has shown need a solution like the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
There are some simple reference examples and tests for this pattern on [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
In future use, ''specification authors'' may inherit use of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; by use of ISO8601 date and time formats, or reuse of other microformats, but specifications should _avoid_ introducing new data structures that depend on or encourage this pattern. New specifications are themselves expected to adhere to the principals of visible data and &amp;lt;abbr&amp;gt;DRY&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
See [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;abbr title='Frequently Asked Questions'&amp;gt;FAQ&amp;lt;/abbr&amp;gt;==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
Frequently asked questions about the value-class-pattern. Once this section grows too big, we'll make a separate wiki page (like [[value-class-faq]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class='discussion'&amp;gt;&lt;br /&gt;
* '''Why use an 'empty' element? Why not embed data in the class attribute?'''&lt;br /&gt;
** The class attribute is inappropriate for embedded data values, as per the HTML4 specification, which states &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; is for ‘general purposing processing’, which is defined as ‘e.g. for identifying fields when extracting data from HTML pages into a database, translating HTML documents into other formats, etc.’. ‘General purpose processing’ does not extend to data itself. Furthermore, this method avoids inventing a new string pattern for embedding data.&lt;br /&gt;
* '''Why use an 'empty' element? Why not make up a new attribute, like ‘data’?'''&lt;br /&gt;
** Microformats exist and function in ''valid'' HTML4 and XHTML1. Those are the current standards for web development, and microformats exist for use ''now''. In the future, perhaps revisions of HTML will offer up another solution. For now, this method has been tested against browsers, and creates a consistent document structure (where machine-form and human-form data are siblings).&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute should only be used for content!'''&lt;br /&gt;
** The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute ''is'' used for content and is read by microformats parsers. This exists for cases where data cannot be parsed with sufficient precision from just the commonly published, visible information. This pattern allows both forms of content to be included, whilst keeping it invisible to human consumers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also refer to the general [[faq|Microformats FAQ]] and [[principles]].&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following sites and pages have started marking up content with the value-class-pattern, and are thus good places to go for examples with real world content to test with implementations (i.e. parsers). If you use the value-class-pattern in your content, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-examples-in-wild]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [http://visitmix.com/labs/oomph/2.0/tests/test.html Test Harness For Oomph] This pages uses a whole range of different patterns for both hCard and hCalendar, using both value and value-title, mostly derived from the specification above&lt;br /&gt;
* [http://georgebrock.com/ George Brocklehurst's activity stream] and [http://blog.georgebrock.com/ blog] use &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://ben-ward.co.uk/ Ben Ward's home page] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hCard &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; property&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://microformats.org/ microformats.org] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property in [[http://microformats.org/ microformats.org blog postss]]]&lt;br /&gt;
** date and time value separation for hCalendar &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; property in [[events|microformats.org recent and upcoming events wiki page]]&lt;br /&gt;
&lt;br /&gt;
''Add your site/page(s) that use the value-class-pattern here, along with a brief description of what value-class-pattern features you use, with which microformat(s) and which of its/their properties.''&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following implementations have been developed which either generate or parse value-class-pattern property values. If you have an value-class-pattern implementation, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-implementations]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [[Oomph]] Version 2 passes [[value-class-pattern-tests#Date_and_time_values|Date and time values test cases]] and is a thorough implementation of the value class pattern.&lt;br /&gt;
* [[X2V]] v0.9.3 and later:&lt;br /&gt;
** implements [[#Date_and_time_values|Date and time values parsing]], including am/pm time values&lt;br /&gt;
*** thus passes [[value-class-pattern-tests#Date_and_time_values|Date and time values test cases]].&lt;br /&gt;
** implements [[#hCalendar_dtend_implied_date|hCalendar implied dtend date]]&lt;br /&gt;
* [[Operator]] has *some* implementation of the value-class-pattern according to Michael Kaply, but precisely how much is implemented, for which properties (property types) and which microformats is not currently known.&lt;br /&gt;
* [[Optimus]] v0.8 and later implements &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; as [http://twitter.com/DmitryBaranovsk/status/1891253248 announced by Dmitry Baranovskiy].&lt;br /&gt;
* ... add your implementation(s) that parse or generate the value-class-pattern here, along with which features you support (hopefully all!) and note any limitations if any.&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
Articles and &amp;lt;span id=&amp;quot;Blog_Posts&amp;quot;&amp;gt;blog posts&amp;lt;/span&amp;gt;  discussing the value class pattern, most recent first.&lt;br /&gt;
When this section gets too big, create a separate page like: [[value-class-pattern-articles]]&lt;br /&gt;
* &amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;2009-08-25&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;MIX Online: &amp;lt;span class=&amp;quot;entry-title&amp;quot;&amp;gt;[http://visitmix.com/Articles/The-Value-Class-Pattern The Value Class Pattern]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; by &amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Jeremy Keith&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* [http://ablognotlimited.com/s/106 Getting Semantic With Microformats, Part 8: Value Class Pattern] -- A very thorough writeup by Emily Lewis on the value class pattern&lt;br /&gt;
* [http://adactio.com/journal/1579/ 2009-05-17 Adactio: Microformation]&lt;br /&gt;
* [http://forabeautifulweb.com/blog/about/value_class_pattern/ For A Beautiful Web: Value Class Pattern]&lt;br /&gt;
* [http://microformats.org/blog/2009/05/12/value-class-pattern/ 2009-05-12 microformats.org: Value Class Pattern]&lt;br /&gt;
&lt;br /&gt;
==Related Pages==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
* [[value-class-pattern-tests]]&lt;br /&gt;
* [[value-excerption-pattern-issues]]&lt;br /&gt;
* [[hcard#Value_excerpting|hCard: Value Excepting]]&lt;br /&gt;
* [[value-excerption-pattern-brainstorming]]&lt;br /&gt;
* [[machine-data|Machine Data in Microformats]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
* [http://www.useit.com/alertbox/9608.html Jakob Nielsen: International Web Usability]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=User:BenWard&amp;diff=41924</id>
		<title>User:BenWard</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=User:BenWard&amp;diff=41924"/>
		<updated>2010-02-12T08:42:16Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Contact */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Foo}}&lt;br /&gt;
&lt;br /&gt;
http://ben-ward.co.uk/static/identity/BenWard.jpg&lt;br /&gt;
&lt;br /&gt;
Engineer at the Yahoo! Developer Network, based in San Francisco.&lt;br /&gt;
&lt;br /&gt;
'''I am a microformats.org admin'''. Please contact me with regard to community issues, but if it's a ‘todo’ item, first add it to the [[todo]] page for reference. Also note that my contributions to microformats.org, active work and draft pages represent my views alone and not the microformats admins as a collective.&lt;br /&gt;
&lt;br /&gt;
==Active Work==&lt;br /&gt;
&lt;br /&gt;
* Microformats.org administrator&lt;br /&gt;
* Responsible for maintenance and development of the microformats.org [http://microformats.org/ blog], [[wiki-2|wiki]] and other infrastructure.&lt;br /&gt;
** Wiki 2.1 updates will probably follow at some point in the next few months, since there are some formatting gaps.&lt;br /&gt;
** Issue Tracking is a larger problem for the first half of this year.&lt;br /&gt;
** µf activity streaming experiments come soon, too.&lt;br /&gt;
* Editor of the [[include-pattern]]&lt;br /&gt;
* Editor of the [[value-class-pattern]]&lt;br /&gt;
&lt;br /&gt;
==Drafts==&lt;br /&gt;
&lt;br /&gt;
Some work that will get proposed to the microformats community once I've written up the proposal for consumption. Be aware that anything you find here will be incomplete, or just brain dumps.&lt;br /&gt;
&lt;br /&gt;
* [[User:BenWard/drafts/embed-brainstorming|embed-brainstorming]] - Can we microformat ‘embed this video/picture/sound/media in your blog post/website’ code snippet?&lt;br /&gt;
* [[User:BenWard/drafts/communcation-preferences-brainstorming]] - Can we microformat people's communication preferences? e.g. Email invitations to new events, XMPP me about changes to event timing/cancellations, twitter ‘introductions’, have conversations over XMPP, etc.&lt;br /&gt;
&lt;br /&gt;
==Armchair Roles==&lt;br /&gt;
&lt;br /&gt;
Work I'm involved with, touched, fiddled with or otherwise contributed to, but not dedicatedly contributing to.&lt;br /&gt;
&lt;br /&gt;
* Co-author and some-time editor of [[recipe]]&lt;br /&gt;
&lt;br /&gt;
==Archived Work==&lt;br /&gt;
&lt;br /&gt;
These things I've done before, but aren't active projects any more:&lt;br /&gt;
&lt;br /&gt;
* Major implementor of [[hListing]] at Yahoo! (Spring 2007)&lt;br /&gt;
* Wrote hCards + XFN themed post on [http://www.digital-web.com/articles/portable_social_networks_building_blocks_of_a_social_web/ Portal Social Networks, The Building Blocks of a Social Web] at Digital Web magazine: &lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&lt;br /&gt;
* Personal site at http://benward.me/&lt;br /&gt;
* Email ben at benward dot me&lt;br /&gt;
* XMPP/Jabber: xmpp://talk@ben-ward.co.uk&lt;br /&gt;
* [http://twitter.com/benward @benward] on Twitter&lt;br /&gt;
&lt;br /&gt;
==Contributions are Public==&lt;br /&gt;
&lt;br /&gt;
{{public-domain-release}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Microformats Admins]]&lt;br /&gt;
[[Category:Editors]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hreview-advocacy&amp;diff=41923</id>
		<title>hreview-advocacy</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hreview-advocacy&amp;diff=41923"/>
		<updated>2010-02-12T08:40:48Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Reverted edits by Grace100 (Talk) to last version by Tantek&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt; hReview advocacy&amp;lt;/h1&amp;gt;&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
Part of the larger microformats [[advocacy]] effort. Adding [[hreview|hReview]] to these sites would improve their usability and ambient findability.&lt;br /&gt;
&lt;br /&gt;
== general review sites ==&lt;br /&gt;
* [http://www.listal.com/ Listal] for all reviews including [http://www.listal.com/reviews/books/1/books books].&lt;br /&gt;
** Requested by e-mail, 2007-05-29. [[User:DavidMead|David Mead]]&lt;br /&gt;
* [http://pownce.com Pownce]&lt;br /&gt;
** Requested a &amp;quot;rating&amp;quot; note-type which would produce hReview markup (see comment by pownce.com/t [http://pownce.com/leahculver/notes/621117/ in this thread]) [[User:Tantek|Tantek]] 13:12, 3 Sep 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== food and restaurant reviews ==&lt;br /&gt;
* &amp;lt;span id=&amp;quot;Foodbuzz&amp;quot;&amp;gt;[http://www.foodbuzz.com/ Foodbuzz]&amp;lt;/span&amp;gt; - a food, restaurant review, afficionado site&lt;br /&gt;
** primarily [[hreview|hReviews]] for reviews, and also&lt;br /&gt;
** [[hcard|hCards]] for restaurant listings e.g. [http://www.foodbuzz.com/restaurants/us/california/saratoga/14039-plumed-horse Plumed Horse]&lt;br /&gt;
** [[hcard-supporting-user-profiles|hCards for user profiles]] e.g. [http://www.foodbuzz.com/profile/ryanthegirl ryanthegirl]&lt;br /&gt;
** [[hcard-xfn-supporting-friends-lists|hCard+XFN for friends lists]] e.g. [http://www.foodbuzz.com/profile/ryanthegirl/foodies foodies list]&lt;br /&gt;
** [[hatom|hAtom]] for blog posts&lt;br /&gt;
** a potential [[recipe]] microformat for recipes&lt;br /&gt;
** a potential [[media-info]] microformat for photos and videos&lt;br /&gt;
** ... all '''Requested''' in person to site founder Scott Thorpe at [http://upcoming.yahoo.com/event/270906 SuperHappyDevHouse 20] [[User:Tantek|Tantek]] 21:18, 13 Oct 2007 (PDT)&lt;br /&gt;
* [http://www.mealme.com/ Meal Me] for all food reviews such as [http://www.mealme.com/browse.php?mealid=754].&lt;br /&gt;
** Requested by e-mail, 2008-01-03. [[User:DavidMead|David Mead]]&lt;br /&gt;
* [http://yelp.com/ Yelp] - lots of restaurants&lt;br /&gt;
** Anyone have contacts at Yelp?&lt;br /&gt;
&lt;br /&gt;
== wine reviews ==&lt;br /&gt;
Similar to http://corkd.com/ the following sites could very much benefit from being marked up with [[hreview|hReview]]:&lt;br /&gt;
* http://winecast.net/2007/07/25/wine-ratings-revisited-2/&lt;br /&gt;
* http://goodwineunder20.blogspot.com/2007/08/how-we-buy-wine.html&lt;br /&gt;
* http://www.winelifetoday.com/&lt;br /&gt;
&lt;br /&gt;
== camera reviews ==&lt;br /&gt;
* [http://www.dpreview.com/ Digital Photography Review]&lt;br /&gt;
** Requested by feedback form, 2007-01-18. [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
* [http://www.steves-digicams.com/ Steve's Digicams]&lt;br /&gt;
** Requested by e-mail, 2007-01-18. [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
== government reviews ==&lt;br /&gt;
*[http://petitions.pm.gov.uk/ E-petitions] (in draft, and asking for suggested improvements}&lt;br /&gt;
** Requested by e-mail, 2006-12-01 [[User:AndyMabbett|Andy Mabbett]] 11:48, 1 Dec 2006 (PST)&lt;br /&gt;
*** reply: &amp;quot;I've added it to our list of ideas.&amp;quot; 2006-12-04 [[User:AndyMabbett|Andy Mabbett]] 11:08, 4 Dec 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
== movie reviews ==&lt;br /&gt;
* [http://www.imdb.com/ Internet Movie Database] (IMDb)&lt;br /&gt;
** anyone have contacts at IMDB?&lt;br /&gt;
** primarily hReview for all the review data, and in addition hCard for all the people, rel-tags for film/plot/other tags&lt;br /&gt;
** [http://tantek.com/microformats/2007/imdb-title-tt0413267uf.html title/tt0413267 with microformats] - hReview for the whole page for the item with overall rating, name, photo, tags.  hCards for the directors/actors. [[User:Tantek|Tantek]] 19:20, 21 May 2007 (PDT) &lt;br /&gt;
***Could also use tag on year (also on Sound Mix, Certification and actor-names if URLs allowed this). [[User:AndyMabbett|Andy Mabbett]] 02:23, 22 May 2007 (PDT)&lt;br /&gt;
** [[media-info]] microformat once there is one.&lt;br /&gt;
** '''Requested''' 2007-08-31; received only a generic boilerplate reply. '''Does anyone have a direct contact there?''' [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
== music reviews ==&lt;br /&gt;
*[http://www.discogs.com/ Discogs]&lt;br /&gt;
**hReview for album ratings, hCard for artist bios + record company details, hCard for user profiles, audio microformat, when ready, for discographies requested 2007-08-30 [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
== book reviews ==&lt;br /&gt;
* [http://www.librarything.com/ LibraryThing]&lt;br /&gt;
** e.g. [http://www.librarything.com/catalog.php?view=trealawboy]&lt;br /&gt;
&lt;br /&gt;
== successes ==&lt;br /&gt;
*[http://www.birderslibrary.com/ The Birder's Library] &lt;br /&gt;
**[http://www.birdforum.net/showthread.php?p=779886#post779886 Requested]; confirmed under development, 2006-12-18.&lt;br /&gt;
** '''Success''' e.g. [http://www.birderslibrary.com/reviews/dvd/audubon_video_guide.htm Audubon VideoGuide to 505 Birds of North America]. Apparently from 2007-01-18 [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[advocacy]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hatom-issues&amp;diff=41673</id>
		<title>hatom-issues</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hatom-issues&amp;diff=41673"/>
		<updated>2010-01-21T08:46:11Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Added issue looking for explicit support for &amp;lt;ins&amp;gt; and &amp;lt;del&amp;gt; `datetime` markup for the `updated` properties.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt; hAtom issues &amp;lt;/entry-title&amp;gt;&lt;br /&gt;
These are externally raised issues about [[hAtom]] with broadly varying degrees of merit. Thus some issues are REJECTED for a number of obvious reasons (but still documented here in case they are re-raised), and others contain longer discussions. Some issues may be ACCEPTED and perhaps cause changes or improved explanations in the spec. &lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT''': Please read the [[hatom-faq|hAtom FAQ]] and the [[hatom-issues-resolved|hAtom resolved issues]] ''before'' giving any feedback or raising any issues as your feedback/issues may already be resolved/answered.&lt;br /&gt;
&lt;br /&gt;
Submitted issues may (and probably will) be edited and rewritten for better terseness, clarity, calmness, rationality, and as neutral a point of view as possible. Write your issues well. — [http://tantek.com/ Tantek]&lt;br /&gt;
&lt;br /&gt;
== closed issues ==&lt;br /&gt;
See: [[hatom-issues-closed]]&lt;br /&gt;
&lt;br /&gt;
== resolved issues ==&lt;br /&gt;
See: [[hatom-issues-resolved]]&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;Issues&amp;quot;&amp;gt;Please add new issues&amp;lt;/span&amp;gt; to the '''bottom''' of the list by copy and pasting the [[#Template|Template]].  Please follow-up to resolved/rejected issues with new information rather than resubmitting such issues.  Duplicate issue additions will be reverted.&lt;br /&gt;
&lt;br /&gt;
===2010===&lt;br /&gt;
==== No defined parsing rule for &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; timestamps in &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt;elements ====&lt;br /&gt;
* {{OpenIssue}} 2010-01-20 raised by [[User:BenWard|BenWard]]&lt;br /&gt;
*# hAtom includes the &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property for the last modification/revision date of an entry. HTML already has an &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; element for marking up inserted changes to text, and that element has a &amp;lt;code&amp;gt;datetime&amp;lt;/code&amp;gt; attribute, to document the date and time of the change. Currently, hAtom and microformats have no model for parsing the data from that &amp;lt;code&amp;gt;datetime&amp;lt;/code&amp;gt; attribute, but the document semantics suggest it would be an appropriate source for the &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property. Example: &amp;lt;http://blog.benward.me/post/250674456&amp;gt;&lt;br /&gt;
*#* Proposed resolution. Document a parsing rule for the &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; element, stating that for an &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;del&amp;lt;/code&amp;gt;) element with class of &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt;, the value of the &amp;lt;code&amp;gt;datetime&amp;lt;/code&amp;gt; attribute should be used as the value.&lt;br /&gt;
*#* Proposed extended resolution: As well as the above explicit parsing rule, an implication parsing rule stating that where &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; is not explicitly marked up, the parser may aggregate all &amp;lt;code&amp;gt;ins&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;del&amp;lt;/code&amp;gt; elements in the &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt;, and use the most recent &amp;lt;code&amp;gt;datetime&amp;lt;/code&amp;gt; attribute content as the &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; value.&lt;br /&gt;
&lt;br /&gt;
===2009===&lt;br /&gt;
==== too many required hentry properties ====&lt;br /&gt;
* {{OpenIssue}} 2009-05-26 raised by [[User:Tantek|Tantek]]&lt;br /&gt;
*# hAtom 0.1 requires numerous properties for an hentry (often based directly on required elements from the Atom standard). Given the broad variety of situations that hAtom is used in content, many (or even most) of these properties are not already specified in such content, and thus it is poor methodology to require them because there is a good chance (experience has shown) either (a) the content author will ignore the requirement, or (b) will make something up to satisfy the requirement.  A few similar/overlapping/sub-issues are noted below (e.g. [[#Author|author is required]], and not always available).&lt;br /&gt;
*#* Proposed resolution. Make nearly all hentry properties &amp;quot;optional&amp;quot; in hAtom 0.2. Consider keeping at most only one required property, perhaps &amp;quot;updated&amp;quot; - that is, if there is no date of update/publication in the content you are trying to mark up, then perhaps it doesn't make sense to  mark up that content with hAtom, since hAtom is for episodic, time-based/stamped content.&lt;br /&gt;
*#** consider pattern abstraction: all microformats should minimize &amp;quot;required&amp;quot; properties for the same reason, and perhaps ''only'' require at most a single property which is indicative of what that microformat is for, that is, if the author does not publish that one required property, then perhaps they should not be using the microformat that requires that one property.&lt;br /&gt;
*#* I have the same problem. I'm collecting various feeds to analyse them. The sources are often RSS 0.9, but I want to put the results into an Atom feed. --[[User:Simon Brodtmann|Simon Brodtmann]] 00:51, 1 July 2009 (UTC)&lt;br /&gt;
*#** entry:author should be optional and could be either a hCard or a string&lt;br /&gt;
*#** entry lacks a [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#element.category category] and it shuld either use rel-tag or just be a string&lt;br /&gt;
* 2009-07-18 [[User:DavidJanes]] I would like to break this into a separate issue for each currently required element, as we're likely to have to define defaulting rules&lt;br /&gt;
* 2009-07-21 [[User:TobyInk|TobyInk]]: Why not have three levels of property: ''required'', ''recommended'' and ''optional''. There would be as few as possible ''required'' properties. Any properties which are needed to create a conformant application/atom+xml feed would be ''recommended''. Everything else would be ''optional''.'&lt;br /&gt;
** 2009-07-02 [[User:DavidJanes]] why not then use the RFC MUST, SHOULD and MAY terminology? I think this is a good idea though.&lt;br /&gt;
** 2009-09-03 [[User:Chris Cressman|Chris Cressman]] +1 to the idea of property &amp;quot;levels&amp;quot; and reusing RFC terminology.&lt;br /&gt;
&lt;br /&gt;
==== entry-title optionality ====&lt;br /&gt;
* {{OpenIssue}} 2009-07-18 raised by [[User:DavidJanes]]&lt;br /&gt;
** this element should be optional&lt;br /&gt;
*** +1 [[User:DavidJanes]]&lt;br /&gt;
*** +1 [[User:WebOrganics|Martin McEvoy]] but not recommended. &lt;br /&gt;
*** ... your vote here ...&lt;br /&gt;
** if this element is not in the [[hatom#In_General|physical model]], the logical model value should be&lt;br /&gt;
*** the empty string&lt;br /&gt;
**** +1 [[User:DavidJanes]]&lt;br /&gt;
**** -1 [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
*** the value should not be blank.&lt;br /&gt;
**** +1 [[User:WebOrganics|Martin McEvoy]] see: [http://www.atomenabled.org/developers/syndication/#requiredEntryElements Required Entry Elements] from Atom Enabled.&lt;br /&gt;
**** [[User:DavidJanes]] what should it be then, if physically representing it is optional? Since Atom makes this a SHOULD and not a MUST (I'm not shouting, just following RFC convention), and we're assuming there's a good reason for the entry-title not to be present in the first place, why not an empty string?&lt;br /&gt;
***** [[User:WebOrganics|Martin McEvoy]] entry:title is a required attribute of atom at both feed and entry level, in both instances it says &amp;quot;Contains a human readable title&amp;quot; (a requirement) an empty string is not anything human readable (personal oppinion), maybe hAtom 0.2 should only recommend that the value of entry-title &amp;quot;should&amp;quot; not be an empty string. &lt;br /&gt;
*** ... your proposal here, your vote in a sublist ...&lt;br /&gt;
* include in hAtom 0.2&lt;br /&gt;
** +1 [[User:DavidJanes]]&lt;br /&gt;
** +1 [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
&lt;br /&gt;
==== updated optionality ====&lt;br /&gt;
* {{OpenIssue}} 2009-07-18 raised by [[User:DavidJanes]]&lt;br /&gt;
** this element should be optional&lt;br /&gt;
*** +1 [[User:DavidJanes]] ... the demand for optionality of the issue is high (cf the microsoft web clips) and if it remains required we're just going to reinvent hAtom without this element&lt;br /&gt;
*** +1 [[User:Chris Cressman|Chris Cressman]] Agree there is demand for optionality. This requirement has previously deterred me from using hAtom.&lt;br /&gt;
** if this element is not in the [[hatom#In_General|physical model]], the logical model should be&lt;br /&gt;
*** the page creation date&lt;br /&gt;
**** +1 [[User:DavidJanes]]&lt;br /&gt;
**** +1 [[User:Chris Cressman|Chris Cressman]]&lt;br /&gt;
*** ... your proposal here, your vote in a sublist ...&lt;br /&gt;
* include in hAtom 0.2&lt;br /&gt;
** +1 [[User:DavidJanes]]&lt;br /&gt;
** +1 [[User:Chris Cressman|Chris Cressman]]&lt;br /&gt;
&lt;br /&gt;
==== author optionality ====&lt;br /&gt;
* {{OpenIssue}} 2009-07-18 raised by [[User:DavidJanes]]&lt;br /&gt;
** this element should be optional&lt;br /&gt;
*** +1 [[User:DavidJanes]] for the same reason 'updated' should be optional: we'll just reinvent hAtom slightly differently otherwise&lt;br /&gt;
*** +1 [[User:Chris Cressman|Chris Cressman]] Same reason as 'updated' above.&lt;br /&gt;
*** ... your vote here ...&lt;br /&gt;
** if this element is not in the [[hatom#In_General|physical model]], the logical model should be&lt;br /&gt;
*** &amp;quot;anonymous&amp;quot; (somewhat like [[hreview]]), except not explicit&lt;br /&gt;
**** +0.5 [[User:DavidJanes]]&lt;br /&gt;
**** 0 [[User:Chris Cressman|Chris Cressman]] Using a blog post as an example, I can determine the author from surrounding context. 'Anonymous' doesn't seem like an acceptable solution. However, I don't have the technical expertise to create a better solution and would be willing to accept 'anonymous'.&lt;br /&gt;
*** make this implementation defined&lt;br /&gt;
*** something constructed from the page's URL &amp;amp; other information&lt;br /&gt;
*** ... your proposal here, your vote in a sublist ...&lt;br /&gt;
* include in hAtom 0.2&lt;br /&gt;
** +1 [[User:DavidJanes]]&lt;br /&gt;
** +1 [[User:Chris Cressman|Chris Cressman]]&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
==== add url property to hentry ====&lt;br /&gt;
* {{OpenIssue}} 2008-09-10 raised by [[User:Tantek|Tantek]]&lt;br /&gt;
*# hAtom 0.1 uses [[rel-bookmark]] for permalinks.  Permalinks may not always be hyperlinks or hyperlinkable.  Thus I propose we re-use the &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; property (from [[hCard]], [[hCalendar]], [[hReview]], etc.) as a sub-property of the &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt; property/container/root.&lt;br /&gt;
*#* Proposed resolution. Add &amp;quot;url&amp;quot; sub-property to &amp;quot;hentry&amp;quot; in hAtom 0.2.&lt;br /&gt;
*# {{ToDo}} can anyone provide examples where this would be used? [[User:DavidJanes]]&lt;br /&gt;
&lt;br /&gt;
==== misuse of address element ====&lt;br /&gt;
* {{OpenIssue}} 2008-06-07 raised by [[User:Tantek|Tantek]]&lt;br /&gt;
*# hAtom 0.1 says &amp;quot;an Entry Author element SHOULD be encoded in an &amp;lt;code&amp;gt;&amp;amp;lt;address&amp;amp;gt;&amp;lt;/code&amp;gt; element&amp;quot; and &amp;quot;find the Nearest In Parent &amp;lt;code&amp;gt;&amp;amp;lt;address&amp;amp;gt;&amp;lt;/code&amp;gt; element(s) with class name author and that is/are a valid hCard&amp;quot; - this is a misuse of the address element.  The address element means the ''contact'' for the page or major portion thereof (see [[hcard-faq#Should_I_use_ADDRESS_for_hCards|hCard FAQ: Should I use ADDRESS for hCards]]), which ''may'' also be the ''author'' but is not necessarily.  See [[hcards-and-pages]] for more details on this semantic distinction.&lt;br /&gt;
*#* Proposed resolution: Eliminate all requirements and recommended use of the &amp;lt;code&amp;gt;&amp;amp;lt;address&amp;amp;gt;&amp;lt;/code&amp;gt; element from hAtom.&lt;br /&gt;
*#** +1 --[[User:Csarven|Sarven Capadisli]] 11:57, 11 Nov 2008 (PST)&lt;br /&gt;
*#** +1 [[User:DavidJanes]]&lt;br /&gt;
*#** +1 [[User:Chris Cressman|Chris Cressman]] Prefer microformat solutions that don't dictate specific elements.&lt;br /&gt;
* include in hAtom 0.2&lt;br /&gt;
** +1 [[User:DavidJanes]]&lt;br /&gt;
** +1 [[User:Chris Cressman|Chris Cressman]]&lt;br /&gt;
&lt;br /&gt;
=== 2007 ===&lt;br /&gt;
==== marking up comments ====&lt;br /&gt;
* {{OpenIssue}} 2007-11-25 raised by [http://www.wirewd.com/ Ken Wronkiewicz].&lt;br /&gt;
*# There's no currently defined way to exactly handle threaded discussions.  I think this is quite useful to have.&lt;br /&gt;
*#* The prior art is RFC [http://tools.ietf.org/html/rfc4685 4864].  The microformat solution should map fairly cleanly to this.&lt;br /&gt;
* include in hAtom 0.2&lt;br /&gt;
** -1 [[User:DavidJanes]] I think hAtom Comments should be a separate spec&lt;br /&gt;
*** +1 to David's -1. [[User:TobyInk|TobyInk]] They're in a separate RFC, so should be separate to hAtom too. That said, it would be nice if hAtom had a clear, documented mechanism for creating extensions.&lt;br /&gt;
** +1 [[User:Singpolyma|Singpolyma]] Comments are the important &amp;quot;next step&amp;quot; for hAtom.  The proposal I've seen that I most liked was embedding an hfeed in an hentry.&lt;br /&gt;
*** [[User:DavidJanes]] would you look to explicitly write out that proposal here (or in a new section); this is my preferred solution too, but there's another proposal on the table for doing this too&lt;br /&gt;
&lt;br /&gt;
==== atom:category scheme ====&lt;br /&gt;
* {{OpenIssue}} 2007-06-01 raised by [http://theryanking.com/ Ryan King].&lt;br /&gt;
*# ''[[rel-tag#Tag_Spaces|rel-tag tagspaces]] should map to atom:category schemes''&lt;br /&gt;
*#* hAtom already defines how to map term and label. It seems that the tagspace can easily map to scheme&lt;br /&gt;
*# {{ToDo}} can we get a real-world example mapping of this? [[User:DavidJanes]]&lt;br /&gt;
&lt;br /&gt;
=== 2006 ===&lt;br /&gt;
====Geo====&lt;br /&gt;
* {{OpenIssue}} 2006-02-03 raised by [[BrianSuda]]&lt;br /&gt;
** We can use the [[geo]] microformat in [[hatom]] to represent GeoRSS element&lt;br /&gt;
** +1 [[User:DavidJanes]] - this is just making explicit a particular composition. is it not? Also: if there's a geo in a hfeed (outside of hentry), should it be considered to apply to all entries?&lt;br /&gt;
** +1 [[User:Chris Cressman|Chris Cressman]]&lt;br /&gt;
* include in hAtom 0.2&lt;br /&gt;
** +1 [[User:DavidJanes]]&lt;br /&gt;
** +1 [[User:Chris Cressman|Chris Cressman]]&lt;br /&gt;
&lt;br /&gt;
==== Relationship of rel-bookmark to url+uid ====&lt;br /&gt;
The concept of permalink is available in hCard and hCalendar as the classes url and uid. This combination matches the permalink semantics by indicating that the url should be derefenced to find a more dynamic or up-to-date version of the content, and that that url is a stable unique id that can be used to identify the content.&lt;br /&gt;
&lt;br /&gt;
hAtom 0.1 uses rel-bookmark for the permalink concept. The current state of [[uid-brainstorming]] indicates that the [[hCard]] and [[hCalendar]] permalink concept is likely to be used in subsequent microformats. It may be important to reconcile hAtom with that trajectory. Possible reconcilliations include:&lt;br /&gt;
&lt;br /&gt;
1) To leave things as they are. The two permalink concepts are to be kept separate.&lt;br /&gt;
&lt;br /&gt;
2) Treat the two concepts as equivalent. Allow both in hAtom, and consider allowing both in other formats. eg &amp;amp;lt;a rel=&amp;quot;bookmark&amp;quot; href=&amp;quot;http://example.com/&amp;quot;&amp;gt; would fill out uid and url values if they are not supplied explicitly.&lt;br /&gt;
&lt;br /&gt;
3) Choose one over the other for hAtom and perhaps for future microformats also. &amp;quot;url uid&amp;quot; allows for some greater freedom (uid can be pointed at a non-url uid), but it is unclear at this stage whether that freedom is warranted or advisable to permit.&lt;br /&gt;
&lt;br /&gt;
* include in hAtom 0.2&lt;br /&gt;
** -1 [[User:DavidJanes]] (let's wait for resolution elsewhere, also would need real world examples)&lt;br /&gt;
** -1 [[User:Singpolyma|Singpolyma]]&lt;br /&gt;
&lt;br /&gt;
==== Datetime format (atom:&amp;lt;i&amp;gt;updated&amp;lt;/i&amp;gt; and atom:&amp;lt;i&amp;gt;published&amp;lt;/i&amp;gt;) ====&lt;br /&gt;
* 2006-05-23 raised by [[User:RobertBachmann|Robert Bachmann]]&lt;br /&gt;
** Atom requires the use RFC3339 datetimes, while hAtom 0.1 does not specify which datetime formats may be used.&lt;br /&gt;
*** ACCEPTED FAQ - hAtom references datetime-design-pattern, which discusses which date format to use&lt;br /&gt;
** 2009-07-20 [[User:DavidJanes]] {{ToDo}} is this moot? can we move this to resolved?&lt;br /&gt;
&lt;br /&gt;
==== Feed &amp;lt;i&amp;gt;id&amp;lt;/i&amp;gt; (atom:&amp;lt;i&amp;gt;id&amp;lt;/i&amp;gt;) ====&lt;br /&gt;
* {{OpenIssue}} 2006-04-01 raised by [[User:RobertBachmann|Robert Bachmann]]&lt;br /&gt;
*# atom:&amp;lt;i&amp;gt;id&amp;lt;/i&amp;gt; is required for atom:feed. Thus it should be available in hAtom to. &lt;br /&gt;
&lt;br /&gt;
It is suggested the Feed permalink should be used as the feed ID, however a piece by Mark Pilgrim (http://diveintomark.org/archives/2004/05/28/howto-atom-id) makes arguments against using permalinks and in favour of Tag URIs.&lt;br /&gt;
&lt;br /&gt;
* include in hAtom 0.2&lt;br /&gt;
** -1 [[User:DavidJanes]] not enough development of these ideas yes&lt;br /&gt;
&lt;br /&gt;
==== Feed &amp;lt;i&amp;gt;permalink&amp;lt;/i&amp;gt; (atom:&amp;lt;i&amp;gt;permalink&amp;lt;/i&amp;gt;) ====&lt;br /&gt;
* {{OpenIssue}} 2006-04-01 raised by [[User:RobertBachmann|Robert Bachmann]]&amp;lt;/small&amp;gt;&lt;br /&gt;
** I'm proposing the following rules:&lt;br /&gt;
**# a Feed Permalink element is identified by [[rel-bookmark]] at the feed level (inside a Feed element but not inside an Entry element)&lt;br /&gt;
**# a Feed &amp;lt;del&amp;gt;SHOULD&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;MAY&amp;lt;/ins&amp;gt; have a Feed Permalink&lt;br /&gt;
**# a Feed Permalink element represents the concept of an Atom link in a feed.&lt;br /&gt;
**# if the Feed Permalink is missing, use the URI of the page; if the Feed has an &amp;quot;id&amp;quot; attribute, add that as a fragment to the page URI&lt;br /&gt;
** 2006-04-03 [[User:ChrisCasciano|ChrisCasciano]] - I'm not sure that having a rel-boomkark-able link element at the feed level / to designate a feed in an html page separate for the other content is anything close to normal usage on the web, so I'd be very hesitant on suggesting this element &amp;quot;SHOULD&amp;quot; exist. I'm also curious when this element would link to anything but the current page (or some element on the current page) for this to be useful in the context of the HTML doc. I think taking the &amp;quot;id&amp;quot; on the feed is a more workable solution in most cases.&lt;br /&gt;
** 2006-04-03 [[User:RobertBachmann|Robert Bachmann]]: I've replaced &amp;quot;SHOULD&amp;quot; with &amp;quot;MAY&amp;quot;.&lt;br /&gt;
** 2006-04-24 [[User:RobertBachmann|Robert Bachmann]]: Maybe we could simplify my proposal to:&lt;br /&gt;
*** &amp;quot;''Use the URI of the page; if the Feed has an &amp;quot;id&amp;quot; attribute, add that as a fragment to the page URI''&amp;quot;&lt;br /&gt;
*** IMO this would be good enough for at least 80% of the cases. &lt;br /&gt;
** 2006-04-12 [[User:DavidJanes]]: {{ToDo}} can we find an example of this in the wild and if so we should add it to the -examples page.&lt;br /&gt;
** [[User:Singpolyma|singpolyma]] 00:05, 13 Apr 2006 (PDT) : since the link is going to be pointing to the home page for the item wouldn't [[rel-home]] make more sense?  That's what I'm using in the XOXO Blog Format and my reasoning was that if hAtom ever defined this rel=home made the most sense for what you would add, because the feed's link is not to a part of the site by to the home of the site.&lt;br /&gt;
&lt;br /&gt;
* include in hAtom 0.2&lt;br /&gt;
** -1 [[User:DavidJanes]] not enough development of these ideas yes&lt;br /&gt;
&lt;br /&gt;
==== Feed &amp;lt;i&amp;gt;updated&amp;lt;/i&amp;gt; (atom:&amp;lt;i&amp;gt;updated&amp;lt;/i&amp;gt;) ====&lt;br /&gt;
* {{OpenIssue}} 2006-04-01 raised by [[User:RobertBachmann|Robert Bachmann]]&lt;br /&gt;
** atom:&amp;lt;i&amp;gt;updated&amp;lt;/i&amp;gt; is required for atom:feed. Thus it should be available in hAtom to. I'm proposing the following rules:&lt;br /&gt;
**# The Feed Updated element is identified by the class name &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; at the feed level (inside a Feed element but not inside an Entry element)&lt;br /&gt;
**# If no element with the class name &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; is present, use the youngest &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; from the feed's entries.&lt;br /&gt;
** 2006-04-12 [[User:DavidJanes]] I like this. And the definition of &amp;quot;feed level&amp;quot;&lt;br /&gt;
** 2007-06-20 [[User:MikeKaply]] The &amp;quot;youngest&amp;quot; thing is a really bad idea. If a page has 100 hAtom entries, a parser would have to go through all 100 looking for a low date. That's crazy.&lt;br /&gt;
*** 2008-03-20 [[User:TobyInk]] Not crazy at all. I've just implemented an hAtom to Atom converter and I do precisely this. Most (useful) hAtom parsers will &amp;quot;go through all 100 entries&amp;quot; anyway, won't they? So why not look for the youngest updated date as part of that loop. The only slight annoyance is that in RFC 4287, the &amp;amp;lt;atom:updated&amp;gt; element must occur before the first &amp;amp;lt;atom:entry&amp;gt; element -- this is easily solved by inserting a placeholder &amp;amp;lt;atom:updated&amp;gt; element, looping through the entries and then going back and filling in the date. This is really, really, '''not''' a difficult thing to implement.&lt;br /&gt;
&lt;br /&gt;
* include in hAtom 0.2&lt;br /&gt;
** +0.5 [[User:DavidJanes]]&lt;br /&gt;
&lt;br /&gt;
==== Feed &amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt; (atom:&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt;) ====&lt;br /&gt;
* {{OpenIssue}} 2006-04-01 raised by [[User:RobertBachmann|Robert Bachmann]]&lt;br /&gt;
** atom:&amp;lt;i&amp;gt;title&amp;lt;/i&amp;gt; is required for atom:feed. Thus it should be available in hAtom to. I'm proposing the following rules:&lt;br /&gt;
**# a Feed Title element is identified by the class name &amp;lt;code&amp;gt;&amp;lt;del&amp;gt;entry&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;feed&amp;lt;/ins&amp;gt;-title&amp;lt;/code&amp;gt;&lt;br /&gt;
**# a Feed SHOULD have an Feed Title&lt;br /&gt;
**# a Feed Title element represents the concept of an Atom feed title&lt;br /&gt;
**# if the Feed Title is missing, use&lt;br /&gt;
**#* &amp;lt;del&amp;gt;the first &amp;lt;code&amp;gt;&amp;amp;lt;h#&amp;gt;&amp;lt;/code&amp;gt; element in the Feed, or&amp;lt;/del&amp;gt;&lt;br /&gt;
**#* the &amp;lt;code&amp;gt;&amp;amp;lt;title&amp;gt;&amp;lt;/code&amp;gt; of the page, or&lt;br /&gt;
**#* assume it is the empty string&lt;br /&gt;
** 2006-04-01 [[User:ChrisCasciano|ChrisCasciano]] - I think that the fall back to using the first h# on the page is dangerous.. depending on the pge it may be something that changes often (first h# is a post title) or is otherwise ambiguous. I would think using &amp;lt;code&amp;gt;&amp;amp;lt;title&amp;gt;&amp;lt;/code&amp;gt; before h# would be prefered if not the most common desire of the page author.&lt;br /&gt;
** 2006-04-05 [[User:RobertBachmann|Robert Bachmann]]: Okay. Deleted &amp;quot;the first &amp;lt;code&amp;gt;&amp;amp;lt;h#&amp;gt;&amp;lt;/code&amp;gt; element in the Feed, or&amp;quot;&lt;br /&gt;
** 2006-04-12 [[User:DavidJanes]] Note also in support of this decision that many blogs use &amp;lt;code&amp;gt;&amp;amp;lt;h#&amp;gt;&amp;lt;/code&amp;gt; to encode the date for a group of postings&lt;br /&gt;
** 2006-04-12 [[User:DavidJanes]]: why &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; for the feed title. Why not &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;feed-title&amp;lt;/code&amp;gt;?&lt;br /&gt;
** 2006-04-12 [[User:RobertBachmann|Robert Bachmann]]: Sorry, this was a &amp;quot;copy &amp;amp; paste&amp;quot; mistake. Fixed now.&lt;br /&gt;
** 2007-02-26 [[User:MikeKaply|Mike Kaply]]: I think a feed title should be mandatory if an hfeed is present. If you have multiple feeds on a page, there is no way in a user interface to distinguish between different feeds.&lt;br /&gt;
&lt;br /&gt;
==== Feed &amp;lt;i&amp;gt;author&amp;lt;/i&amp;gt; and Entry author (atom:&amp;lt;i&amp;gt;author&amp;lt;/i&amp;gt;) ====&lt;br /&gt;
* {{OpenIssue}} 2006-04-01 raised by [[User:RobertBachmann|Robert Bachmann]]&lt;br /&gt;
** I'm proposing the following rules for Feed author:&lt;br /&gt;
**# a Feed Author element is represented by class name &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; at the feed level (inside a Feed element but not inside an Entry element)&lt;br /&gt;
**# a Feed Author element represents the concept of a Atom author&lt;br /&gt;
**# a Feed Author element MUST be encoded in a [[hcard|hCard]]&lt;br /&gt;
**# a Feed Author element SHOULD be encoded in a &amp;lt;code&amp;gt;&amp;amp;lt;address&amp;gt;&amp;lt;/code&amp;gt; element&lt;br /&gt;
**# a Feed MAY have more than one Feed Author elements&lt;br /&gt;
**# if the Feed Author is missing&lt;br /&gt;
**#* find the [[algorithm-nearest-in-parent|Nearest In Parent]] &amp;lt;code&amp;gt;&amp;amp;lt;address&amp;gt;&amp;lt;/code&amp;gt; element(s) with class name &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; and that is/are a valid [[hcard|hCard]]&lt;br /&gt;
**#* otherwise &amp;lt;del&amp;gt;the Feed is invalid hAtom&amp;lt;/del&amp;gt; &amp;lt;ins&amp;gt;there is no Feed Author&amp;lt;/ins&amp;gt;&lt;br /&gt;
** I'm proposing the following rules for entry author:&lt;br /&gt;
**# an Entry Author element is represented by class name &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt;&lt;br /&gt;
**# an Entry Author element represents the concept of an Atom author&lt;br /&gt;
**# an Entry Author element MUST be encoded in an [[hcard|hCard]]&lt;br /&gt;
**# an Entry Author element SHOULD be encoded in an &amp;lt;code&amp;gt;&amp;amp;lt;address&amp;gt;&amp;lt;/code&amp;gt; element&lt;br /&gt;
**#&amp;lt;del&amp;gt; If a Feed has no Feed author each Entry MUST have at least one Entry Author element&amp;lt;/del&amp;gt;&lt;br /&gt;
**# &amp;lt;ins&amp;gt;If an Entry is enclosed by a Feed and this Feed has no Feed author, each Entry MUST have at least one Entry Author element. If an Entry is not enclosed by a Feed and has no Entry Author:&lt;br /&gt;
**#* find the [[algorithm-nearest-in-parent|Nearest In Parent]] &amp;lt;code&amp;gt;&amp;amp;lt;address&amp;gt;&amp;lt;/code&amp;gt; element(s) with class name &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; and that is/are a valid [[hcard|hCard]]&lt;br /&gt;
**#* otherwise the Entry is invalid hAtom&amp;lt;/ins&amp;gt;&lt;br /&gt;
**# an Entry MAY have more than one Entry Author elements&lt;br /&gt;
** [[User:Singpolyma|singpolyma]] 00:11, 13 Apr 2006 (PDT) : feed should not be invalid hAtom if feed-level has no author -- it should be invalid if feed-level has no author AND one or more entries have no author.  Also, one or more entries may be missing an author IF feed-level has an author.&lt;br /&gt;
** 2006-04-17 [[User:RobertBachmann|Robert Bachmann]]: I replaced &amp;quot;the Feed is invalid hAtom&amp;quot; with &amp;quot;there is no Feed Author&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Entry &amp;lt;i&amp;gt;id&amp;lt;/i&amp;gt; (atom:&amp;lt;i&amp;gt;id&amp;lt;/i&amp;gt;) ====&lt;br /&gt;
* {{OpenIssue}}2006-04-01 raised by [[User:RobertBachmann|Robert Bachmann]]&lt;br /&gt;
** atom:&amp;lt;i&amp;gt;id&amp;lt;/i&amp;gt; is required for atom:entry. Thus it should be available in hAtom to. The Entry permalink should be used as the entry id.&lt;br /&gt;
** --[[User:Federico|Federico]] 19:52, 25 Apr 2006 (PDT): I would add &amp;quot;Only if the id attribute is not defined for the element that contains the entry&amp;quot;. The id attribute can be a tag uri. If you use always use the Entry permalink as the entry id and the Atom feed uses tag uris, you would end with two different ids for the same entry.&lt;br /&gt;
** 2006-12-31 response by [[User:ComputerKid|Emanla Eraton]] No, it shouldn't be a permalink. It should be a &amp;quot;tag:&amp;quot; id for entries.&lt;br /&gt;
** 2007-06-06 [[RyanKing]] - the syntax of tag URIs and html id attributes are incompatible. HTML disallows forward-slash (/) in ids [http://www.w3.org/TR/html401/types.html#type-name], while tag URIs require them [http://www.faqs.org/rfcs/rfc4151.html].&lt;br /&gt;
&lt;br /&gt;
==== Author ====&lt;br /&gt;
===== author as an hcard is too much to require =====&lt;br /&gt;
The following 3 items were extracted from the conversation starting on irc with [http://rbach.priv.at/Microformats-IRC/2006-03-24#T152248 logs available starting around here]&lt;br /&gt;
&lt;br /&gt;
* [[User:Fil|Fil]] If, for example, you are programming an &amp;quot;aggregator&amp;quot; of news syndicated from many sources like in [http://sedna.spip.org/sedna/ Sedna], chances are that you don't control what &amp;quot;authors&amp;quot; look like; they can be nicely microformated (if coming from an mf-enabled system), but most probably they will be internally represented by a string that contains, in some random order, a name, and/or an email, and so on. If you want to pass on this information in an hAtom feed, you can't possibly reformat it to an hCard. But you still want to pass it on in a &amp;amp;lt;div class=&amp;quot;author&amp;quot;&amp;gt; element.&lt;br /&gt;
** [[Tantek]] I don't believe the &amp;quot;can't possibly&amp;quot; statement.  Please provide a URL to a concrete example that you think you can't possibly reformat into an hCard so we can all take a look.&lt;br /&gt;
** [[User:ChrisCasciano|ChrisCasciano]] details of Fil's extraction [http://rbach.priv.at/Microformats-IRC/2006-03-24#T153453 in irc logs] including sting data passed to his app in the form of &amp;quot;Béatrice XXXXXXX beatrice.xxxxxx@@zzzzzzzzz.com&amp;quot;&lt;br /&gt;
** [[User:Fil|Fil]] the example url was given up there (Sedna); note that the author information comes from syndication links; nobody is going to edit them to outline what is the name, what is the email and so on, as everything is flowing through automatically... so here the &amp;quot;author&amp;quot; data is dirty, and will not be cleaned into an hCard. We can force it to be in an hCard but it will be meaningless if the source (original data) wasn't built on an mf-enabled software.&lt;br /&gt;
&lt;br /&gt;
* [[pnhChris]] i don't disagree.. the field often comes from places too dumb to follow these rules well; even cases like wordpress that allow users to present their name 1 of 6 or 8 difference ways (from username to LF, FN) .. its not just writing a template to output as hatom at that point... you have to go further upstream where the string to be displayed is chosen .. I also think its pointless to have 10 vcards on the same page whose only data is a generic name like &amp;quot;Chris&amp;quot;&lt;br /&gt;
** [[Tantek]] 10 vcards that are the same is pointless yes, but identifying who the author of 10 posts are is not pointless - that's the difference.&lt;br /&gt;
** [[User:ChrisCasciano|ChrisCasciano]] Agreed, but I still have concerns that &amp;quot;author&amp;quot; in hAtom does not always make for good hCards, though the situations where it does is optimal. My comments in the conversation were old comments I've made before over concerns and hardships or the lack of desire to make crappy data more portable, in neither of these cases do I think my two comments alone provide reasons to make change from the hAtom 0.1 spec&lt;br /&gt;
***[[User:Phae|Frances]] - Just thought I'd mention a scenario I have where the author of an entry does make a pretty useless vCard - the author in each case is an entire team (&amp;quot;creative team&amp;quot;, &amp;quot;technical department&amp;quot;) etc., rather than a specific, identifiable, person.  Some use may be regained when URL to specific team/information is included, in this circumstance.&lt;br /&gt;
****[[User:TobyInk]] - A vCard (thus an hCard) does not have to represent a person -- it could represent an organisation, or a department or team.&lt;br /&gt;
* [[User:Fil|Fil]] for the moment, to comply losely with hAtom 0.1, I will use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;author&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;My Name&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ; but it's not good&lt;br /&gt;
** [[Tantek]] You can actually simplify that (one fewer span) with: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;My Name&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* require author as [[hCard]] (i.e. no change from 0.1)&lt;br /&gt;
** +2 [[User:DavidJanes]]&lt;br /&gt;
&lt;br /&gt;
==== Entry &amp;lt;i&amp;gt;source&amp;lt;/i&amp;gt; (atom:&amp;lt;i&amp;gt;source&amp;lt;/i&amp;gt;) ====&lt;br /&gt;
* raised by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
** When defining hAtom 0.1, atom:source was omitted. We should consider adding this back in as a useful element for providing citations of composite feeds.&lt;br /&gt;
*** 2009-07-20 [[User:DavidJanes]] {{ToDo}} we need an example of how this would look in the real world&lt;br /&gt;
&lt;br /&gt;
== Other Questions and Issues ==&lt;br /&gt;
General comments, modeling issues, algorithm issues, should have issues, etc. go here.&lt;br /&gt;
&lt;br /&gt;
=== Entry Updated Required? -- Blogger Issue ===&lt;br /&gt;
moved to [[hatom-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
=== 'MAY have multiple Feed elements' -- details and viability of multiple feeds ===&lt;br /&gt;
moved to [[hatom-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== pre 0.1 issues ==&lt;br /&gt;
'''This section is more or less closed, as hAtom 0.1 is out the door. If there are open issues that you are championing that didn't make it into hAtom 0.1, move them up above to the hAtom 0.2 section'''&lt;br /&gt;
&lt;br /&gt;
See: [[hatom-issues-pre-0.1]]&lt;br /&gt;
&lt;br /&gt;
== Template ==&lt;br /&gt;
{{issues-format}}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[hatom|hAtom]] - the draft proposal&lt;br /&gt;
* [[hatom-faq]] - knowledge base&lt;br /&gt;
* [[hatom-issues-resolved]]&lt;br /&gt;
* [[blog-post-brainstorming]]&lt;br /&gt;
* [[blog-post-formats]]&lt;br /&gt;
* [[blog-post-examples]]&lt;br /&gt;
* [[blog-description-format]] - how to describe a blog (as opposed to the individual entries, which is what we're doing here)&lt;br /&gt;
* [[mfo-examples]]&lt;br /&gt;
* [[naming-principles]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=html5&amp;diff=41671</id>
		<title>html5</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=html5&amp;diff=41671"/>
		<updated>2010-01-19T19:23:56Z</updated>

		<summary type="html">&lt;p&gt;BenWard: h1 -&amp;gt; entry-title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Microformats in HTML 5&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''This page is to document '''future''' use of microformats in [http://www.w3.org/html/wg/html5 HTML 5]. None of the items documented are supported now, and may change upon proper development within the microformats community, or changes in the HTML 5 specification. This page is to track HTML5 enabled enhancements to microformats, and issues that HTML5 raises. It may be used to track issues which we need to push back into the HTML 5 development process.''&lt;br /&gt;
&lt;br /&gt;
If there are things that Microformats would like to mark up that aren't handled by HTML5 explicitly, please let the WHATWG know, so we can improve HTML5. This is how &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; came to be, for instance.&lt;br /&gt;
&lt;br /&gt;
==New features in HTML5==&lt;br /&gt;
&lt;br /&gt;
=== time element ===&lt;br /&gt;
'''&amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element for representing date times'''. In HTML5, the machine form of datetimes can be represented natively. It should be possible to replace the date-time design pattern with native HTML.&lt;br /&gt;
* &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; takes an optional &amp;lt;code&amp;gt;pubdate&amp;lt;/code&amp;gt; attribute, to indicate the publication date of an &amp;lt;code&amp;gt;article&amp;lt;/code&amp;gt;. Synonymous with [[hAtom]] &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt;, may imply [[hAtom]] &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt;, may imply [[hReview]] &amp;lt;code&amp;gt;dtreviewed&amp;lt;/code&amp;gt;, may imply [[hListing]] &amp;lt;code&amp;gt;dtlisted&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== article element ===&lt;br /&gt;
'''&amp;lt;code&amp;gt;article&amp;lt;/code&amp;gt;''' element for major, independent compositions of content within a page. Perhaps synonymous with [[hAtom]] &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt;. Could be parsed as &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt; within explicit &amp;lt;code&amp;gt;hfeed&amp;lt;/code&amp;gt; blocks?&lt;br /&gt;
&lt;br /&gt;
=== microdata ===&lt;br /&gt;
'''[[microdata]]'''. HTML5 provides a set of attributes and associated DOM APIs for extracting data from web pages.&lt;br /&gt;
* &amp;lt;code&amp;gt;itemprop&amp;lt;/code&amp;gt; attribute is a more specific version of &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;, for field names&lt;br /&gt;
* &amp;lt;del&amp;gt;&amp;lt;code&amp;gt;subject&amp;lt;/code&amp;gt; attribute allows semantically linking within the page. Conceptually similar to the [[include-pattern]].&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;itemref refid=&amp;quot;x&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt; allows semantically linking within the page. Conceptually similar to the [[include-pattern]].&lt;br /&gt;
* &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; attribute on the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element can be used to invisibly include data. Conceptually similar to the [[value-class-pattern]]. &lt;br /&gt;
* &amp;lt;code&amp;gt;itemscope&amp;lt;/code&amp;gt; attribute identifies blocks to be marked as structure data. Conceptually similar to the [[mfo]] brainstorming?&lt;br /&gt;
* &amp;lt;code&amp;gt;itemtype&amp;lt;/code&amp;gt; attribute to specify the type for an item (for example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;itemtype=&amp;quot;http://microformats.org/profile/hcard&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
==== microdata vocabularies ====&lt;br /&gt;
* [http://dev.w3.org/html5/mdvcard/ microdata vCard] - use [[hCard]] instead, taking into account the [[hcard-faq|hCard FAQ]] and [[hcard-issues-resolved|resolved]]+[[hcard-issues-closed|closed issues]]. hCard 1.0.1 (under development) is incorporating these errata. Avoid the &amp;quot;microdata vCard&amp;quot; vocabulary as it is an out-of-date fork/snapshot of hCard.&lt;br /&gt;
* [http://dev.w3.org/html5/mdvevent/ microdata vEvent] - use [[hCalendar]] instead, taking into account the [[hcalendar-faq|hCalendar FAQ]] and [[hcalendar-issues-resolved|resolved]]+[[hcalendar-issues-closed|closed issues]].  hCalendar 1.0.1 is incorporating these errata. Avoid the &amp;quot;microdata vEvent&amp;quot; vocabulary, as it is an out-of-date fork/snapshot of hCalendar's vevent root class name and applicable properties.&lt;br /&gt;
* [http://dev.w3.org/html5/mdwork/ microdata Licensing Works] - see also [[licensing-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
=== data attributes ===&lt;br /&gt;
'''&amp;lt;code&amp;gt;data-&amp;lt;/code&amp;gt; naming convention for tag attributes'''. the draft specification states that any attribute that starts with &amp;quot;data-&amp;quot; will be treated as a storage area for private data.&lt;br /&gt;
* Note that the data-* stuff is explicitly &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; for microformats. Those attributes are defined in such a way that browsers will never do anything special with them, ever. They are intended for script authors to have a space in which they can play without ever clashing with anything the browser does. There may be some cases of private [[poshformats]] that are never intended for interchange that may be used in data-* attributes.&lt;br /&gt;
&lt;br /&gt;
== Current microformat compatibility ==&lt;br /&gt;
There seems to be no issue with current implementation of the following microformats in HTML 5:&lt;br /&gt;
* [[hcard]]&lt;br /&gt;
* [[xfn]]&lt;br /&gt;
&lt;br /&gt;
== Requests ==&lt;br /&gt;
* &amp;quot;how to use with HTML5&amp;quot; sections that include (a) microformats examples that use [[HTML5]], and (b) microformats parsing details that specify what to do (if anything special is required) with HTML5 elements (e.g. how to parse the &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element for dates and times for microformats). See (and add to if necessary) :&lt;br /&gt;
** [[hcard-brainstorming#how_to_use_with_HTML5|hCard brainstorming - how to use with HTML5]]&lt;br /&gt;
** [[hcalendar-brainstorming#how_to_use_with_HTML5|hCalendar brainstorming - how to use with HTML5]] e.g. hCalendar with the &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element&lt;br /&gt;
** [[citation-brainstorming#how_to_use_with_HTML5|citation brainstorming - how to use with HTML5]]&lt;br /&gt;
** if nothing special is required for HTML5, then after performing the analysis, that should be noted as well, for the purpose of clarity.&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&amp;lt;div class='discussion issues'&amp;gt;&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; attribute has been removed'''. In HTML5, &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; are no-longer paired, and the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute nolonger describes the direction of a relationship. Microformats which use &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; will need to use &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
** Or something like data-rev=&amp;quot;vote-for&amp;quot;&lt;br /&gt;
*** As above, &amp;lt;code&amp;gt;data-&amp;lt;/code&amp;gt; attributes are for application-context functionality, ''not'' shared vocabularies. Further, the HTML5 specification makes &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; the correct attribute to use, regardless of direction, through the changed specification. --[[User:BenWard|BenWard]] 17:53, 12 May 2009 (UTC)&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt; attribute has been removed'''. In HTML, the &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt; attribute from the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; has been removed, with no direct replacement. This causes issues for GRDDL support. It's been suggested that profile URLs be represented in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements instead, or even as a custom HTTP header. See [[grddl]] and [[profile-uris]]&lt;br /&gt;
** See [[rel-profile]] which is the replacement for the profile attribute. [[User:Tantek|Tantek]] 23:24, 5 November 2009 (UTC)&lt;br /&gt;
* '''Microdata &amp;lt;code&amp;gt;itemprop&amp;lt;/code&amp;gt; duplicates &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; data'''. the new attribute itemprop is designed to hold some meaningful data about an element, but class already exists to hold this data. Unsure of reasons why itemprop required?&lt;br /&gt;
** This is because microdata is designed to be generically parsable, even when the parser does not understand the vocabulary. As such, property names have to be on an explicit attribute, not shared with other, non-data classnames. --[[User:BenWard|BenWard]] 21:12, 4 September 2009 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[HTML3]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformateers&amp;diff=41628</id>
		<title>microformateers</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformateers&amp;diff=41628"/>
		<updated>2010-01-12T23:01:01Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Documented my searches, added automated-bot spam blacklist, few other tweaks.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Microformateers&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/microformateers Microformateers] is a Twitter account providing quick answers to people's questions about microformats. Twitter is full of people with short queries about syntax, or remarking upon things they've read about microformats. Microformats.org already runs the [http://twitter.com/microformats @microformats] account for pushing news and announcements, but the microformateers effort is about responding.&lt;br /&gt;
&lt;br /&gt;
==What is this?==&lt;br /&gt;
&lt;br /&gt;
Microformateers is a single Twitter account, shared between a number of individual contributors. They monitor Twitter searches for mentions of microformats and related terms, and respond directly and publicly to people's lazy-web questions, ideally within 140 characters. Where longer code examples are required, code snippets areposted to [http://gist.github.com gist].&lt;br /&gt;
&lt;br /&gt;
==Who are the microformateers?==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
Because of the mechanics of Twitter (a single account, shared with a single password) it is not possible for the &amp;lt;span class=&amp;quot;org&amp;quot;&amp;gt;Microformateers&amp;lt;/span&amp;gt; account to be open to all. '''The following agents are currently ‘on duty’''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Frances Berriman&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^FB&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/58225171/17464024_N00_normal_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/phae&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Phae]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Tantek Çelik&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^T&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
http://a1.twimg.com/profile_images/76685310/ca-sci-t_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/t&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Tantek]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Jeremy Keith&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/65971001/avatar_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/adactio&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Adactio]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Kevin Marks&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^KM&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
http://a1.twimg.com/profile_images/130885696/kevin300am-1_bigger.jpg&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/kevinmarks&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Kevin Marks]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Drew McLellan&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/124177936/peek_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/drewm&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:DrewMcLellan]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Matthias Pfefferle&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^MP&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
http://a1.twimg.com/profile_images/481055128/b36983a5651df2c413e264ad4d5cc1a1.jpeg_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/pfefferle&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Pfefferle]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Ben Ward&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^BW&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/150824912/2009-200_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/benward&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:BenWard]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- // microformateers org vcard --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Response Process==&lt;br /&gt;
&lt;br /&gt;
* Microformateers is a single Twitter identity shared between an appropriate number of trusted individuals&lt;br /&gt;
* When you have a free moment or the mood takes you, monitor searches for microformats terms (there's one saved in the account already)&lt;br /&gt;
* When you find a question to be answered, respond using the [http://twitter.com/microformateers @microformateers account]&lt;br /&gt;
* If you need to provide code, stick it on [http://gist.github.com gist.github.com] (or similar pastebin service) and link to it. Gist is good though, as it ties into the Github community as well.&lt;br /&gt;
* When you answer someone's question, add the tweet to the [http://twitter.com/microformateers/favorites @microformateers’ favorites], that we avoid inundating questioners with duplicate answers. (Most quality Twitter clients, as well as the Twitter website itself, indicate which tweets you have ‘faved’ inline.)&lt;br /&gt;
* Unless absolutely impossible, save 3 characters to sign the tweet with a &amp;lt;kbd&amp;gt;^XX&amp;lt;/kbd&amp;gt;, using your initials, so people can reference you personally as well. (e.g. ^BW, ^T, ^JK, ^FB… something identifiable.) People can refer to this wiki page to look-up the individual. &amp;lt;code&amp;gt;^AB&amp;lt;/code&amp;gt; is an existing convention on Twitter for this purpose, used by software such as Co-Tweet.&lt;br /&gt;
* Only use the @microformateers for answering questions. Don't use it to post or re-tweet general microformats information; that purpose is already served by @microformats.&lt;br /&gt;
&lt;br /&gt;
==Searches==&lt;br /&gt;
&lt;br /&gt;
Please document the searches you use to track microformats topics. For searches that exclude individual Twitter accounts, ''do not'' include any personal user blacklists.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;@microformats OR @microformateers OR microformat OR microformats OR uformats OR mformats OR µformats OR µf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;hCard OR hCalendar OR hAtom OR hAudio OR hReview OR hResume OR hListing OR hRecipe -@hreview -#hreview&amp;lt;/code&amp;gt; — covers major microformats, excludes the &amp;quot;@hreview&amp;quot; bot and hashtag (a service for creating reviews of items over Twitter.)&lt;br /&gt;
* &amp;lt;code&amp;gt;microdata&amp;lt;/code&amp;gt; — keep an eye on the closely related microdata work from HTML5.&lt;br /&gt;
&lt;br /&gt;
===Bots to Exclude===&lt;br /&gt;
&lt;br /&gt;
Depending on the tool you use to track Twitter topics, you may need to add exclusions to the above searches to filter out spam; there are some automated bots on Twitter that produce odd spam. Remember that the Twitter Search API doesn't account for the blocklist of the @microformateers account.&lt;br /&gt;
&lt;br /&gt;
Use this list for obscure, automated bots only, or users who are using microformat terms for non-web topics and generating collisions. ''Do not'' use this list for Twitter users that you personally disagree with or find irritating; excluding people from searches is a personal matter for individual agents, never group policy.&lt;br /&gt;
&lt;br /&gt;
* @library2 - “Library 2.0 Idea Generator -- a new idea every 1,800 seconds”. A bot which generates Web 2.0 satire from a dictionary of keywords, one of which is &amp;quot;microformats&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Interested List==&lt;br /&gt;
&lt;br /&gt;
If you're interested in becoming an agent for the microformateers, please add your name to the list below. There are a couple of constraints on this system: First is trust and security, simply because Twitter's account model requires sharing the same master password for the @microformateers account between all participants; we have to be conservative with proliferation. The second issue is meeting volume of demand. At present, we think that 4/5 agents is about the right number to be involved given the volume of questions and content that come through Twitter. But, as agents come and go, or as question demand increases we'll refer to this list. Thanks. (Technical solutions to make sharing Twitter accounts safer and accountable are also up for future consideration.) —[[User:BenWard|BenWard]] 21:31, 26 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
* [[User:EdwardOConnor|Ted]]&lt;br /&gt;
** +1 [[User:Tantek|Tantek]] 21:18, 15 October 2009 (UTC)&lt;br /&gt;
* [[User:EmilyLewis|Emily Lewis]]&lt;br /&gt;
** +1 [[User:BenWard|Ben]] 2010-01-12&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=User:BenWard/drafts/hcard&amp;diff=41569</id>
		<title>User:BenWard/drafts/hcard</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=User:BenWard/drafts/hcard&amp;diff=41569"/>
		<updated>2009-12-26T22:51:07Z</updated>

		<summary type="html">&lt;p&gt;BenWard: First pass. Restructured the property listing, redid the intro.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;hCard 1.0 — BenWard Edition&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
''This page is a draft reworking on the hCard specification by Ben Ward. It is an attempt to better present the spec to make it easier to understand and more complete. You should not refer to this document or work from it. See the [[hcard|hCard Specification]].''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dfn&amp;gt;hCard&amp;lt;/dfn&amp;gt; is a simple, open, distributed format for representing people, companies, organizations, and places, using a 1:1 representation of vCard ([[rfc-2426|RFC2426]]) properties and values in [[semantic-xhtml|semantic HTML or XHTML]]. hCard is one of several open [[microformats|microformat]] standards suitable for embedding in HTML, XHTML, Atom, RSS, and arbitrary XML.&lt;br /&gt;
&lt;br /&gt;
'''Want to get started with writing an [[hcard|hCard]]?'''  Use the [http://microformats.org/code/hcard/creator hCard creator] to write up some contact information and publish it, or follow the [[hcard-authoring|hCard authoring tips]] to add hCard markup to your current contact page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
; &amp;lt;span class=&amp;quot;role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt; &lt;br /&gt;
: &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://tantek.com/&amp;lt;/span&amp;gt;, and before at [http://technorati.com Technorati, Inc.], and at [http://microsoft.com/ Microsoft Corporation])&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
; Authors: [http://tantek.com/ Tantek Çelik] (affiliations above)&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Brian|Brian Suda]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://suda.co.uk/&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:BenWard|Ben Ward]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://benward.me/&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
; Acknowledgments: See [[hcard#Inspiration_and_Acknowledgments|acknowledgments]].&lt;br /&gt;
&lt;br /&gt;
[[hcard#Copyright|copyright]] and [[hcard#Patents|patents]] statements apply.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
''hCard is a microformats.org specification.''&lt;br /&gt;
&lt;br /&gt;
=== Available languages ===&lt;br /&gt;
&lt;br /&gt;
The English version of this specification is the only normative version. For translations of this document see the [[#translations]] section.&lt;br /&gt;
&lt;br /&gt;
=== Feedback, Errata and Updates ===&lt;br /&gt;
&lt;br /&gt;
* Public discussion on hCard takes place on [[hcard-feedback]], the [[irc|#microformats irc channel]] on irc.freenode.net, and [http://microformats.org/discuss/mail/microformats-discuss/ microformats-discuss mailing list].&lt;br /&gt;
* Known errors and issues in this specification are corrected on [[hcard-issues-resolved|resolved issues]] and [[hcard-issues-closed|closed issues]] pages.&lt;br /&gt;
* New issues must be documented on [[hcard-issues|issues]].&lt;br /&gt;
&lt;br /&gt;
== Introduction and Purpose==&lt;br /&gt;
&lt;br /&gt;
Across the web—on blogs, newspapers, and discussion forums—people identify themselves by name, discuss friends, family and colleagues, and reference businesses and places. By adding structured mark-up to their web pages, these writers and publishers can refer to people, organizations and places in such a way that software (spiders, aggregators and web browsers) can extract this information, transform it, or expose it to users in useful ways.&lt;br /&gt;
&lt;br /&gt;
This specification introduces the &amp;lt;dfn&amp;gt;hCard&amp;lt;/dfn&amp;gt; format, a 1:1 representation of the properties and values of the vCard standard ([[rfc-2426|RFC2426]]), in semantic HTML. hCard enables applications to retrieve information directly from web pages, without referencing a separate file.&lt;br /&gt;
&lt;br /&gt;
{{rfc-2119-intro}}&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== In General ===&lt;br /&gt;
&lt;br /&gt;
The vCard standard ([[rfc-2426|RFC2426]]) forms the basis of hCard.&lt;br /&gt;
&lt;br /&gt;
hCard uses vCard object, property and value names in lowercase as class names, and maps the nesting of vCard objects to nested HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== Root Class Name ===&lt;br /&gt;
&lt;br /&gt;
The root class name for an hCard is &amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;.  An element with a class name &amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt; is the root node of an &amp;lt;dfn&amp;gt;hCard&amp;lt;/dfn&amp;gt; object.&lt;br /&gt;
&lt;br /&gt;
=== Properties and Sub-properties ===&lt;br /&gt;
&lt;br /&gt;
The properties of an hCard are represented by elements inside the hCard, mapped to the vocabulary using the &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; attribute. The content of the an element with a class name of an hCard property, represents the value of that property. Some properties have sub-properties; sub-properties are represented by elements nested within a parent property element.&lt;br /&gt;
&lt;br /&gt;
=== The hCard Vocabulary ===&lt;br /&gt;
&lt;br /&gt;
Required fields are noted as such, but note that some required properties can be implied by special optimization patterns (see below.)&lt;br /&gt;
&lt;br /&gt;
; '''&amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;'''&lt;br /&gt;
: ''Required''&lt;br /&gt;
: The ''formatted-name'' of the hCard object.&lt;br /&gt;
; '''&amp;lt;code id=&amp;quot;property-list-n&amp;quot;&amp;gt;'''n'''&amp;lt;sup class=&amp;quot;footnote&amp;quot;&amp;gt;[[#note1|1]]&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;'''&lt;br /&gt;
: ''Required''&lt;br /&gt;
: A person's name&lt;br /&gt;
:; Sub-properties of &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;:&lt;br /&gt;
:: &amp;lt;code&amp;gt;family-name&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;given-name&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;additional-name&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;honorific-prefix&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;honorific-suffix&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt;&lt;br /&gt;
: A postal address&lt;br /&gt;
:; Sub-properties of &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;post-office-box&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;extended-address&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;street-address&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;locality&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;region&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;postal-code&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;country-name&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;&lt;br /&gt;
::; &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;&lt;br /&gt;
::: A unstructured form of an address, as it would be presented on an address label. You can also use &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; to mark up entire addresses in situations where you do not have structured address data available. &lt;br /&gt;
; &amp;lt;code&amp;gt;agent&amp;lt;/code&amp;gt;&lt;br /&gt;
: Another person (nested hCard) authorized to represent this first hCard. For instance, a secretary or PR contact.&lt;br /&gt;
; &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt;&lt;br /&gt;
: The birth date of the the entity represented by this hCard&lt;br /&gt;
; &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;&lt;br /&gt;
: Arbitrary keywords that may group this hCard with others. See also: [[rel-tag|tagging]].&lt;br /&gt;
; &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
: WHAT IS THIS?&lt;br /&gt;
; &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;&lt;br /&gt;
: An email address&lt;br /&gt;
: An hCard may contain multiple &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt; properties.&lt;br /&gt;
:; Sub-properties of &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;&lt;br /&gt;
::; &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;&lt;br /&gt;
::: ''Required.''&lt;br /&gt;
::: Where no sub-properties are specified for &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;value&amp;lt;code&amp;gt; is implied.&lt;br /&gt;
; geo&lt;br /&gt;
: Decimal geographic co-ordinates representing the current location of the entity represented by the hCard.&lt;br /&gt;
:; Sub-properties of &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;latitude&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;longitude&amp;lt;/code&amp;gt;&lt;br /&gt;
: See also: [[geo|Geo microformat]]&lt;br /&gt;
; &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;logo&amp;lt;/code&amp;gt;&lt;br /&gt;
: A logo graphic associated with this entity. e.g. the logo graphic of a business, or an avatar associated with a discussion-board user.&lt;br /&gt;
; &amp;lt;code&amp;gt;mailer&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;nickname&amp;lt;/code&amp;gt;&lt;br /&gt;
:&lt;br /&gt;
; &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt;&lt;br /&gt;
: The name and unit of the organisation for this hCard.&lt;br /&gt;
: If no sub-properties are specified, &amp;lt;code&amp;gt;organization-name&amp;lt;/code&amp;gt; is implied.&lt;br /&gt;
:; Sub-properties of &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;organization-name&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;organization-unit&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt;&lt;br /&gt;
: A photograph of the entity represented by this hCard.&lt;br /&gt;
; &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt;&lt;br /&gt;
: The date (and optionally time) in ISO format that the hCard was last revised.&lt;br /&gt;
; &amp;lt;code&amp;gt;role&amp;lt;/code&amp;gt;&lt;br /&gt;
: The occupational role of the person represented by this hCard.&lt;br /&gt;
; &amp;lt;code&amp;gt;sort-string&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;sound&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code id=&amp;quot;property-list-tel&amp;quot;&amp;gt;tel&amp;lt;sup class=&amp;quot;footnote&amp;quot;&amp;gt;[[#note2|2]]&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:; Sub-properties of &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;&lt;br /&gt;
: The job-title of the person represented by this hCard&lt;br /&gt;
; &amp;lt;code&amp;gt;tz&amp;lt;/code&amp;gt;&lt;br /&gt;
: The time-zone the person represented by this hCard is currently located in.&lt;br /&gt;
; &amp;lt;code&amp;gt;uid&amp;lt;/code&amp;gt;&lt;br /&gt;
: A unique identifier associated with this entity&lt;br /&gt;
; &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt;&lt;br /&gt;
: A URL associated with this entity.&lt;br /&gt;
: There may be multiple URL properties on an hCard object.&lt;br /&gt;
&lt;br /&gt;
=== Property Notes ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;note1&amp;quot;&amp;gt;[[#property-list-n|1. ^]]&amp;lt;/span&amp;gt;: The 'n' property is {{optional}} if any [[hcard#Implied_.22n.22_Optimization|implied 'n' optimization rules]] are in effect.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;note2&amp;quot;&amp;gt;[[#property-list-tel|2. ^]]&amp;lt;/span&amp;gt;: tel - Authors {{may}} follow the [http://en.wikipedia.org/wiki/E.123 E.123] standard for writing values of telephone numbers. Letter values (e.g. +1-555-FORMATS) {{must}} be converted to numbers. Use an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; to display letters and provide a numerical value simultaneously, e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;abbr title=&amp;quot;+15553676287&amp;quot;&amp;gt;+1-555-FORMATS&amp;lt;/abbr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Singular vs. Plural Properties ===&lt;br /&gt;
Singular properties: 'fn', 'n', 'bday', 'tz', 'geo', 'sort-string', 'uid', 'class', 'rev'.  For properties which are singular, the first descendant element with that class {{should}} take effect, any others being ignored.&lt;br /&gt;
&lt;br /&gt;
All other properties {{may}} be plural. Each class instance of such properties creates a new instance of that property.&lt;br /&gt;
&lt;br /&gt;
=== Human vs. Machine readable ===&lt;br /&gt;
The human visible text contents of an element for a property represents the value of that property, with a few exceptions:&lt;br /&gt;
&lt;br /&gt;
If an &amp;lt;code&amp;gt;&amp;amp;lt;abbr&amp;amp;gt;&amp;lt;/code&amp;gt; element is used for a property, then the '&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;' attribute (if present) of the &amp;lt;code&amp;gt;&amp;amp;lt;abbr&amp;gt;&amp;lt;/code&amp;gt; element is the value of the property, instead of the contents of the element, which instead provide a more human presentable version of the value.&lt;br /&gt;
&lt;br /&gt;
If an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element is used for one or more properties, it {{must}} be treated as follows:&lt;br /&gt;
# For the 'photo' property and any other property that takes a URL as its value, the &amp;lt;code&amp;gt;href=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; attribute provides the property value.&lt;br /&gt;
# For other properties, the element's content is the value of the property.&lt;br /&gt;
&lt;br /&gt;
If an &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;amp;gt;&amp;lt;/code&amp;gt; element is used for one or more properties, it {{must}} be treated as follows:&lt;br /&gt;
# For the 'photo' property and any other property that takes a URL as its value, the &amp;lt;code&amp;gt;src=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; attribute provides the property value.&lt;br /&gt;
# For other properties, the &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;gt;&amp;lt;/code&amp;gt; element's '&amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt;' attribute is the value of the property.&lt;br /&gt;
&lt;br /&gt;
If an &amp;lt;code&amp;gt;&amp;amp;lt;object&amp;amp;gt;&amp;lt;/code&amp;gt; element is used for one or more properties, it {{must}} be treated as follows:&lt;br /&gt;
# For the 'photo' property and any other property that takes a URL as its value, the &amp;lt;code&amp;gt;data=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; attribute provides the property value.&lt;br /&gt;
# For other properties, the element's content is the value of the property.&lt;br /&gt;
&lt;br /&gt;
=== Value excerpting ===&lt;br /&gt;
Sometimes only part of an element which is the equivalent for a property is used for the value of the property.  This typically occurs when a property has a subtype, like 'tel'. For this purpose, the special class name &amp;quot;&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;&amp;quot; is used to excerpt out the subset of the element that is the value of the property. E.g. here is an hCard fragment for marking up a home phone number:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vCard:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
TEL;TYPE=HOME:+1.415.555.1212&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCard:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;home&amp;lt;/span&amp;gt;:&lt;br /&gt;
 &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This hCard fragment could be displayed as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: thin dashed black; width: 95%; padding: .5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;home&amp;lt;/span&amp;gt;:&lt;br /&gt;
&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- note for Tantek: review/edit property casing from here on --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Property Exceptions ===&lt;br /&gt;
vCard has several properties which either do not make sense on, or are already implied within the context of a web page.  This section explains what to (not) do with them.&lt;br /&gt;
&lt;br /&gt;
# vCard's '''NAME''', '''PROFILE''', '''SOURCE''', '''PRODID''', '''VERSION''' properties are defined in Sections 2.1.2, 2.1.3, 2.1.4, 3.6.3, 3.6.9 of [[rfc-2426|RFC2426]].  Content publishers {{must-not}} use these properties in their hCards, and as such, hCard consumers/parsers {{must}} IGNORE these properties if they are found within an hCard. Instead. hCard to vCard converters {{should}} use the title of the page where the hCard is found (e.g. the &amp;lt;code&amp;gt;&amp;lt;title&amp;gt;&amp;lt;/code&amp;gt; element in HTML documents) to construct the NAME property, {{may}} output a PROFILE value of &amp;quot;&amp;lt;code&amp;gt;VCARD&amp;lt;/code&amp;gt;&amp;quot; per [[rfc-2426|RFC2426]], {{should}} use the URL of the page where the hCard is found to construct the SOURCE property (e.g. perhaps as a parameter to a URL/service that converts hCards to vCards), for an output vCard stream (e.g. a .vcf file). Only services/applications that output actual vCards should write the PRODID property, with the product identifier for said service/application. Similarly, only such services/applications should write the VERSION property, with the value &amp;quot;3.0&amp;quot; (without quotes) per [[rfc-2426|RFC2426]] Section 3.6.9.&lt;br /&gt;
&lt;br /&gt;
=== Organization Contact Info ===&lt;br /&gt;
If the &amp;quot;FN&amp;quot; and &amp;quot;ORG&amp;quot; (organization) properties have the exact same value (typically because they are set on the same element, e.g. class=&amp;quot;fn org&amp;quot;), then the hCard represents contact information for a company, organization or place and {{should}} be treated as such. In this case the author also {{must-not}} set the &amp;quot;N&amp;quot; property, or set it (and any sub-properties) explicitly to the empty string &amp;quot;&amp;quot;. Thus parsers {{should}} handle the missing &amp;quot;N&amp;quot; property, in this case by implying empty values for all the &amp;quot;N&amp;quot; sub-properties.&lt;br /&gt;
&lt;br /&gt;
=== Implied &amp;quot;n&amp;quot; Optimization ===&lt;br /&gt;
Although vCard requires that the &amp;quot;N&amp;quot; property be present, the authors of the vCard specification ([[rfc-2426|RFC2426]]) themselves do not include &amp;quot;N&amp;quot; properties in their vCards near the end of the spec (p.38).  This apparent contradiction can be resolved by simply allowing the &amp;quot;FN&amp;quot; property to imply &amp;quot;N&amp;quot; property values in typical cases provided in the spec. We do so explicitly in hCard.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;FN&amp;quot; and &amp;quot;ORG&amp;quot; are not the same (see previous section), and the value of the &amp;quot;FN&amp;quot; property is exactly two words (separated by whitespace), and there is no explicit &amp;quot;N&amp;quot; property, then the &amp;quot;N&amp;quot; property is inferred from the &amp;quot;FN&amp;quot; property.  For &amp;quot;FN&amp;quot;s with either one word see below, and for three or more, the author {{must}} explicitly markup the &amp;quot;N&amp;quot;, except for the organization contact info case, [http://microformats.org/wiki/hcard#Organization_Contact_Info see above] for that.&lt;br /&gt;
&lt;br /&gt;
# The content of &amp;quot;FN&amp;quot; is broken into two &amp;quot;words&amp;quot; separated by whitespace.&lt;br /&gt;
# The ''first'' word of the &amp;quot;FN&amp;quot; is interpreted as the &amp;quot;given-name&amp;quot; for the &amp;quot;N&amp;quot; property.&lt;br /&gt;
# The ''second/last'' word of the &amp;quot;FN&amp;quot; is interpreted as the &amp;quot;family-name&amp;quot; for the &amp;quot;N&amp;quot; property.&lt;br /&gt;
# Exception: If the first word ends in a &amp;quot;,&amp;quot; comma OR if the second word is a single character (optionally followed by a period &amp;quot;.&amp;quot;), then the first word (minus the comma at the end if any) is interpreted as the &amp;quot;family-name&amp;quot; and the second word is interpreted as the &amp;quot;given-name&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This allows simplification in the typical case of people stating:&lt;br /&gt;
* given-name (space) family-name&lt;br /&gt;
* family-name (comma) given-name&lt;br /&gt;
* family-name (comma) given-name-first-initial&lt;br /&gt;
* family-name (space) given-name-first-initial (optional period)&lt;br /&gt;
&lt;br /&gt;
=== Implied &amp;quot;nickname&amp;quot; Optimization ===&lt;br /&gt;
Due to the prevalence of the use of nicknames/handles/usernames in actual content published on the Web (e.g. authors of [[hReview|reviews]]), hCard also has an implied &amp;quot;nickname&amp;quot; optimization to handle this.&lt;br /&gt;
&lt;br /&gt;
Similar to the implied &amp;quot;n&amp;quot; optimization, if &amp;quot;FN&amp;quot; and &amp;quot;ORG&amp;quot; are not the same, and the value of the &amp;quot;FN&amp;quot; property is exactly one word, and there is no explicit &amp;quot;N&amp;quot; property, then:&lt;br /&gt;
&lt;br /&gt;
# The content of the &amp;quot;FN&amp;quot; {{must}} be treated as a &amp;quot;nickname&amp;quot; property value.&lt;br /&gt;
# Parsers {{should}} handle the missing &amp;quot;N&amp;quot; property by implying empty values for all the &amp;quot;N&amp;quot; sub-properties.&lt;br /&gt;
&lt;br /&gt;
Though parsers {{must}} follow the implied nickname optimization, publishers {{should}} explicitly indicate the &amp;quot;nickname&amp;quot; even in this case, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;fn nickname&amp;quot;&amp;gt;daveman692&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hCard {{may}} have additional explicit &amp;quot;nickname&amp;quot; property values in addition to the implied nickname.&lt;br /&gt;
&lt;br /&gt;
=== Implied &amp;quot;organization-name&amp;quot; Optimization ===&lt;br /&gt;
The &amp;quot;ORG&amp;quot; property has two subproperties, organization-name and organization-unit. Very often authors only publish the organization-name.  Thus if an &amp;quot;ORG&amp;quot; property has no &amp;quot;organization-name&amp;quot; inside it, then its entire contents {{must}} be treated as the &amp;quot;organization-name&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Tags as Categories ===&lt;br /&gt;
Categories in hCard {{may}} be represented by tags with [[rel-tag]]. When a category property is a rel-tag, the tag (as defined by rel-tag) is used for that category.&lt;br /&gt;
&lt;br /&gt;
=== type subproperty values ===&lt;br /&gt;
The 'type' subproperty in particular takes different values depending on which property it is a subproperty of.  These 'type' subproperty values are case-INSENSITIVE, meaning &amp;quot;Home&amp;quot; is the same as &amp;quot;home&amp;quot;, as well as multivalued, e.g. a tel can be home and preferred:&lt;br /&gt;
&lt;br /&gt;
vCard:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
TEL;TYPE=HOME,PREF:+1.415.555.1212&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCard:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;pref&amp;lt;/span&amp;gt;erred):&lt;br /&gt;
 &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This could be displayed as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: thin dashed black; width: 95%; padding: .5em 1em; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;pref&amp;lt;/span&amp;gt;erred):&lt;br /&gt;
&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== type with unspecified value ====&lt;br /&gt;
When the type of a property is specified, and there is no explicit value specified, then everything in the property except for the type is considered the value of the property. E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt; +1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is equivalent to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt; +1.415.555.1212&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And thus the type is &amp;quot;home&amp;quot; and the value is &amp;quot;+1.415.555.1212&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== adr tel email types ====&lt;br /&gt;
The following lists are ''informative''. See [[rfc-2426|RFC2426]] sections 3.2.1 ADR, 3.3.1 TEL, and 3.3.2 EMAIL respectively for normative type values.  They are repeated here for convenience. Default type subproperty value(s) is(are) first in each list and indicated in ALL CAPS.  types may be multivalued.&lt;br /&gt;
&lt;br /&gt;
* adr type: INTL, POSTAL, PARCEL, WORK, dom, home, pref&lt;br /&gt;
* tel type: VOICE, home, msg, work, pref, fax, cell, video, pager, bbs, modem, [http://flickr.com/photos/tags/carcellphone/ car], isdn, pcs&lt;br /&gt;
* email type: INTERNET, x400, pref&lt;br /&gt;
&lt;br /&gt;
=== Profile ===&lt;br /&gt;
The hCard &amp;lt;span id=&amp;quot;XMDP_Profile&amp;quot;&amp;gt;XMDP profile&amp;lt;/span&amp;gt; is at http://microformats.org/profile/hcard&lt;br /&gt;
&lt;br /&gt;
Content that uses hCard {{should}} reference this profile, e.g.&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;head profile=&amp;quot;http://microformats.org/profile/hcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;profile&amp;quot; href=&amp;quot;http://microformats.org/profile/hcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
This content uses &amp;lt;a rel=&amp;quot;profile&amp;quot; href=&amp;quot;http://microformats.org/profile/hcard&amp;quot;&amp;gt;hCard&amp;lt;/a&amp;gt;.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Content may combine the above methods as well.&lt;br /&gt;
&lt;br /&gt;
=== Parsing Details ===&lt;br /&gt;
&lt;br /&gt;
See [[hcard-parsing|hCard parsing]].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
This section is informative.&lt;br /&gt;
&lt;br /&gt;
=== Sample vCard ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample vCard:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
BEGIN:VCARD&lt;br /&gt;
VERSION:3.0&lt;br /&gt;
N:Çelik;Tantek&lt;br /&gt;
FN:Tantek Çelik&lt;br /&gt;
URL:http://tantek.com/&lt;br /&gt;
END:VCARD&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and an equivalent in hCard with various elements optimized appropriately.  See [[hcard-example1-steps| hCard Example 1]] for the derivation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;url fn&amp;quot; href=&amp;quot;http://tantek.com/&amp;quot;&amp;gt;Tantek Çelik&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This hCard might be displayed as:&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: thin dashed black; width: 95%; padding: .5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
[http://tantek.com/ Tantek Çelik]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The version information is unnecessary in hCard markup directly since the version will be defined by the profile of hCard that is used/referred to in the 'profile' attribute of the &amp;lt;head&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
===Live example===&lt;br /&gt;
&lt;br /&gt;
Here is [http://www.commerce.net/ Commercenet]'s contact details, as a live hCard which will be detected, on this page, by microformat parsing tools:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;fn org&amp;quot;&amp;gt;'''CommerceNet'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;url&amp;quot;&amp;gt;'''&amp;lt;nowiki&amp;gt;http://www.commerce.net/&amp;lt;/nowiki&amp;gt;'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;'''&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Work&amp;lt;/span&amp;gt;:'''&lt;br /&gt;
&amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;'''169 University Avenue'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;'''Palo Alto'''&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;region&amp;quot;&amp;gt;'''CA'''&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;'''94301'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;country-name&amp;quot;&amp;gt;'''USA'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;'''&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Work&amp;lt;/span&amp;gt; +1-650-289-4040'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;'''&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Fax&amp;lt;/span&amp;gt; +1-650-289-4041'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;'''Email &amp;lt;span class=&amp;quot;email&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;info@commerce.net&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mark-up, emboldening omitted for clarity, with the following semantic improvements:&lt;br /&gt;
* &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; to expand abbreviations&lt;br /&gt;
* hyperlinking the org name with the url&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;fn org url&amp;quot; href=&amp;quot;http://www.commerce.net/&amp;quot;&amp;gt;CommerceNet&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Work&amp;lt;/span&amp;gt;:&lt;br /&gt;
    &amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;169 University Avenue&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;Palo Alto&amp;lt;/span&amp;gt;,  &lt;br /&gt;
    &amp;lt;abbr class=&amp;quot;region&amp;quot; title=&amp;quot;California&amp;quot;&amp;gt;CA&amp;lt;/abbr&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;94301&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;country-name&amp;quot;&amp;gt;USA&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Work&amp;lt;/span&amp;gt; +1-650-289-4040&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Fax&amp;lt;/span&amp;gt; +1-650-289-4041&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;Email: &lt;br /&gt;
   &amp;lt;span class=&amp;quot;email&amp;quot;&amp;gt;info@commerce.net&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== More Examples ===&lt;br /&gt;
See [[hcard-examples|hCard examples]] for more examples, including all examples from vCard [[rfc-2426|RFC2426]] converted into hCard.&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
This section is '''informative'''. The number of hCard examples in the wild has expanded far beyond the capacity of being kept inline in this specification. They have been moved to a [[hcard-examples-in-wild|separate page]].&lt;br /&gt;
&lt;br /&gt;
See [[hcard-examples-in-wild|hCard Examples in the wild]].&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
This section is '''informative'''. The number of hCard implementations has also expanded beyond the capacity of keeping them inline. They have been moved to a [[hcard-implementations|separate page]].&lt;br /&gt;
&lt;br /&gt;
See [[hcard-implementations|hCard Implementations]].&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
This section is &amp;lt;strong&amp;gt;informative&amp;lt;/strong&amp;gt;. For &amp;lt;span id=&amp;quot;Further_Reading&amp;quot;&amp;gt;further reading&amp;lt;/span&amp;gt; on hCard see [[hcard-articles]].&lt;br /&gt;
&lt;br /&gt;
==Buttons==&lt;br /&gt;
You can use these buttons on pages with hCards. See [[buttons#hCard]] for any recent additions.&lt;br /&gt;
&lt;br /&gt;
* http://www.crowley.nl/images/hcard.png (mirror: http://www.davidjanes.com/images/mf_hcard.png)&lt;br /&gt;
* http://rbach.priv.at/2006/buttons/hcard.png&lt;br /&gt;
* http://www.boogdesign.com/images/buttons/microformat_hcard.png&lt;br /&gt;
* CSS-powered button, as evidenced at [http://re-run.com/about/microformat-badges microformat badges @ re-run]&lt;br /&gt;
&lt;br /&gt;
== Copyright ==&lt;br /&gt;
Per the public domain release on the authors' user pages ([[User:Tantek|Tantek Çelik]], [[User:Brian|Brian Suda]]) this specification is released into the public domain.&lt;br /&gt;
&lt;br /&gt;
{{MicroFormatPublicDomainContributionStatement}}&lt;br /&gt;
&lt;br /&gt;
== Patents ==&lt;br /&gt;
{{MicroFormatPatentStatement}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Normative References ===&lt;br /&gt;
* [http://www.w3.org/TR/2002/REC-xhtml1-20020801/ XHTML 1.0 SE]&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc2426.txt vCard RFC2426]&lt;br /&gt;
* [http://www.itu.int/rec/T-REC-E.123-200102-I/en ITU recommendation E.123] format of telephone numbers (chargeable document)&lt;br /&gt;
* [[rfc-2119|RFC 2119]]&lt;br /&gt;
&lt;br /&gt;
=== Informative References ===&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
* [[hcard-history|hCard history]]&lt;br /&gt;
** [http://wiki.oreillynet.com/foocamp04/index.cgi?SimpleSemanticFormats FOO Camp 2004 Simple Semantic Formats presentation, 2004-09-10]&lt;br /&gt;
** [http://tantek.com/log/2004/09.html#hcard hCard term introduced and defined on the Web, 2004-09-30]&lt;br /&gt;
** Contributed from http://developers.technorati.com/wiki/hCard 2005-06-20&lt;br /&gt;
* [http://www.dante.net/np/ds/osi/9594-6-X.520.A4.ps X.520 in Postscript] ([http://72.14.253.104/search?q=cache:FjqzsFu4h20J:www.dante.net/np/ds/osi/9594-6-X.520.A4.ps HTMLization courtesy of Google Cache]) - vCard refers to ROLE as being &amp;quot;based on the X.520 Business Category explanatory attribute&amp;quot;.&lt;br /&gt;
* [http://www.w3.org/2002/12/cal/rfc2426 HTML reformatted version of RFC2426]&lt;br /&gt;
* [http://w3.org/TR/REC-CSS1 CSS1]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml11 XHTML 1.1]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/E.123 Wikipedia summary of ITU-T Recommendation E.123] - for &amp;quot;TEL&amp;quot; values.&lt;br /&gt;
* [http://www.imc.org/pdi/ Internet Mail Consortium Personal Data Interchange vCard and vCalendar]&lt;br /&gt;
* [[iso-8601|ISO8601]]&lt;br /&gt;
&lt;br /&gt;
==== Specifications That Use hCard ====&lt;br /&gt;
* [[adr]]&lt;br /&gt;
* [[geo]]&lt;br /&gt;
* [[hcalendar|hCalendar]]&lt;br /&gt;
* [[hreview|hReview]]&lt;br /&gt;
&lt;br /&gt;
==== Similar Work ====&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
* [http://www.intertwingly.net/wiki/pie/PaceBetterPersonElement Atom PaceBetterPersonElement]&lt;br /&gt;
* [http://www.jabber.org/jeps/jep-0054.html JEP-0054: vcard-temp]&lt;br /&gt;
&lt;br /&gt;
== Inspiration and Acknowledgments ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
Thanks to: my good friend [http://vadim.com/ Vadim] who introduced me to vCard ''many'' years ago, and if I'd only paid more attention then, perhaps I could have helped a lot of people avoid wasting a lot of time reinventing various standards wheels.&lt;br /&gt;
&lt;br /&gt;
== Notes on derivation from vCard ==&lt;br /&gt;
This section is ''informative''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Semantic_XHTML_Design_Principles&amp;quot;&amp;gt;See: [[hcard-design-methodology]].&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== More Semantic Equivalents ===&lt;br /&gt;
For some properties there are HTML elements which better match and convey their semantics.  The following properties SHOULD be encoded with the following HTML:&lt;br /&gt;
* &amp;lt;code&amp;gt;URL&amp;lt;/code&amp;gt; in vCard becomes  &amp;lt;code&amp;gt;&amp;lt;a class=&amp;quot;url&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; inside the element with &amp;lt;code&amp;gt;class=&amp;quot;vcard&amp;quot;&amp;lt;/code&amp;gt; in hCard.&lt;br /&gt;
* Similarly, &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; in vCard becomes &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;PHOTO&amp;lt;/code&amp;gt; in vCard becomes &amp;lt;code&amp;gt;&amp;lt;img class=&amp;quot;photo&amp;quot; src=&amp;quot;...&amp;quot; alt=&amp;quot;Photo of ...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;object class=&amp;quot;photo&amp;quot; data=&amp;quot;...&amp;quot; type=&amp;quot;...&amp;quot;&amp;gt;Photo of ...&amp;lt;/object&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;UID&amp;lt;/code&amp;gt; in vCard simply becomes another semantic applied to a specific URL (or EMAIL) for an hCard.&lt;br /&gt;
&lt;br /&gt;
=== Singular and Plural derivations ===&lt;br /&gt;
The [[hcard#Singular_vs._Plural_Properties|lists of singular and plural properties]] have been derived by analyzing the semantics of the individual properties in vCard RFC2426 and determining logically that they MUST be singular per their semantics.  See [[hcard-singular-properties]] for explanations.&lt;br /&gt;
&lt;br /&gt;
==== Plural Properties Singularized ====&lt;br /&gt;
Since plural property names become their singular equivalents, even if the original plural property permitted only a single value with multiple components, those multiple components are represented each with their own singularly named property and the the property is effectively multivalued and subject to the above treatment of multivalued properties.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
{{hcard-related-pages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Specifications]]&lt;br /&gt;
[[Category:hCard]]&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
Read the hCard specification in additional &amp;lt;span id=&amp;quot;languages&amp;quot;&amp;gt;languages&amp;lt;/span&amp;gt;:&lt;br /&gt;
* [[hcard-fr|français]]&lt;br /&gt;
* [[hcard-ru|Русский]]&lt;br /&gt;
* [[hcard-ja|日本語]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=User:BenWard/drafts/hcard&amp;diff=41568</id>
		<title>User:BenWard/drafts/hcard</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=User:BenWard/drafts/hcard&amp;diff=41568"/>
		<updated>2009-12-26T22:05:25Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Copied hCard Spec 2009-12-26 as a base&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;hCard 1.0 — BenWard Edition&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dfn&amp;gt;hCard&amp;lt;/dfn&amp;gt; is a simple, open, distributed format for representing people, companies, organizations, and places, using a 1:1 representation of vCard ([[rfc-2426|RFC2426]]) properties and values in [[semantic-xhtml|semantic HTML or XHTML]]. hCard is one of several open [[microformats|microformat]] standards suitable for embedding in HTML, XHTML, Atom, RSS, and arbitrary XML.&lt;br /&gt;
&lt;br /&gt;
'''Want to get started with writing an [[hcard|hCard]]?'''  Use the [http://microformats.org/code/hcard/creator hCard creator] to write up some contact information and publish it, or follow the [[hcard-authoring|hCard authoring tips]] to add hCard markup to your current contact page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
; &amp;lt;span class=&amp;quot;role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt; &lt;br /&gt;
: &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://tantek.com/&amp;lt;/span&amp;gt;, and before at [http://technorati.com Technorati, Inc.], and at [http://microsoft.com/ Microsoft Corporation])&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
; Authors: [http://tantek.com/ Tantek Çelik] (affiliations above)&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Brian|Brian Suda]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://suda.co.uk/&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Acknowledgments: See [[hcard#Inspiration_and_Acknowledgments|acknowledgments]].&lt;br /&gt;
&lt;br /&gt;
[[hcard#Copyright|copyright]] and [[hcard#Patents|patents]] statements apply.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
hCard 1.0 is a microformats.org specification. Public discussion on hCard takes place on [[hcard-feedback]], the #microformats [[irc]] channel on irc.freenode.net, and [http://microformats.org/discuss/mail/microformats-discuss/ microformats-discuss mailing list].&lt;br /&gt;
&lt;br /&gt;
=== Available languages ===&lt;br /&gt;
The English version of this specification is the only normative version. For translations of this document see the [[#translations]] section.&lt;br /&gt;
&lt;br /&gt;
=== Errata and Updates ===&lt;br /&gt;
Known errors and issues in this specification are corrected in [[hcard-issues-resolved|resolved]] and [[hcard-issues-closed|closed]] issues. Please check there before reporting [[hcard-issues|issues]].&lt;br /&gt;
&lt;br /&gt;
The hCard 1.0.1 update is currently under development and incorporates known  errata corrections as well as the [[value-class-pattern]].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The vCard standard ([[rfc-2426|RFC2426]]), has been broadly interoperably implemented (e.g. Apple's &amp;quot;Address Book&amp;quot; application built into MacOSX).&lt;br /&gt;
&lt;br /&gt;
In addition, many bloggers identify themselves by name and discuss their friends and family.  With just a tad bit of structure, bloggers can discuss people in their blog(s) in such a way that spiders and other aggregators can retrieve this information, automatically convert them to vCards, and use them in any vCard application or service.&lt;br /&gt;
&lt;br /&gt;
This specification introduces the '''hCard''' format, which uses a 1:1 representation of the properties and values of the aforementioned vCard standard, in semantic HTML.  Bloggers can both embed hCards directly in their web pages, and style them with CSS to make them appear as desired.  In addition, hCard enables applications to retrieve information directly from web pages without having to reference a separate file.&lt;br /&gt;
&lt;br /&gt;
Use the [http://microformats.org/code/hcard/creator hCard creator] and copy the HTML code it generates to your blog or website to publish your contact info.&lt;br /&gt;
&lt;br /&gt;
{{rfc-2119-intro}}&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
=== In General ===&lt;br /&gt;
The vCard standard ([[rfc-2426|RFC2426]]) forms the basis of hCard.&lt;br /&gt;
&lt;br /&gt;
The basic format of hCard is to use vCard object/property names in lower-case for class names, and to map the nesting of vCard objects directly into nested HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== Root Class Name ===&lt;br /&gt;
The root class name for an hCard is &amp;quot;vcard&amp;quot;.  An element with a class name of &amp;quot;vcard&amp;quot; is itself called an ''hCard''.&lt;br /&gt;
&lt;br /&gt;
=== Properties and Sub-properties ===&lt;br /&gt;
The properties of an hCard are represented by elements inside the hCard.  Elements with class names of the listed properties represent the values of those properties.  Some properties have sub-properties, and those are represented by elements inside the elements for properties.&lt;br /&gt;
&lt;br /&gt;
=== Property List ===&lt;br /&gt;
hCard properties (sub-properties in parentheses like this)&lt;br /&gt;
&lt;br /&gt;
'''Required:'''&lt;br /&gt;
* '''fn'''&lt;br /&gt;
* &amp;lt;span id=&amp;quot;property-list-n&amp;quot;&amp;gt;'''n'''&amp;lt;sup style=&amp;quot;font-size:smaller&amp;quot;&amp;gt;[[#note1|1]]&amp;lt;/sup&amp;gt; (family-name, given-name, additional-name, honorific-prefix, honorific-suffix)&amp;lt;/span&amp;gt;&lt;br /&gt;
Optional:&lt;br /&gt;
* adr (post-office-box, extended-address, street-address, locality, region, postal-code, country-name, type, value)&lt;br /&gt;
* agent&lt;br /&gt;
* bday&lt;br /&gt;
* category&lt;br /&gt;
* class&lt;br /&gt;
* email (type, value)&lt;br /&gt;
* geo (latitude, longitude)&lt;br /&gt;
* key&lt;br /&gt;
* label&lt;br /&gt;
* logo&lt;br /&gt;
* mailer&lt;br /&gt;
* nickname&lt;br /&gt;
* note&lt;br /&gt;
* org (organization-name, organization-unit)&lt;br /&gt;
* photo&lt;br /&gt;
* rev&lt;br /&gt;
* role&lt;br /&gt;
* sort-string&lt;br /&gt;
* sound&lt;br /&gt;
* &amp;lt;span id=&amp;quot;property-list-tel&amp;quot;&amp;gt;tel&amp;lt;sup style=&amp;quot;font-size:smaller&amp;quot;&amp;gt;[[#note2|2]]&amp;lt;/sup&amp;gt; (type, value)&amp;lt;/span&amp;gt;&lt;br /&gt;
* title&lt;br /&gt;
* tz&lt;br /&gt;
* uid&lt;br /&gt;
* url&lt;br /&gt;
&lt;br /&gt;
=== Property Notes ===&lt;br /&gt;
&amp;lt;span id=&amp;quot;note1&amp;quot;&amp;gt;[[#property-list-n|1. ^]]&amp;lt;/span&amp;gt;: The 'n' property is {{optional}} if any [[hcard#Implied_.22n.22_Optimization|implied 'n' optimization rules]] are in effect.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;note2&amp;quot;&amp;gt;[[#property-list-tel|2. ^]]&amp;lt;/span&amp;gt;: tel - Authors {{may}} follow the [http://en.wikipedia.org/wiki/E.123 E.123] standard for writing values of telephone numbers. Letter values (e.g. +1-555-FORMATS) {{must}} be converted to numbers. Use an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; to display letters and provide a numerical value simultaneously, e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;abbr title=&amp;quot;+15553676287&amp;quot;&amp;gt;+1-555-FORMATS&amp;lt;/abbr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Singular vs. Plural Properties ===&lt;br /&gt;
Singular properties: 'fn', 'n', 'bday', 'tz', 'geo', 'sort-string', 'uid', 'class', 'rev'.  For properties which are singular, the first descendant element with that class {{should}} take effect, any others being ignored.&lt;br /&gt;
&lt;br /&gt;
All other properties {{may}} be plural. Each class instance of such properties creates a new instance of that property.&lt;br /&gt;
&lt;br /&gt;
=== Human vs. Machine readable ===&lt;br /&gt;
The human visible text contents of an element for a property represents the value of that property, with a few exceptions:&lt;br /&gt;
&lt;br /&gt;
If an &amp;lt;code&amp;gt;&amp;amp;lt;abbr&amp;amp;gt;&amp;lt;/code&amp;gt; element is used for a property, then the '&amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt;' attribute (if present) of the &amp;lt;code&amp;gt;&amp;amp;lt;abbr&amp;gt;&amp;lt;/code&amp;gt; element is the value of the property, instead of the contents of the element, which instead provide a more human presentable version of the value.&lt;br /&gt;
&lt;br /&gt;
If an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element is used for one or more properties, it {{must}} be treated as follows:&lt;br /&gt;
# For the 'photo' property and any other property that takes a URL as its value, the &amp;lt;code&amp;gt;href=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; attribute provides the property value.&lt;br /&gt;
# For other properties, the element's content is the value of the property.&lt;br /&gt;
&lt;br /&gt;
If an &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;amp;gt;&amp;lt;/code&amp;gt; element is used for one or more properties, it {{must}} be treated as follows:&lt;br /&gt;
# For the 'photo' property and any other property that takes a URL as its value, the &amp;lt;code&amp;gt;src=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; attribute provides the property value.&lt;br /&gt;
# For other properties, the &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;gt;&amp;lt;/code&amp;gt; element's '&amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt;' attribute is the value of the property.&lt;br /&gt;
&lt;br /&gt;
If an &amp;lt;code&amp;gt;&amp;amp;lt;object&amp;amp;gt;&amp;lt;/code&amp;gt; element is used for one or more properties, it {{must}} be treated as follows:&lt;br /&gt;
# For the 'photo' property and any other property that takes a URL as its value, the &amp;lt;code&amp;gt;data=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; attribute provides the property value.&lt;br /&gt;
# For other properties, the element's content is the value of the property.&lt;br /&gt;
&lt;br /&gt;
=== Value excerpting ===&lt;br /&gt;
Sometimes only part of an element which is the equivalent for a property is used for the value of the property.  This typically occurs when a property has a subtype, like 'tel'. For this purpose, the special class name &amp;quot;&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;&amp;quot; is used to excerpt out the subset of the element that is the value of the property. E.g. here is an hCard fragment for marking up a home phone number:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vCard:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
TEL;TYPE=HOME:+1.415.555.1212&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCard:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;home&amp;lt;/span&amp;gt;:&lt;br /&gt;
 &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This hCard fragment could be displayed as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: thin dashed black; width: 95%; padding: .5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;home&amp;lt;/span&amp;gt;:&lt;br /&gt;
&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- note for Tantek: review/edit property casing from here on --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Property Exceptions ===&lt;br /&gt;
vCard has several properties which either do not make sense on, or are already implied within the context of a web page.  This section explains what to (not) do with them.&lt;br /&gt;
&lt;br /&gt;
# vCard's '''NAME''', '''PROFILE''', '''SOURCE''', '''PRODID''', '''VERSION''' properties are defined in Sections 2.1.2, 2.1.3, 2.1.4, 3.6.3, 3.6.9 of [[rfc-2426|RFC2426]].  Content publishers {{must-not}} use these properties in their hCards, and as such, hCard consumers/parsers {{must}} IGNORE these properties if they are found within an hCard. Instead. hCard to vCard converters {{should}} use the title of the page where the hCard is found (e.g. the &amp;lt;code&amp;gt;&amp;lt;title&amp;gt;&amp;lt;/code&amp;gt; element in HTML documents) to construct the NAME property, {{may}} output a PROFILE value of &amp;quot;&amp;lt;code&amp;gt;VCARD&amp;lt;/code&amp;gt;&amp;quot; per [[rfc-2426|RFC2426]], {{should}} use the URL of the page where the hCard is found to construct the SOURCE property (e.g. perhaps as a parameter to a URL/service that converts hCards to vCards), for an output vCard stream (e.g. a .vcf file). Only services/applications that output actual vCards should write the PRODID property, with the product identifier for said service/application. Similarly, only such services/applications should write the VERSION property, with the value &amp;quot;3.0&amp;quot; (without quotes) per [[rfc-2426|RFC2426]] Section 3.6.9.&lt;br /&gt;
&lt;br /&gt;
=== Organization Contact Info ===&lt;br /&gt;
If the &amp;quot;FN&amp;quot; and &amp;quot;ORG&amp;quot; (organization) properties have the exact same value (typically because they are set on the same element, e.g. class=&amp;quot;fn org&amp;quot;), then the hCard represents contact information for a company, organization or place and {{should}} be treated as such. In this case the author also {{must-not}} set the &amp;quot;N&amp;quot; property, or set it (and any sub-properties) explicitly to the empty string &amp;quot;&amp;quot;. Thus parsers {{should}} handle the missing &amp;quot;N&amp;quot; property, in this case by implying empty values for all the &amp;quot;N&amp;quot; sub-properties.&lt;br /&gt;
&lt;br /&gt;
=== Implied &amp;quot;n&amp;quot; Optimization ===&lt;br /&gt;
Although vCard requires that the &amp;quot;N&amp;quot; property be present, the authors of the vCard specification ([[rfc-2426|RFC2426]]) themselves do not include &amp;quot;N&amp;quot; properties in their vCards near the end of the spec (p.38).  This apparent contradiction can be resolved by simply allowing the &amp;quot;FN&amp;quot; property to imply &amp;quot;N&amp;quot; property values in typical cases provided in the spec. We do so explicitly in hCard.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;FN&amp;quot; and &amp;quot;ORG&amp;quot; are not the same (see previous section), and the value of the &amp;quot;FN&amp;quot; property is exactly two words (separated by whitespace), and there is no explicit &amp;quot;N&amp;quot; property, then the &amp;quot;N&amp;quot; property is inferred from the &amp;quot;FN&amp;quot; property.  For &amp;quot;FN&amp;quot;s with either one word see below, and for three or more, the author {{must}} explicitly markup the &amp;quot;N&amp;quot;, except for the organization contact info case, [http://microformats.org/wiki/hcard#Organization_Contact_Info see above] for that.&lt;br /&gt;
&lt;br /&gt;
# The content of &amp;quot;FN&amp;quot; is broken into two &amp;quot;words&amp;quot; separated by whitespace.&lt;br /&gt;
# The ''first'' word of the &amp;quot;FN&amp;quot; is interpreted as the &amp;quot;given-name&amp;quot; for the &amp;quot;N&amp;quot; property.&lt;br /&gt;
# The ''second/last'' word of the &amp;quot;FN&amp;quot; is interpreted as the &amp;quot;family-name&amp;quot; for the &amp;quot;N&amp;quot; property.&lt;br /&gt;
# Exception: If the first word ends in a &amp;quot;,&amp;quot; comma OR if the second word is a single character (optionally followed by a period &amp;quot;.&amp;quot;), then the first word (minus the comma at the end if any) is interpreted as the &amp;quot;family-name&amp;quot; and the second word is interpreted as the &amp;quot;given-name&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This allows simplification in the typical case of people stating:&lt;br /&gt;
* given-name (space) family-name&lt;br /&gt;
* family-name (comma) given-name&lt;br /&gt;
* family-name (comma) given-name-first-initial&lt;br /&gt;
* family-name (space) given-name-first-initial (optional period)&lt;br /&gt;
&lt;br /&gt;
=== Implied &amp;quot;nickname&amp;quot; Optimization ===&lt;br /&gt;
Due to the prevalence of the use of nicknames/handles/usernames in actual content published on the Web (e.g. authors of [[hReview|reviews]]), hCard also has an implied &amp;quot;nickname&amp;quot; optimization to handle this.&lt;br /&gt;
&lt;br /&gt;
Similar to the implied &amp;quot;n&amp;quot; optimization, if &amp;quot;FN&amp;quot; and &amp;quot;ORG&amp;quot; are not the same, and the value of the &amp;quot;FN&amp;quot; property is exactly one word, and there is no explicit &amp;quot;N&amp;quot; property, then:&lt;br /&gt;
&lt;br /&gt;
# The content of the &amp;quot;FN&amp;quot; {{must}} be treated as a &amp;quot;nickname&amp;quot; property value.&lt;br /&gt;
# Parsers {{should}} handle the missing &amp;quot;N&amp;quot; property by implying empty values for all the &amp;quot;N&amp;quot; sub-properties.&lt;br /&gt;
&lt;br /&gt;
Though parsers {{must}} follow the implied nickname optimization, publishers {{should}} explicitly indicate the &amp;quot;nickname&amp;quot; even in this case, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;fn nickname&amp;quot;&amp;gt;daveman692&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hCard {{may}} have additional explicit &amp;quot;nickname&amp;quot; property values in addition to the implied nickname.&lt;br /&gt;
&lt;br /&gt;
=== Implied &amp;quot;organization-name&amp;quot; Optimization ===&lt;br /&gt;
The &amp;quot;ORG&amp;quot; property has two subproperties, organization-name and organization-unit. Very often authors only publish the organization-name.  Thus if an &amp;quot;ORG&amp;quot; property has no &amp;quot;organization-name&amp;quot; inside it, then its entire contents {{must}} be treated as the &amp;quot;organization-name&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Tags as Categories ===&lt;br /&gt;
Categories in hCard {{may}} be represented by tags with [[rel-tag]]. When a category property is a rel-tag, the tag (as defined by rel-tag) is used for that category.&lt;br /&gt;
&lt;br /&gt;
=== type subproperty values ===&lt;br /&gt;
The 'type' subproperty in particular takes different values depending on which property it is a subproperty of.  These 'type' subproperty values are case-INSENSITIVE, meaning &amp;quot;Home&amp;quot; is the same as &amp;quot;home&amp;quot;, as well as multivalued, e.g. a tel can be home and preferred:&lt;br /&gt;
&lt;br /&gt;
vCard:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
TEL;TYPE=HOME,PREF:+1.415.555.1212&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCard:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;pref&amp;lt;/span&amp;gt;erred):&lt;br /&gt;
 &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This could be displayed as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: thin dashed black; width: 95%; padding: .5em 1em; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;pref&amp;lt;/span&amp;gt;erred):&lt;br /&gt;
&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== type with unspecified value ====&lt;br /&gt;
When the type of a property is specified, and there is no explicit value specified, then everything in the property except for the type is considered the value of the property. E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt; +1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is equivalent to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt; +1.415.555.1212&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And thus the type is &amp;quot;home&amp;quot; and the value is &amp;quot;+1.415.555.1212&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== adr tel email types ====&lt;br /&gt;
The following lists are ''informative''. See [[rfc-2426|RFC2426]] sections 3.2.1 ADR, 3.3.1 TEL, and 3.3.2 EMAIL respectively for normative type values.  They are repeated here for convenience. Default type subproperty value(s) is(are) first in each list and indicated in ALL CAPS.  types may be multivalued.&lt;br /&gt;
&lt;br /&gt;
* adr type: INTL, POSTAL, PARCEL, WORK, dom, home, pref&lt;br /&gt;
* tel type: VOICE, home, msg, work, pref, fax, cell, video, pager, bbs, modem, [http://flickr.com/photos/tags/carcellphone/ car], isdn, pcs&lt;br /&gt;
* email type: INTERNET, x400, pref&lt;br /&gt;
&lt;br /&gt;
=== Profile ===&lt;br /&gt;
The hCard &amp;lt;span id=&amp;quot;XMDP_Profile&amp;quot;&amp;gt;XMDP profile&amp;lt;/span&amp;gt; is at http://microformats.org/profile/hcard&lt;br /&gt;
&lt;br /&gt;
Content that uses hCard {{should}} reference this profile, e.g.&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;head profile=&amp;quot;http://microformats.org/profile/hcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;profile&amp;quot; href=&amp;quot;http://microformats.org/profile/hcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
This content uses &amp;lt;a rel=&amp;quot;profile&amp;quot; href=&amp;quot;http://microformats.org/profile/hcard&amp;quot;&amp;gt;hCard&amp;lt;/a&amp;gt;.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Content may combine the above methods as well.&lt;br /&gt;
&lt;br /&gt;
=== Parsing Details ===&lt;br /&gt;
&lt;br /&gt;
See [[hcard-parsing|hCard parsing]].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
This section is informative.&lt;br /&gt;
&lt;br /&gt;
=== Sample vCard ===&lt;br /&gt;
&lt;br /&gt;
Here is a sample vCard:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
BEGIN:VCARD&lt;br /&gt;
VERSION:3.0&lt;br /&gt;
N:Çelik;Tantek&lt;br /&gt;
FN:Tantek Çelik&lt;br /&gt;
URL:http://tantek.com/&lt;br /&gt;
END:VCARD&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and an equivalent in hCard with various elements optimized appropriately.  See [[hcard-example1-steps| hCard Example 1]] for the derivation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;url fn&amp;quot; href=&amp;quot;http://tantek.com/&amp;quot;&amp;gt;Tantek Çelik&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This hCard might be displayed as:&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: thin dashed black; width: 95%; padding: .5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
[http://tantek.com/ Tantek Çelik]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The version information is unnecessary in hCard markup directly since the version will be defined by the profile of hCard that is used/referred to in the 'profile' attribute of the &amp;lt;head&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
===Live example===&lt;br /&gt;
&lt;br /&gt;
Here is [http://www.commerce.net/ Commercenet]'s contact details, as a live hCard which will be detected, on this page, by microformat parsing tools:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;fn org&amp;quot;&amp;gt;'''CommerceNet'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;url&amp;quot;&amp;gt;'''&amp;lt;nowiki&amp;gt;http://www.commerce.net/&amp;lt;/nowiki&amp;gt;'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;'''&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Work&amp;lt;/span&amp;gt;:'''&lt;br /&gt;
&amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;'''169 University Avenue'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;'''Palo Alto'''&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;region&amp;quot;&amp;gt;'''CA'''&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;'''94301'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;country-name&amp;quot;&amp;gt;'''USA'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;'''&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Work&amp;lt;/span&amp;gt; +1-650-289-4040'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;'''&amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Fax&amp;lt;/span&amp;gt; +1-650-289-4041'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;'''Email &amp;lt;span class=&amp;quot;email&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;info@commerce.net&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The mark-up, emboldening omitted for clarity, with the following semantic improvements:&lt;br /&gt;
* &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; to expand abbreviations&lt;br /&gt;
* hyperlinking the org name with the url&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;fn org url&amp;quot; href=&amp;quot;http://www.commerce.net/&amp;quot;&amp;gt;CommerceNet&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Work&amp;lt;/span&amp;gt;:&lt;br /&gt;
    &amp;lt;div class=&amp;quot;street-address&amp;quot;&amp;gt;169 University Avenue&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;Palo Alto&amp;lt;/span&amp;gt;,  &lt;br /&gt;
    &amp;lt;abbr class=&amp;quot;region&amp;quot; title=&amp;quot;California&amp;quot;&amp;gt;CA&amp;lt;/abbr&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;94301&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;country-name&amp;quot;&amp;gt;USA&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Work&amp;lt;/span&amp;gt; +1-650-289-4040&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Fax&amp;lt;/span&amp;gt; +1-650-289-4041&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;Email: &lt;br /&gt;
   &amp;lt;span class=&amp;quot;email&amp;quot;&amp;gt;info@commerce.net&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== More Examples ===&lt;br /&gt;
See [[hcard-examples|hCard examples]] for more examples, including all examples from vCard [[rfc-2426|RFC2426]] converted into hCard.&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
This section is '''informative'''. The number of hCard examples in the wild has expanded far beyond the capacity of being kept inline in this specification. They have been moved to a [[hcard-examples-in-wild|separate page]].&lt;br /&gt;
&lt;br /&gt;
See [[hcard-examples-in-wild|hCard Examples in the wild]].&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
This section is '''informative'''. The number of hCard implementations has also expanded beyond the capacity of keeping them inline. They have been moved to a [[hcard-implementations|separate page]].&lt;br /&gt;
&lt;br /&gt;
See [[hcard-implementations|hCard Implementations]].&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
This section is &amp;lt;strong&amp;gt;informative&amp;lt;/strong&amp;gt;. For &amp;lt;span id=&amp;quot;Further_Reading&amp;quot;&amp;gt;further reading&amp;lt;/span&amp;gt; on hCard see [[hcard-articles]].&lt;br /&gt;
&lt;br /&gt;
==Buttons==&lt;br /&gt;
You can use these buttons on pages with hCards. See [[buttons#hCard]] for any recent additions.&lt;br /&gt;
&lt;br /&gt;
* http://www.crowley.nl/images/hcard.png (mirror: http://www.davidjanes.com/images/mf_hcard.png)&lt;br /&gt;
* http://rbach.priv.at/2006/buttons/hcard.png&lt;br /&gt;
* http://www.boogdesign.com/images/buttons/microformat_hcard.png&lt;br /&gt;
* CSS-powered button, as evidenced at [http://re-run.com/about/microformat-badges microformat badges @ re-run]&lt;br /&gt;
&lt;br /&gt;
== Copyright ==&lt;br /&gt;
Per the public domain release on the authors' user pages ([[User:Tantek|Tantek Çelik]], [[User:Brian|Brian Suda]]) this specification is released into the public domain.&lt;br /&gt;
&lt;br /&gt;
{{MicroFormatPublicDomainContributionStatement}}&lt;br /&gt;
&lt;br /&gt;
== Patents ==&lt;br /&gt;
{{MicroFormatPatentStatement}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Normative References ===&lt;br /&gt;
* [http://www.w3.org/TR/2002/REC-xhtml1-20020801/ XHTML 1.0 SE]&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc2426.txt vCard RFC2426]&lt;br /&gt;
* [http://www.itu.int/rec/T-REC-E.123-200102-I/en ITU recommendation E.123] format of telephone numbers (chargeable document)&lt;br /&gt;
* [[rfc-2119|RFC 2119]]&lt;br /&gt;
&lt;br /&gt;
=== Informative References ===&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
* [[hcard-history|hCard history]]&lt;br /&gt;
** [http://wiki.oreillynet.com/foocamp04/index.cgi?SimpleSemanticFormats FOO Camp 2004 Simple Semantic Formats presentation, 2004-09-10]&lt;br /&gt;
** [http://tantek.com/log/2004/09.html#hcard hCard term introduced and defined on the Web, 2004-09-30]&lt;br /&gt;
** Contributed from http://developers.technorati.com/wiki/hCard 2005-06-20&lt;br /&gt;
* [http://www.dante.net/np/ds/osi/9594-6-X.520.A4.ps X.520 in Postscript] ([http://72.14.253.104/search?q=cache:FjqzsFu4h20J:www.dante.net/np/ds/osi/9594-6-X.520.A4.ps HTMLization courtesy of Google Cache]) - vCard refers to ROLE as being &amp;quot;based on the X.520 Business Category explanatory attribute&amp;quot;.&lt;br /&gt;
* [http://www.w3.org/2002/12/cal/rfc2426 HTML reformatted version of RFC2426]&lt;br /&gt;
* [http://w3.org/TR/REC-CSS1 CSS1]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml11 XHTML 1.1]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/E.123 Wikipedia summary of ITU-T Recommendation E.123] - for &amp;quot;TEL&amp;quot; values.&lt;br /&gt;
* [http://www.imc.org/pdi/ Internet Mail Consortium Personal Data Interchange vCard and vCalendar]&lt;br /&gt;
* [[iso-8601|ISO8601]]&lt;br /&gt;
&lt;br /&gt;
==== Specifications That Use hCard ====&lt;br /&gt;
* [[adr]]&lt;br /&gt;
* [[geo]]&lt;br /&gt;
* [[hcalendar|hCalendar]]&lt;br /&gt;
* [[hreview|hReview]]&lt;br /&gt;
&lt;br /&gt;
==== Similar Work ====&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
* [http://www.intertwingly.net/wiki/pie/PaceBetterPersonElement Atom PaceBetterPersonElement]&lt;br /&gt;
* [http://www.jabber.org/jeps/jep-0054.html JEP-0054: vcard-temp]&lt;br /&gt;
&lt;br /&gt;
== Inspiration and Acknowledgments ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
Thanks to: my good friend [http://vadim.com/ Vadim] who introduced me to vCard ''many'' years ago, and if I'd only paid more attention then, perhaps I could have helped a lot of people avoid wasting a lot of time reinventing various standards wheels.&lt;br /&gt;
&lt;br /&gt;
== Notes on derivation from vCard ==&lt;br /&gt;
This section is ''informative''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Semantic_XHTML_Design_Principles&amp;quot;&amp;gt;See: [[hcard-design-methodology]].&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== More Semantic Equivalents ===&lt;br /&gt;
For some properties there are HTML elements which better match and convey their semantics.  The following properties SHOULD be encoded with the following HTML:&lt;br /&gt;
* &amp;lt;code&amp;gt;URL&amp;lt;/code&amp;gt; in vCard becomes  &amp;lt;code&amp;gt;&amp;lt;a class=&amp;quot;url&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; inside the element with &amp;lt;code&amp;gt;class=&amp;quot;vcard&amp;quot;&amp;lt;/code&amp;gt; in hCard.&lt;br /&gt;
* Similarly, &amp;lt;code&amp;gt;EMAIL&amp;lt;/code&amp;gt; in vCard becomes &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;PHOTO&amp;lt;/code&amp;gt; in vCard becomes &amp;lt;code&amp;gt;&amp;lt;img class=&amp;quot;photo&amp;quot; src=&amp;quot;...&amp;quot; alt=&amp;quot;Photo of ...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;object class=&amp;quot;photo&amp;quot; data=&amp;quot;...&amp;quot; type=&amp;quot;...&amp;quot;&amp;gt;Photo of ...&amp;lt;/object&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;UID&amp;lt;/code&amp;gt; in vCard simply becomes another semantic applied to a specific URL (or EMAIL) for an hCard.&lt;br /&gt;
&lt;br /&gt;
=== Singular and Plural derivations ===&lt;br /&gt;
The [[hcard#Singular_vs._Plural_Properties|lists of singular and plural properties]] have been derived by analyzing the semantics of the individual properties in vCard RFC2426 and determining logically that they MUST be singular per their semantics.  See [[hcard-singular-properties]] for explanations.&lt;br /&gt;
&lt;br /&gt;
==== Plural Properties Singularized ====&lt;br /&gt;
Since plural property names become their singular equivalents, even if the original plural property permitted only a single value with multiple components, those multiple components are represented each with their own singularly named property and the the property is effectively multivalued and subject to the above treatment of multivalued properties.&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
{{hcard-related-pages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Specifications]]&lt;br /&gt;
[[Category:hCard]]&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
Read the hCard specification in additional &amp;lt;span id=&amp;quot;languages&amp;quot;&amp;gt;languages&amp;lt;/span&amp;gt;:&lt;br /&gt;
* [[hcard-fr|français]]&lt;br /&gt;
* [[hcard-ru|Русский]]&lt;br /&gt;
* [[hcard-ja|日本語]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=Main_Page&amp;diff=41511</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=Main_Page&amp;diff=41511"/>
		<updated>2009-12-09T06:46:19Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Reverted edits by Cormierl20 (Talk) to last version by Tantek&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Welcome to the microformats wiki!&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
Please start with the [[introduction]] page and read [[how-to-play]] before making any edits.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
This wiki is the central resource of the microformats community. You'll find current versions of published microformat specifications, specification drafts and publishing patterns. The wiki also hosts development resources, such as brainstorming pages for new formats and issue tracking pages for all current and in-development microformats.&lt;br /&gt;
&lt;br /&gt;
== Get Started==&lt;br /&gt;
To get started with microformats:&lt;br /&gt;
&lt;br /&gt;
* First, be familiar writing your pages and applications with semantically rich, descriptive, ‘[[posh|&amp;lt;abbr title=&amp;quot;Plain Old Semantic HTML&amp;quot;&amp;gt;POSH&amp;lt;/abbr&amp;gt;]]’ &amp;lt;abbr title=&amp;quot;HyperText Mark-up Language&amp;quot;&amp;gt;HTML&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
* Learn about microformats from the [http://microformats.org/about/ about page], [http://microformats.org/ blog], [[press]], [[presentations]], [[books]], [[podcasts]], &amp;amp; [[screencasts]] pages.&lt;br /&gt;
* Take a look at established specifications such as [[hcard|hCard]] and [[hcalendar|hCalendar]], and follow the [[hcard-examples|examples]] to start publishing microformats.&lt;br /&gt;
* Have questions? Read the [[faq|frequently asked questions]] and see the [[glossary]] for terms and definitions. You can also post to the {{MicroformatsMailingList}}.&lt;br /&gt;
* Want to learn more in person? Check out microformats [[events]].&lt;br /&gt;
&lt;br /&gt;
==Definition==&lt;br /&gt;
Microformats are small patterns of HTML to represent commonly published things like [[hcard|people]], [[hcalendar|events]], [[hatom|blog posts]], [[hreview|reviews]] and [[rel-tag|tags]] in web pages.&lt;br /&gt;
&lt;br /&gt;
Microformats enable the publishing of higher fidelity information on the Web; the fastest and simplest way to provide feeds and APIs for the information in your website.&lt;br /&gt;
&lt;br /&gt;
* Read more explanations of [[what-are-microformats|what microformats are]], and [[what-can-you-do-with-microformats|what you can do with them]].&lt;br /&gt;
&lt;br /&gt;
== How to contribute ==&lt;br /&gt;
Do you want to help take microformats to the next level?  You can:&lt;br /&gt;
&lt;br /&gt;
* [[get-started|Get started]] by adding microformats to your website, services, and products.&lt;br /&gt;
* [[advocacy|Advocate]] the use of microformats on other web sites, especially those you use.&lt;br /&gt;
* Write a [[testimonial]].&lt;br /&gt;
* Do something on the [[to-do|to do list]].&lt;br /&gt;
* Join the [[irc|IRC Channel]] and [[mail|mailing lists]] to learn and help answer questions (read the [[mailing-lists#General_guidelines|general guidelines]] before posting).&lt;br /&gt;
* [[Main_Page#microformats_wiki_translations|Translate this microformats wiki into other languages]] to make microformats more accessible to readers of languages around the world.&lt;br /&gt;
* Before proposing any new microformats, make sure your website is [[POSH]], [[get-started|uses existing microformats]], and then read the [[process]].&lt;br /&gt;
&lt;br /&gt;
This wiki has a number of enhancements to assist development and contributions to microformats. Before you start editing, see the [[wiki-2|wiki introduction page]] for instructions.&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
The list of current, stable [[microformats|Microformats]] open standard specifications.&lt;br /&gt;
&lt;br /&gt;
* [[hcalendar|hCalendar]] - [http://microformats.org/code/hcalendar/creator hCalendar creator]&lt;br /&gt;
* [[hcard|hCard]] - [http://microformats.org/code/hcard/creator hCard creator]&lt;br /&gt;
* [[rel-license]]&lt;br /&gt;
* [[rel-nofollow]]&lt;br /&gt;
* [[rel-tag]]&lt;br /&gt;
* [[vote-links|VoteLinks]]&lt;br /&gt;
* [[XFN]] - [http://gmpg.org/xfn/creator XFN creator]&lt;br /&gt;
* [[XMDP]]&lt;br /&gt;
* [[xoxo|XOXO]]&lt;br /&gt;
&lt;br /&gt;
''If you're tempted to try your hand at writing a microformat please read '''[[process|the process]]''' page first!''&lt;br /&gt;
&lt;br /&gt;
== Drafts ==&lt;br /&gt;
Drafts are newer microformats, for which the specifications haven't been completed yet. Drafts are somewhat mature in the development [[process]] (see [[exploratory-discussions]] for additional efforts that are not as far along in the process). The stability of these documents cannot be guaranteed, and implementers should be prepared to keep abreast of future developments and changes. Please watch the wiki pages for updates.&lt;br /&gt;
&lt;br /&gt;
* [[adr|adr]] - for marking up address information&lt;br /&gt;
* [[geo|geo]] - for marking up [http://en.wikipedia.org/wiki/WGS84 WGS84] geographic coordinates (latitude; longitude)&lt;br /&gt;
* [[hatom|hAtom]] - syndicating episodic content (e.g. weblog postings)&lt;br /&gt;
* [[haudio|hAudio]]&lt;br /&gt;
* [[hlisting|hListing]] - open, distributed listings&lt;br /&gt;
* [[hmedia|hMedia]] - A single media publishing format that relates to Images, Video and Audio. &lt;br /&gt;
* [[hnews|hNews]]&lt;br /&gt;
* [[hproduct|hProduct]]&lt;br /&gt;
* [[hrecipe|hRecipe]] - for cooking+baking recipes&lt;br /&gt;
* [[hresume|hResume]] - for publishing resumes and CVs&lt;br /&gt;
* [[hreview|hReview]] - [http://microformats.org/code/hreview/creator hReview creator]&lt;br /&gt;
* [[rel-directory]] - to indicate that the destination of a hyperlink is a directory listing containing an entry for the current page&lt;br /&gt;
* [[rel-enclosure]] - for indicating attachments (e.g. files) to download and cache&lt;br /&gt;
* [[rel-home]] - indicate a hyperlink to the homepage of the site&lt;br /&gt;
* [[rel-payment]] - indicate a payment mechanism&lt;br /&gt;
* [[robots-exclusion|robots exclusion]]&lt;br /&gt;
* [[xfolk|xFolk]]&lt;br /&gt;
&lt;br /&gt;
== Design Patterns ==&lt;br /&gt;
{{design_patterns}} &amp;lt;!-- this can be edited in /wiki/Template:design_patterns --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exploratory Discussions ==&lt;br /&gt;
See: [[exploratory-discussions]] for details of research and analysis of real-world [[examples]], existing formats, and brainstorming of possible new microformats, per the microformats [[process]].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
* [[examples-in-the-wild]]&lt;br /&gt;
* [[implementations]]&lt;br /&gt;
* [[zen-garden]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
See [[resources]].&lt;br /&gt;
&lt;br /&gt;
== User centric development ==&lt;br /&gt;
*[[user-interface]]&lt;br /&gt;
*[[data-portability]]&lt;br /&gt;
*[[social-network-portability]]&lt;br /&gt;
&lt;br /&gt;
== Shared work areas ==&lt;br /&gt;
* [[to-do]]&lt;br /&gt;
* [[templates]]&lt;br /&gt;
* [http://microformats.org/wiki/delete pages for deletion] &amp;lt;!-- keep as external link; removes from &amp;quot;what links here&amp;quot; --&amp;gt;&lt;br /&gt;
* [[Special:Specialpages|&amp;quot;Special&amp;quot; wiki pages]]&lt;br /&gt;
* [[year-in-review]]&lt;br /&gt;
&lt;br /&gt;
== Tools, test cases, additional research ==&lt;br /&gt;
The first place to look for examples, code, and test cases is in the pages for each individual microformat. There are only a few cross-cutting [[tools|tools and services]] that need to process more than one microformat. That section is intended for editors, [[parsers]], [[validators]], test cases, and other information relevant across multiple microformats.&lt;br /&gt;
&lt;br /&gt;
== Microformats wiki translations ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;microformats_wiki_translations_in_other_languages&amp;quot;&amp;gt;You may read and edit microformats articles in many other languages:&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* languages with over 100 articles&lt;br /&gt;
** [[Main_Page-fr|&amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;Français&amp;lt;/span&amp;gt; (French)]] &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;{{UpdateMarker-fr}}&amp;lt;/span&amp;gt;&lt;br /&gt;
* languages with over 10 articles&lt;br /&gt;
** [[Main_Page-pt-br|&amp;lt;span lang=&amp;quot;pt-br&amp;quot;&amp;gt;Português&amp;lt;/span&amp;gt; (Brazilian Portuguese)]]&lt;br /&gt;
** [[Main_Page-ja|&amp;lt;span lang=&amp;quot;ja&amp;quot;&amp;gt;日本語&amp;lt;/span&amp;gt; (Japanese)]]&lt;br /&gt;
** [[Main_Page-ru|&amp;lt;span lang=&amp;quot;ru&amp;quot;&amp;gt;Русский&amp;lt;/span&amp;gt; (Russian)]]&lt;br /&gt;
* languages with over 2 articles&lt;br /&gt;
** [[Main_Page-cs|&amp;lt;span lang=&amp;quot;cs&amp;quot;&amp;gt;Česky&amp;lt;/span&amp;gt; (Czech)]] {{NewMarker}}&lt;br /&gt;
** [[Main_Page-de|&amp;lt;span lang=&amp;quot;de&amp;quot;&amp;gt;Deutsch&amp;lt;/span&amp;gt; (German)]]&lt;br /&gt;
** [[Main_Page-es|&amp;lt;span lang=&amp;quot;es&amp;quot;&amp;gt;Español&amp;lt;/span&amp;gt; (Spanish)]]&lt;br /&gt;
** [[Main_Page-gl|&amp;lt;span lang=&amp;quot;gl&amp;quot;&amp;gt;Galego&amp;lt;/span&amp;gt; (Galician)]] {{NewMarker}}&lt;br /&gt;
** [[Main_Page-pl|&amp;lt;span lang=&amp;quot;pl&amp;quot;&amp;gt;Polski&amp;lt;/span&amp;gt; (Polish)]]&lt;br /&gt;
** [[Main_Page-ro|&amp;lt;span lang=&amp;quot;ro&amp;quot;&amp;gt;Română&amp;lt;/span&amp;gt; (Romanian)]] {{NewMarker}}&lt;br /&gt;
** [[Main_Page-zh|&amp;lt;span lang=&amp;quot;zh&amp;quot;&amp;gt;汉语&amp;lt;/span&amp;gt; (Chinese)]]&lt;br /&gt;
** [[Main_Page-id|&amp;lt;span lang=&amp;quot;id&amp;quot;&amp;gt;Indonesia&amp;lt;/span&amp;gt; (Bahasa Indonesia)]] {{NewMarker}}&lt;br /&gt;
* languages just started&lt;br /&gt;
** [[Main_Page-ar|&amp;lt;span lang=&amp;quot;ar&amp;quot;&amp;gt;العربية&amp;lt;/span&amp;gt; (Arabic)]]&lt;br /&gt;
** [[Main_Page-th|&amp;lt;span lang=&amp;quot;th&amp;quot;&amp;gt;ภาษาไทย&amp;lt;/span&amp;gt; (Thai)]]&lt;br /&gt;
** [[Main_Page-it|&amp;lt;span lang=&amp;quot;it&amp;quot;&amp;gt;Italiano&amp;lt;/span&amp;gt; (Italian)]] {{NewMarker}}&lt;br /&gt;
** [[Main_Page-ko|&amp;lt;span lang=&amp;quot;ko&amp;quot;&amp;gt;한국어&amp;lt;/span&amp;gt; (Korean)]] {{NewMarker}}&lt;br /&gt;
* elsewhere&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Microformat Wikipedia's article on microformats] has been translated into a number of languages.&lt;br /&gt;
&lt;br /&gt;
See also [[other-languages]], and [[how-to-start-new-translation|how-to-start-a-new-translation]].&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=value-dt-test-YYYY-MM-DD--HH-MM&amp;diff=41220</id>
		<title>value-dt-test-YYYY-MM-DD--HH-MM</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=value-dt-test-YYYY-MM-DD--HH-MM&amp;diff=41220"/>
		<updated>2009-11-04T01:59:31Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Asserts */ MediaWiki doesn't allow thead and tbody. Good grief.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;test-fixture&amp;quot;&amp;gt;&lt;br /&gt;
One of several [[value-class-date-time-tests|value class pattern date and time value test cases]]. Marked up with the [[test-fixture]] [[poshformat]].&lt;br /&gt;
&lt;br /&gt;
;author&lt;br /&gt;
:&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== testing ==&lt;br /&gt;
&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;value-dt-test-YYYY-MM-DD--HH-MM&amp;lt;/span&amp;gt; test demonstrate the concatenation of two html elements to create one datetime value:&amp;lt;/span&amp;gt; &lt;br /&gt;
* YYYY-MM-DD&lt;br /&gt;
* HH:MM&lt;br /&gt;
in an &amp;lt;span class=&amp;quot;format&amp;quot;&amp;gt;[[hCalendar]]&amp;lt;/span&amp;gt; event.&lt;br /&gt;
&lt;br /&gt;
== markup pattern ==&lt;br /&gt;
Here is the markup pattern fragment (escaped, and with abstract not real values) that is being tested:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;YYYY-MM-DD&amp;lt;/span&amp;gt; &lt;br /&gt;
 at&lt;br /&gt;
 &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;HH:MM&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly with &amp;lt;code&amp;gt;dtend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== test ==&lt;br /&gt;
[[hCalendar]] test in actual markup on the page (view or edit source to see actual hCalendar markup)&lt;br /&gt;
&amp;lt;div class=&amp;quot;test&amp;quot; id=&amp;quot;uf&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
;When&lt;br /&gt;
:&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
;Where&lt;br /&gt;
:&amp;lt;span class=&amp;quot;location vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn org&amp;quot;&amp;gt;[http://www.yelp.com/biz/b-restaurant-and-bar-san-francisco B Restaurant and Bar]&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;720 Howard Street&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;extended-address&amp;quot;&amp;gt;Yerba Buena Upper Terrace&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;San Francisco&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;region&amp;quot;&amp;gt;CA&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;94103&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;USA&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
;What&lt;br /&gt;
:&amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;microformats.org 4th birthday party!&amp;lt;/span&amp;gt;&lt;br /&gt;
;Web&lt;br /&gt;
:&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://microformats.org/wiki/events/2009-06-26-microformats-4th-bday&amp;lt;/span&amp;gt;&lt;br /&gt;
:&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://upcoming.yahoo.com/event/3010807&amp;lt;/span&amp;gt;&lt;br /&gt;
;Donation&lt;br /&gt;
:Donation requested at the door: sliding scale $5-$20. &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- end vevent --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- end test --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== expected iCalendar output ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;output&amp;quot;&amp;gt;&lt;br /&gt;
Here is the expected &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;iCalendar&amp;lt;/span&amp;gt; output, omitting optional &amp;quot;X-&amp;quot; properties, and implementation specific &amp;quot;PRODID&amp;quot; property:&lt;br /&gt;
&amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
BEGIN:VCALENDAR&lt;br /&gt;
VERSION:2.0&lt;br /&gt;
METHOD:PUBLISH&lt;br /&gt;
CALSCALE:GREGORIAN&lt;br /&gt;
BEGIN:VEVENT&lt;br /&gt;
LOCATION;LANGUAGE=en;CHARSET=utf-8:B Restaurant and Bar\, 720 Howard Street\, Yerba Buena Upper Terrace\, San Francisco\, CA 94103 USA&lt;br /&gt;
SUMMARY;LANGUAGE=en;CHARSET=utf-8:microformats.org 4th birthday party!&lt;br /&gt;
URL:http://microformats.org/wiki/events/2009-06-26-microformats-4th-bday&lt;br /&gt;
DTSTART;VALUE=DATE-TIME:20090626T190000&lt;br /&gt;
DTEND;VALUE=DATE-TIME:20090626T220000&lt;br /&gt;
END:VEVENT&lt;br /&gt;
END:VCALENDAR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- value --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- output --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key lines that an hCalendar to iCalendar converter must match in order to pass this test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
DTSTART;VALUE=DATE-TIME:20090626T190000&lt;br /&gt;
DTEND;VALUE=DATE-TIME:20090626T220000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acceptable variant:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
DTSTART:20090626T190000&lt;br /&gt;
DTEND:20090626T220000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asserts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Testing framework assertions used to test the parsed data against the expected data.&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;caption&amp;gt;A set of programming tests for xUnit testing frameworks&amp;lt;/caption&amp;gt;  &lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Test&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Result&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Comment&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;assert&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;test&amp;quot;&amp;gt;vevent[0].dtstart&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;result&amp;quot;&amp;gt;IsEqualToISODate(&amp;quot;2009-06-26T19:00&amp;quot;)&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;comment&amp;quot;&amp;gt;With the value class pattern the results should contain a time&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;        &lt;br /&gt;
        &amp;lt;tr class=&amp;quot;assert&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;test&amp;quot;&amp;gt;vevent[0].dtend&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;result&amp;quot;&amp;gt;IsEqualToISODate(&amp;quot;2009-06-26T22:00&amp;quot;)&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;comment&amp;quot;&amp;gt;With the value class pattern the results should contain a time&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== results ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;history&amp;quot;&amp;gt;&lt;br /&gt;
* 2009-06-26: Brian Suda's [[X2V]] has been updated (as of X2V 0.9.3) to pass this test! See [http://suda.co.uk/projects/X2V/#H2I Brian Suda's X2V hCalendar-2-iCalendar converter on his site] to re-run and verify this test case for yourself. Or use this converter link to produce results from this test case page directly:&lt;br /&gt;
** http://suda.co.uk/projects/microformats/hcalendar/get-cal.php?uri=http://microformats.org/wiki/value-dt-test-YYYY-MM-DD--HH-MM%23uf&lt;br /&gt;
** verified by [[User:Tantek]] 2009-07-06.&lt;br /&gt;
&lt;br /&gt;
* 2009-11-03: UfXtract has been updated to pass this test. To re-run and verify this test case try:&lt;br /&gt;
** http://ufxtract.com/api/?url=http://microformats.org/wiki/value-dt-test-YYYY-MM-DD--HH-MM&amp;amp;format=hcalendar&amp;amp;output=text&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!--history --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- test-fixture --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== derivation ==&lt;br /&gt;
This test was derived from [[events/2009-06-26-microformats-4th-bday]] which used the [[hCard]] defined [[value-excerption-pattern]] to provide more readable and accessible date and time information.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[value-class-date-time-tests]]&lt;br /&gt;
* [[value-class-pattern]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=value-dt-test-YYYY-MM-DD--HH-MM&amp;diff=41219</id>
		<title>value-dt-test-YYYY-MM-DD--HH-MM</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=value-dt-test-YYYY-MM-DD--HH-MM&amp;diff=41219"/>
		<updated>2009-11-04T01:58:29Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Asserts */ Updated table semantics for assertions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;test-fixture&amp;quot;&amp;gt;&lt;br /&gt;
One of several [[value-class-date-time-tests|value class pattern date and time value test cases]]. Marked up with the [[test-fixture]] [[poshformat]].&lt;br /&gt;
&lt;br /&gt;
;author&lt;br /&gt;
:&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== testing ==&lt;br /&gt;
&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;value-dt-test-YYYY-MM-DD--HH-MM&amp;lt;/span&amp;gt; test demonstrate the concatenation of two html elements to create one datetime value:&amp;lt;/span&amp;gt; &lt;br /&gt;
* YYYY-MM-DD&lt;br /&gt;
* HH:MM&lt;br /&gt;
in an &amp;lt;span class=&amp;quot;format&amp;quot;&amp;gt;[[hCalendar]]&amp;lt;/span&amp;gt; event.&lt;br /&gt;
&lt;br /&gt;
== markup pattern ==&lt;br /&gt;
Here is the markup pattern fragment (escaped, and with abstract not real values) that is being tested:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;YYYY-MM-DD&amp;lt;/span&amp;gt; &lt;br /&gt;
 at&lt;br /&gt;
 &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;HH:MM&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly with &amp;lt;code&amp;gt;dtend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== test ==&lt;br /&gt;
[[hCalendar]] test in actual markup on the page (view or edit source to see actual hCalendar markup)&lt;br /&gt;
&amp;lt;div class=&amp;quot;test&amp;quot; id=&amp;quot;uf&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
;When&lt;br /&gt;
:&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
;Where&lt;br /&gt;
:&amp;lt;span class=&amp;quot;location vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn org&amp;quot;&amp;gt;[http://www.yelp.com/biz/b-restaurant-and-bar-san-francisco B Restaurant and Bar]&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;720 Howard Street&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;extended-address&amp;quot;&amp;gt;Yerba Buena Upper Terrace&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;San Francisco&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;region&amp;quot;&amp;gt;CA&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;94103&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;USA&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
;What&lt;br /&gt;
:&amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;microformats.org 4th birthday party!&amp;lt;/span&amp;gt;&lt;br /&gt;
;Web&lt;br /&gt;
:&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://microformats.org/wiki/events/2009-06-26-microformats-4th-bday&amp;lt;/span&amp;gt;&lt;br /&gt;
:&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://upcoming.yahoo.com/event/3010807&amp;lt;/span&amp;gt;&lt;br /&gt;
;Donation&lt;br /&gt;
:Donation requested at the door: sliding scale $5-$20. &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- end vevent --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- end test --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== expected iCalendar output ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;output&amp;quot;&amp;gt;&lt;br /&gt;
Here is the expected &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;iCalendar&amp;lt;/span&amp;gt; output, omitting optional &amp;quot;X-&amp;quot; properties, and implementation specific &amp;quot;PRODID&amp;quot; property:&lt;br /&gt;
&amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
BEGIN:VCALENDAR&lt;br /&gt;
VERSION:2.0&lt;br /&gt;
METHOD:PUBLISH&lt;br /&gt;
CALSCALE:GREGORIAN&lt;br /&gt;
BEGIN:VEVENT&lt;br /&gt;
LOCATION;LANGUAGE=en;CHARSET=utf-8:B Restaurant and Bar\, 720 Howard Street\, Yerba Buena Upper Terrace\, San Francisco\, CA 94103 USA&lt;br /&gt;
SUMMARY;LANGUAGE=en;CHARSET=utf-8:microformats.org 4th birthday party!&lt;br /&gt;
URL:http://microformats.org/wiki/events/2009-06-26-microformats-4th-bday&lt;br /&gt;
DTSTART;VALUE=DATE-TIME:20090626T190000&lt;br /&gt;
DTEND;VALUE=DATE-TIME:20090626T220000&lt;br /&gt;
END:VEVENT&lt;br /&gt;
END:VCALENDAR&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- value --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- output --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key lines that an hCalendar to iCalendar converter must match in order to pass this test:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
DTSTART;VALUE=DATE-TIME:20090626T190000&lt;br /&gt;
DTEND;VALUE=DATE-TIME:20090626T220000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Acceptable variant:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
DTSTART:20090626T190000&lt;br /&gt;
DTEND:20090626T220000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asserts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; summary=&amp;quot;Testing framework assertions used to test the parsed data against the expected data.&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;caption&amp;gt;A set of programming tests for xUnit testing frameworks&amp;lt;/caption&amp;gt;  &lt;br /&gt;
    &amp;lt;thead&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Test&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Result&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th&amp;gt;Comment&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/thead&amp;gt;&lt;br /&gt;
   &amp;lt;tbody&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;assert&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;test&amp;quot;&amp;gt;vevent[0].dtstart&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;result&amp;quot;&amp;gt;IsEqualToISODate(&amp;quot;2009-06-26T19:00&amp;quot;)&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;comment&amp;quot;&amp;gt;With the value class pattern the results should contain a time&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;        &lt;br /&gt;
        &amp;lt;tr class=&amp;quot;assert&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;test&amp;quot;&amp;gt;vevent[0].dtend&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;result&amp;quot;&amp;gt;IsEqualToISODate(&amp;quot;2009-06-26T22:00&amp;quot;)&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;comment&amp;quot;&amp;gt;With the value class pattern the results should contain a time&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== results ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;history&amp;quot;&amp;gt;&lt;br /&gt;
* 2009-06-26: Brian Suda's [[X2V]] has been updated (as of X2V 0.9.3) to pass this test! See [http://suda.co.uk/projects/X2V/#H2I Brian Suda's X2V hCalendar-2-iCalendar converter on his site] to re-run and verify this test case for yourself. Or use this converter link to produce results from this test case page directly:&lt;br /&gt;
** http://suda.co.uk/projects/microformats/hcalendar/get-cal.php?uri=http://microformats.org/wiki/value-dt-test-YYYY-MM-DD--HH-MM%23uf&lt;br /&gt;
** verified by [[User:Tantek]] 2009-07-06.&lt;br /&gt;
&lt;br /&gt;
* 2009-11-03: UfXtract has been updated to pass this test. To re-run and verify this test case try:&lt;br /&gt;
** http://ufxtract.com/api/?url=http://microformats.org/wiki/value-dt-test-YYYY-MM-DD--HH-MM&amp;amp;format=hcalendar&amp;amp;output=text&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!--history --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- test-fixture --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== derivation ==&lt;br /&gt;
This test was derived from [[events/2009-06-26-microformats-4th-bday]] which used the [[hCard]] defined [[value-excerption-pattern]] to provide more readable and accessible date and time information.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[value-class-date-time-tests]]&lt;br /&gt;
* [[value-class-pattern]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=twitter-syntax&amp;diff=41187</id>
		<title>twitter-syntax</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=twitter-syntax&amp;diff=41187"/>
		<updated>2009-10-30T18:51:09Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* hreview */ Documented group account author attribution syntax (^BW)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Twitter Syntax&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
;short URL&lt;br /&gt;
:http://tr.im/twyntax&lt;br /&gt;
&lt;br /&gt;
There is now an [http://help.twitter.com/index.php?pg=kb.page&amp;amp;id=75 Official Twitter Commands] page. Originally retrieved from the [http://twitter.com/help/lingo Twitter Lingo page], [http://twitter.com/help/follow Friends and Followers].&lt;br /&gt;
&lt;br /&gt;
Send these commands to the appropriate number (below) and interact with Twitter on your mobile phone, via Gtalk (IM twitter at twitter.com) or the web.&lt;br /&gt;
&lt;br /&gt;
;Following [http://twitter.com/blog/2007/07/friends-followers-and-notifications.html changes at Twitter] this page may need to be updated.&lt;br /&gt;
&lt;br /&gt;
==Numbers==&lt;br /&gt;
&amp;lt;!-- Alphabetical by country; International last--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class =&amp;quot;fn org&amp;quot;&amp;gt;Twitter Canada&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;cell&amp;lt;/span&amp;gt; 21212&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class =&amp;quot;fn org&amp;quot;&amp;gt;Twitter UK&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;cell&amp;lt;/span&amp;gt; +44 7624 801423&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class =&amp;quot;fn org&amp;quot;&amp;gt;Twitter USA&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;cell&amp;lt;/span&amp;gt; 40404&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class =&amp;quot;fn org&amp;quot;&amp;gt;Twitter International&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;type&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;cell&amp;lt;/span&amp;gt; +44 7624 801423&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
&lt;br /&gt;
=== Messages ===&lt;br /&gt;
* '''@username + message''': directs a twitter at another person, and causes your twitter to save in their &amp;quot;replies&amp;quot; tab. Aka &amp;quot;at replies&amp;quot; or &amp;quot;@replies&amp;quot;. Note that since @-reply handling change in (May?) 2009 (citation to Twitter blog post needed), messages starting with &amp;lt;kbd&amp;gt;@username&amp;lt;/kbd&amp;gt; passed along only to your followers who also follow @username.&lt;br /&gt;
** '''.@username + message''': similar but the &amp;quot;.&amp;quot; prefix is used to force/trick Twitter to have the message show up in the person's &amp;quot;replies&amp;quot; tab as well as be sent to all of your followers. Work around for the @-reply change mentioned above.&lt;br /&gt;
* '''D username + message''': sends a person a private message that goes to their device, and saves in their web archive.&lt;br /&gt;
&lt;br /&gt;
=== Friends and Followers ===&lt;br /&gt;
&lt;br /&gt;
* '''invite phone number''': 415-555-1212 john sends a text invite to john&lt;br /&gt;
* '''accept''': this command will accept a friend invitation.  Example: Accept Jade.  NOTE: when you accept, you must type in the name exactly as it was sent to you in order for Twitter to recognize it properly.&lt;br /&gt;
* '''deny''': this command will deny a friend invitation. &lt;br /&gt;
* '''delete''': for now, deleting friends must be done from the web.&lt;br /&gt;
* '''fav username''': marks a person's last twitter as a favorite&lt;br /&gt;
&lt;br /&gt;
* '''get ''username''''': gets this person's last update&lt;br /&gt;
* '''on''' or '''start''' or '''wake''': enables twitter phone updates&lt;br /&gt;
** '''on username''': turns on notifications for a specific person on your device. For example, ON alissa.&lt;br /&gt;
* '''off''' or '''stop''' or '''sleep''': disables twitter phone updates&lt;br /&gt;
** '''off username''':turns off notifications for a specific person on your device. For example, OFF blaine.&lt;br /&gt;
* '''follow all''': turns on phone updates (entire friends list)&lt;br /&gt;
** '''follow username''': you will get phone updates from this person (requires initial approval)&lt;br /&gt;
*** shortcut: '''F''' &lt;br /&gt;
* '''leave all''': turns off phone updates (entire friends list)&lt;br /&gt;
** '''leave username''': disables phone updates from this person&lt;br /&gt;
*** shortcut: '''L''' &lt;br /&gt;
* '''nudge username''': encourages this person to update&lt;br /&gt;
* '''whois username''': text WHOIS BIZ to 40404 you will get the info Biz has filled out in his settings&lt;br /&gt;
&lt;br /&gt;
=== Finding Out Stuff ===&lt;br /&gt;
&lt;br /&gt;
* '''followers''': find out who is following your updates ''(no longer supported)''&lt;br /&gt;
* '''stats''': find out how many people are following you, and how many friends you have&lt;br /&gt;
* '''help''': sends back a list of twitter lingo commands&lt;br /&gt;
&lt;br /&gt;
To update your own Twitter timeline, just text whatever is on your mind to the Twitter number: 40404, or use +447781488126 if you are outside the US.&lt;br /&gt;
&lt;br /&gt;
=== Tracking ===&lt;br /&gt;
&lt;br /&gt;
* '''track word''': get notifications via SMS or IM when a word is mentioned. type again to turn off.&lt;br /&gt;
* '''untrack word''': stops tracking a word&lt;br /&gt;
* '''untrack all''': stops tracking all words&lt;br /&gt;
* '''track off''': stops tracking all words&lt;br /&gt;
* '''tracks''': returns a list of words you're tracking&lt;br /&gt;
&lt;br /&gt;
==hash tags==&lt;br /&gt;
[http://hashtags.org/ Hashtags] (aka &amp;quot;#tags&amp;quot;) allow tagging of Twitter posts. For example, post &amp;quot;I love #microformats a lot&amp;quot; to Twitter and the post is tagged &amp;quot;microformats&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== hreview ==&lt;br /&gt;
* starting a message with &amp;quot;@hreview&amp;quot; will have it be aggregated by http://microrevie.ws and republished with [[hReview]] markup there.&lt;br /&gt;
&lt;br /&gt;
==group accounts==&lt;br /&gt;
&lt;br /&gt;
Groups of multiple people may share a single Twitter account to represent their organization.&lt;br /&gt;
&lt;br /&gt;
* Attribution: Ending a message with &amp;lt;code&amp;gt;^XX&amp;lt;/code&amp;gt;, indicates the author of a message on a group account. The &amp;lt;code&amp;gt;XX&amp;lt;/code&amp;gt; initials correspond to one of the staff representing the group. (This convention popularized by [http://cotweet.com CoTweet], adopted by [[microformateers]]. e.g. [https://twitter.com/Microformateers/status/5294239824], [https://twitter.com/cotweet/])&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[picoformats]]&lt;br /&gt;
*[[twitter-nanoformats|twitter nanoformats]]&lt;br /&gt;
*[http://pigsonthewing.wordpress.com/2008/01/05/suggested-method-of-publishing-microformats-in-twitter-posts/ A suggested method of publishing microformats in Twitter posts]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=x2v&amp;diff=41186</id>
		<title>x2v</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=x2v&amp;diff=41186"/>
		<updated>2009-10-30T18:33:33Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Started listing the multiple hosted instances of X2V, rather than just linking to Technorati alone&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;X2V&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
[http://suda.co.uk/projects/X2V/ X2V] is an open source [[microformats]] XSLT [[implementation]] by [[User:Brian|Brian Suda]] that [[parsers|parses]] [[hCard]] or [[hCalendar]] events in (X)HTML and transforms them into the corresponding vCard (.vcf) or iCalendar (.ics) file respectively.&lt;br /&gt;
&lt;br /&gt;
The latest beta and development versions of X2V can be tested at:&lt;br /&gt;
* http://suda.co.uk/projects/X2V/&lt;br /&gt;
** version 0.9.7 is the latest version, and it supports:&lt;br /&gt;
** [[hCard]] to [[vCard]]&lt;br /&gt;
** [[hCalendar]] to [[iCalendar]]&lt;br /&gt;
** [[value-class-pattern]] (nearly complete support of dates time separation, see [[value-class-date-time-tests]])&lt;br /&gt;
&lt;br /&gt;
== feedback ==&lt;br /&gt;
Feature requests and other general feedback.&lt;br /&gt;
When this section grows to big we can move it to [[x2v-feedback]].&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
Bugs or other apparent problems. See [[x2v-issues]].&lt;br /&gt;
&lt;br /&gt;
==hosted instances==&lt;br /&gt;
&lt;br /&gt;
If you want to just use X2V hosted on the web, the following sites are running it:&lt;br /&gt;
&lt;br /&gt;
* [[implementors#Technorati|Technorati]] hosts a deployment of X2V for converting hCard contacts or hCalendar events at:&lt;br /&gt;
** http://feeds.technorati.com/contacts/&lt;br /&gt;
** http://feeds.technorati.com/events/&lt;br /&gt;
* [http://h2vx.com h2vx] is a transformer service powered by X2V&lt;br /&gt;
** http://h2vx.com/vcf/&lt;br /&gt;
** http://h2vx.com/ics/&lt;br /&gt;
* Brian Suda's development page has a running copy, too:&lt;br /&gt;
** http://suda.co.uk/projects/X2V/&lt;br /&gt;
&lt;br /&gt;
== install ==&lt;br /&gt;
If you wish to run your own X2V converter, either for your own content, or as a general web service, you need to first get:&lt;br /&gt;
* X2V XSLT files (needs link to latest download)&lt;br /&gt;
* X2V PHP code (needs link to latest download)&lt;br /&gt;
&lt;br /&gt;
Then follow these instructions to set it up:&lt;br /&gt;
# ... (to be documented)&lt;br /&gt;
# ...&lt;br /&gt;
&lt;br /&gt;
== moved ==&lt;br /&gt;
One inline &amp;lt;span id=&amp;quot;Test&amp;quot;&amp;gt;test&amp;lt;/span&amp;gt; moved to: [[value-dt-test-YYYY-MM-DD--HH-MM]], and expanded into a general test case for the [[value-class-pattern]], one of several [[value-class-date-time-tests]].&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
* [[hcard-implementations]]&lt;br /&gt;
* [[vcard-implementations]]&lt;br /&gt;
* [[hCalendar]]&lt;br /&gt;
* [[hcalendar-implementations]]&lt;br /&gt;
* [[icalendar-implementations]]&lt;br /&gt;
* [[implementations]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformateers&amp;diff=40843</id>
		<title>microformateers</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformateers&amp;diff=40843"/>
		<updated>2009-09-26T21:33:02Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Response Process */ Fixed collapsed URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Microformateers&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/microformateers Microformateers] is a Twitter account providing quick answers to people's questions about microformats. Twitter is full of people with short queries about syntax, or remarking upon things they've read about microformats. Microformats.org already runs the [http://twitter.com/microformats @microformats] account for pushing news and announcements, but the microformateers effort is about responding.&lt;br /&gt;
&lt;br /&gt;
==What is this?==&lt;br /&gt;
&lt;br /&gt;
Microformateers is a single Twitter account, shared between a number of individual contributors. They monitor Twitter searches for mentions of microformats and related terms, and respond directly and publicly to people's lazy-web questions, ideally within 140 characters. Where longer code examples are required, code snippets areposted to [http://gist.github.com gist].&lt;br /&gt;
&lt;br /&gt;
==Who are the microformateers?==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
Because of the mechanics of Twitter (a single account, shared with a single password) it is not possible for the &amp;lt;span class=&amp;quot;org&amp;quot;&amp;gt;Microformateers&amp;lt;/span&amp;gt; account to be open to all. '''The following agents are currently ‘on duty’''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Frances Berriman&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/58225171/17464024_N00_normal_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/phae&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Phae]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Jeremy Keith&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/65971001/avatar_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/adactio&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Adactio]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Drew McLellan&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/124177936/peek_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/drewm&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:DrewMcLellan]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Ben Ward&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^BW&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/150824912/2009-200_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/benward&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:BenWard]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- // microformateers org vcard --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Response Process==&lt;br /&gt;
&lt;br /&gt;
* Microformateers is a single Twitter identity shared between an appropriate number of trusted individuals&lt;br /&gt;
* When you have a free moment or the mood takes you, monitor searches for microformats terms (there's one saved in the account already)&lt;br /&gt;
* When you find a question to be answered, respond using the [http://twitter.com/microformateers @microformateers account]&lt;br /&gt;
* If you need to provide code, stick it on [http://gist.github.com gist.github.com] (or similar pastebin service) and link to it. Gist is good though, as it ties into the Github community as well.&lt;br /&gt;
* When you answer someone's question, add the tweet to the [http://twitter.com/microformateers/favorites @microformateers’ favorites], that we avoid inundating questioners with duplicate answers. (Most quality Twitter clients, as well as the Twitter website itself, indicate which tweets you have ‘faved’ inline.)&lt;br /&gt;
* Where possible, save 3 characters to sign the tweet with a &amp;lt;kbd&amp;gt;^XX&amp;lt;/kbd&amp;gt;, using your initials, so people can reference you personally as well. (e.g. ^BW, ^T, ^JK, ^FB… something identifiabley.) People can refer to this wiki page to look-up the individual. &amp;lt;code&amp;gt;^AB&amp;lt;/code&amp;gt; is an existing convention on Twitter for this purpose, used by software such as Co-Tweet.&lt;br /&gt;
&lt;br /&gt;
==Interested List==&lt;br /&gt;
&lt;br /&gt;
If you're interested in becoming an agent for the microformateers, please add your name to the list below. There are a couple of constraints on this system: First is trust and security, simply because Twitter's account model requires sharing the same master password for the @microformateers account between all participants; we have to be conservative with proliferation. The second issue is meeting volume of demand. At present, we think that 4/5 agents is about the right number to be involved given the volume of questions and content that come through Twitter. But, as agents come and go, or as question demand increases we'll refer to this list. Thanks. (Technical solutions to make sharing Twitter accounts safer and accountable are also up for future consideration.) —[[User:BenWard|BenWard]] 21:31, 26 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
* …&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformateers&amp;diff=40842</id>
		<title>microformateers</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformateers&amp;diff=40842"/>
		<updated>2009-09-26T21:32:38Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Response Process */ Fixed collapsed URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Microformateers&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/microformateers Microformateers] is a Twitter account providing quick answers to people's questions about microformats. Twitter is full of people with short queries about syntax, or remarking upon things they've read about microformats. Microformats.org already runs the [http://twitter.com/microformats @microformats] account for pushing news and announcements, but the microformateers effort is about responding.&lt;br /&gt;
&lt;br /&gt;
==What is this?==&lt;br /&gt;
&lt;br /&gt;
Microformateers is a single Twitter account, shared between a number of individual contributors. They monitor Twitter searches for mentions of microformats and related terms, and respond directly and publicly to people's lazy-web questions, ideally within 140 characters. Where longer code examples are required, code snippets areposted to [http://gist.github.com gist].&lt;br /&gt;
&lt;br /&gt;
==Who are the microformateers?==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
Because of the mechanics of Twitter (a single account, shared with a single password) it is not possible for the &amp;lt;span class=&amp;quot;org&amp;quot;&amp;gt;Microformateers&amp;lt;/span&amp;gt; account to be open to all. '''The following agents are currently ‘on duty’''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Frances Berriman&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/58225171/17464024_N00_normal_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/phae&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Phae]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Jeremy Keith&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/65971001/avatar_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/adactio&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Adactio]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Drew McLellan&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/124177936/peek_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/drewm&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:DrewMcLellan]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Ben Ward&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^BW&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/150824912/2009-200_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/benward&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:BenWard]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- // microformateers org vcard --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Response Process==&lt;br /&gt;
&lt;br /&gt;
* Microformateers is a single Twitter identity shared between an appropriate number of trusted individuals&lt;br /&gt;
* When you have a free moment or the mood takes you, monitor searches for microformats terms (there's one saved in the account already)&lt;br /&gt;
* When you find a question to be answered, respond using the [http://twitter.com/microformateers @microformateers account]&lt;br /&gt;
* If you need to provide code, stick it on [http://gist.github.comgist.github.com] (or similar pastebin service) and link to it. Gist is good though, as it ties into the Github community as well.&lt;br /&gt;
* When you answer someone's question, add the tweet to the [http://twitter.com/microformateers/favorites @microformateers’ favorites], that we avoid inundating questioners with duplicate answers. (Most quality Twitter clients, as well as the Twitter website itself, indicate which tweets you have ‘faved’ inline.)&lt;br /&gt;
* Where possible, save 3 characters to sign the tweet with a &amp;lt;kbd&amp;gt;^XX&amp;lt;/kbd&amp;gt;, using your initials, so people can reference you personally as well. (e.g. ^BW, ^T, ^JK, ^FB… something identifiabley.) People can refer to this wiki page to look-up the individual. &amp;lt;code&amp;gt;^AB&amp;lt;/code&amp;gt; is an existing convention on Twitter for this purpose, used by software such as Co-Tweet.&lt;br /&gt;
&lt;br /&gt;
==Interested List==&lt;br /&gt;
&lt;br /&gt;
If you're interested in becoming an agent for the microformateers, please add your name to the list below. There are a couple of constraints on this system: First is trust and security, simply because Twitter's account model requires sharing the same master password for the @microformateers account between all participants; we have to be conservative with proliferation. The second issue is meeting volume of demand. At present, we think that 4/5 agents is about the right number to be involved given the volume of questions and content that come through Twitter. But, as agents come and go, or as question demand increases we'll refer to this list. Thanks. (Technical solutions to make sharing Twitter accounts safer and accountable are also up for future consideration.) —[[User:BenWard|BenWard]] 21:31, 26 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
* …&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformateers&amp;diff=40841</id>
		<title>microformateers</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformateers&amp;diff=40841"/>
		<updated>2009-09-26T21:31:57Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Finished microformateers page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Microformateers&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/microformateers Microformateers] is a Twitter account providing quick answers to people's questions about microformats. Twitter is full of people with short queries about syntax, or remarking upon things they've read about microformats. Microformats.org already runs the [http://twitter.com/microformats @microformats] account for pushing news and announcements, but the microformateers effort is about responding.&lt;br /&gt;
&lt;br /&gt;
==What is this?==&lt;br /&gt;
&lt;br /&gt;
Microformateers is a single Twitter account, shared between a number of individual contributors. They monitor Twitter searches for mentions of microformats and related terms, and respond directly and publicly to people's lazy-web questions, ideally within 140 characters. Where longer code examples are required, code snippets areposted to [http://gist.github.com gist].&lt;br /&gt;
&lt;br /&gt;
==Who are the microformateers?==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
Because of the mechanics of Twitter (a single account, shared with a single password) it is not possible for the &amp;lt;span class=&amp;quot;org&amp;quot;&amp;gt;Microformateers&amp;lt;/span&amp;gt; account to be open to all. '''The following agents are currently ‘on duty’''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Frances Berriman&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/58225171/17464024_N00_normal_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/phae&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Phae]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Jeremy Keith&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/65971001/avatar_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/adactio&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Adactio]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Drew McLellan&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/124177936/peek_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/drewm&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:DrewMcLellan]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Ben Ward&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^BW&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/150824912/2009-200_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/benward&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:BenWard]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- // microformateers org vcard --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Response Process==&lt;br /&gt;
&lt;br /&gt;
* Microformateers is a single Twitter identity shared between an appropriate number of trusted individuals&lt;br /&gt;
* When you have a free moment or the mood takes you, monitor searches for microformats terms (there's one saved in the account already)&lt;br /&gt;
* When you find a question to be answered, respond using the [http://twitter.com/microformateers @microformateers account]&lt;br /&gt;
* If you need to provide code, stick it on [http://gist.github.com] (or similar pastebin service) and link to it. Gist is good though, as it ties into the Github community as well.&lt;br /&gt;
* When you answer someone's question, add the tweet to the [http://twitter.com/microformateers/favorites @microformateers’ favorites], that we avoid inundating questioners with duplicate answers. (Most quality Twitter clients, as well as the Twitter website itself, indicate which tweets you have ‘faved’ inline.)&lt;br /&gt;
* Where possible, save 3 characters to sign the tweet with a &amp;lt;kbd&amp;gt;^XX&amp;lt;/kbd&amp;gt;, using your initials, so people can reference you personally as well. (e.g. ^BW, ^T, ^JK, ^FB… something identifiabley.) People can refer to this wiki page to look-up the individual. &amp;lt;code&amp;gt;^AB&amp;lt;/code&amp;gt; is an existing convention on Twitter for this purpose, used by software such as Co-Tweet.&lt;br /&gt;
&lt;br /&gt;
==Interested List==&lt;br /&gt;
&lt;br /&gt;
If you're interested in becoming an agent for the microformateers, please add your name to the list below. There are a couple of constraints on this system: First is trust and security, simply because Twitter's account model requires sharing the same master password for the @microformateers account between all participants; we have to be conservative with proliferation. The second issue is meeting volume of demand. At present, we think that 4/5 agents is about the right number to be involved given the volume of questions and content that come through Twitter. But, as agents come and go, or as question demand increases we'll refer to this list. Thanks. (Technical solutions to make sharing Twitter accounts safer and accountable are also up for future consideration.) —[[User:BenWard|BenWard]] 21:31, 26 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
* …&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformateers&amp;diff=40840</id>
		<title>microformateers</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformateers&amp;diff=40840"/>
		<updated>2009-09-26T21:25:31Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Who are the microformateers? */ Changed mark-up to use AGENT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Microformateers&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/microformateers Microformateers] is a Twitter account providing quick answers to people's questions about microformats. Twitter is full of people with short queries about syntax, or remarking upon things they've read about microformats. Microformats.org already runs the [http://twitter.com/microformats @microformats] account for pushing news and announcements, but the microformateers effort is about responding.&lt;br /&gt;
&lt;br /&gt;
==What is it==&lt;br /&gt;
&lt;br /&gt;
Microformateers is a single Twitter account, shared between a number of individual contributors. They monitor Twitter searches for mentions of microformats and related terms, and respond directly and publicly to people's lazy-web questions, ideally within 140 characters. Where longer code examples are required, code snippets areposted to [http://gist.github.com gist].&lt;br /&gt;
&lt;br /&gt;
==Who are the microformateers?==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
Because of the mechanics of Twitter (a single account, shared with a single password) it is not possible for the &amp;lt;span class=&amp;quot;org&amp;quot;&amp;gt;Microformateers&amp;lt;/span&amp;gt; account to be open to all. '''The following agents are currently ‘on duty’''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Frances Berriman&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/58225171/17464024_N00_normal_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/phae&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Phae]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Jeremy Keith&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/65971001/avatar_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/adactio&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:Adactio]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Drew McLellan&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^??&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/124177936/peek_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/drewm&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:DrewMcLellan]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;agent vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Ben Ward&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^BW&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/150824912/2009-200_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/benward&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:BenWard]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- // microformateers org vcard --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How does this work==&lt;br /&gt;
&lt;br /&gt;
* Microformateers is a single Twitter identity shared between an appropriate number of trusted individuals&lt;br /&gt;
* When you have a free moment or the mood takes you, monitor searches for microformats terms (there's one saved in the account already)&lt;br /&gt;
* When you find a question to be answered, respond using the [http://twitter.com/microformateers @microformateers account]&lt;br /&gt;
* If you need to provide code, stick it on [http://gist.github.com] (or similar pastebin service) and link to it. Gist is good though, as it ties into the Github community as well.&lt;br /&gt;
* When you answer someone's question, add the tweet to the [http://twitter.com/microformateers/favorites @microformateers’ favorites], that we avoid inundating questioners with duplicate answers. (Most quality Twitter clients, as well as the Twitter website itself, indicate which tweets you have ‘faved’ inline.)&lt;br /&gt;
* Where possible, save 3 characters to sign the tweet with a &amp;lt;kbd&amp;gt;^XX&amp;lt;/kbd&amp;gt;, using your initials, so people can reference you personally as well. (e.g. ^BW, ^T, ^JK, ^FB… something identifiabley.) People can refer to this wiki page to look-up the individual. &amp;lt;code&amp;gt;^AB&amp;lt;/code&amp;gt; is an existing convention on Twitter for this purpose, used by software such as Co-Tweet.&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformateers&amp;diff=40839</id>
		<title>microformateers</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformateers&amp;diff=40839"/>
		<updated>2009-09-26T21:20:58Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Created page for @microformateers service.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Microformateers&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/microformateers Microformateers] is a Twitter account providing quick answers to people's questions about microformats. Twitter is full of people with short queries about syntax, or remarking upon things they've read about microformats. Microformats.org already runs the [http://twitter.com/microformats @microformats] account for pushing news and announcements, but the microformateers effort is about responding.&lt;br /&gt;
&lt;br /&gt;
==What is it==&lt;br /&gt;
&lt;br /&gt;
Microformateers is a single Twitter account, shared between a number of individual contributors. They monitor Twitter searches for mentions of microformats and related terms, and respond directly and publicly to people's lazy-web questions, ideally within 140 characters. Where longer code examples are required, code snippets areposted to [http://gist.github.com gist].&lt;br /&gt;
&lt;br /&gt;
==Who are the microformateers?==&lt;br /&gt;
&lt;br /&gt;
Because of the mechanics of Twitter (a single account, shared with a single password) it is not possible for the microformateers bot to be open to all. '''The following people are currently ‘on duty’''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
===&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Ben Ward&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;nickname&amp;quot;&amp;gt;^BW&amp;lt;/span&amp;gt;)===&lt;br /&gt;
&lt;br /&gt;
https://s3.amazonaws.com/twitter_production/profile_images/150824912/2009-200_bigger.jpg&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://twitter.com/benward&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[User:BenWard]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How does this work==&lt;br /&gt;
&lt;br /&gt;
* Microformateers is a single Twitter identity shared between an appropriate number of trusted individuals&lt;br /&gt;
* When you have a free moment or the mood takes you, monitor searches for microformats terms (there's one saved in the account already)&lt;br /&gt;
* When you find a question to be answered, respond using the [http://twitter.com/microformateers @microformateers account]&lt;br /&gt;
* If you need to provide code, stick it on [http://gist.github.com] (or similar pastebin service) and link to it. Gist is good though, as it ties into the Github community as well.&lt;br /&gt;
* When you answer someone's question, add the tweet to the [http://twitter.com/microformateers/favorites @microformateers’ favorites], that we avoid inundating questioners with duplicate answers. (Most quality Twitter clients, as well as the Twitter website itself, indicate which tweets you have ‘faved’ inline.)&lt;br /&gt;
* Where possible, save 3 characters to sign the tweet with a &amp;lt;kbd&amp;gt;^XX&amp;lt;/kbd&amp;gt;, using your initials, so people can reference you personally as well. (e.g. ^BW, ^T, ^JK, ^FB… something identifiabley.) People can refer to this wiki page to look-up the individual. &amp;lt;code&amp;gt;^AB&amp;lt;/code&amp;gt; is an existing convention on Twitter for this purpose, used by software such as Co-Tweet.&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=User:BenWard/drafts/embed-brainstorming&amp;diff=40761</id>
		<title>User:BenWard/drafts/embed-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=User:BenWard/drafts/embed-brainstorming&amp;diff=40761"/>
		<updated>2009-09-15T19:07:43Z</updated>

		<summary type="html">&lt;p&gt;BenWard: User:BenWard/drafts/embed-brainstorming moved to embed-brainstorming: Move out of user space.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[embed-brainstorming]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=embed-brainstorming&amp;diff=40760</id>
		<title>embed-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=embed-brainstorming&amp;diff=40760"/>
		<updated>2009-09-15T19:07:43Z</updated>

		<summary type="html">&lt;p&gt;BenWard: User:BenWard/drafts/embed-brainstorming moved to embed-brainstorming: Move out of user space.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; Editor: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
==Synopsis==&lt;br /&gt;
&lt;br /&gt;
Embedding content across different publishers — such as showing YouTube videos in blog posts, Flickr photographs in Pownce, preview images next to bookmarked links.&lt;br /&gt;
&lt;br /&gt;
Sites such as YouTube, Flickr, Vimeo and others publish ‘embed code’ to aid users in copy+pasting content into their own repostings. This is especially useful for embedding of complex content such as Shockwave Flash movies, where the HTML code is not intuitive. Sites like Flickr use copy+paste code examples to encourage and enforce link-back policies and publication of author, publisher and copyright information.&lt;br /&gt;
&lt;br /&gt;
==Goal==&lt;br /&gt;
&lt;br /&gt;
Produce a microformat to describe the embedding patterns for content and the author/publisher information connected to the content, such that a user or tool could extract the ‘embed’ from any supporting site in a common manner. That could be in the authoring stage of tools such as blogging platforms, or at the publication stage, such as Pownce showing embedded content for URLs that are posted to the service.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* Users republish any embeddable piece of content by providing just a URL&lt;br /&gt;
* Content from a URL extracted and displayed alongside links in microblogging systems such as Pownce and Tumblr, without those services having to write unique extraction code for every website.&lt;br /&gt;
* Content to be displayed alongside search results (e.g. via Yahoo SearchMonkey, or behind-the-scenes systems used for image previews)&lt;br /&gt;
* Where you type a URL into a message (e.g. on Facebook), a service looks up the URL and grabs the page title and a content snippet to display with the the message. A kind of ‘rich link’. This microformat would enable more relevant content to be parsed out of pages.&lt;br /&gt;
* Allow content to be marked up in such a way that the embed code can be taken from mark-up itself if appropriate, not just explicit chunks of code.&lt;br /&gt;
* Allow publishers to mark-up a piece of code used for embedding that differs from the code used by the publisher site.&lt;br /&gt;
** e.g. Flickr photos on Flickr do not link to the Flickr page itself, but Flickr TOS dictate that photos ''must'' link back to Flickr. As such, the code they give users to embed a photo is different from the code they use to publish the photo.&lt;br /&gt;
** However, when I repost that photo — linking to Flickr — the actual mark-up I used could be used by someone else to republish that photo in line with the TOS. Both publishing scenarios are valid.&lt;br /&gt;
&lt;br /&gt;
==Existing Sytems==&lt;br /&gt;
&lt;br /&gt;
The creators of Pownce have created an XML standard called oEmbed. This is a standalone XML representation of embeddable content, similar to a feed entry, but including additional fields for the host site (the publisher), and the exact code needed to include the content object in pages.&lt;br /&gt;
&lt;br /&gt;
oEmbed uses an XRDS endpoint, linked to from the content page, to provide the oEmbed representation of a resource.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===Publishers===&lt;br /&gt;
&lt;br /&gt;
Publisher examples record both the content of the provided embed code, and also the whether that same information is present in the mark-up of the page.&lt;br /&gt;
&lt;br /&gt;
====YouTube====&lt;br /&gt;
&lt;br /&gt;
=====In Page=====&lt;br /&gt;
&lt;br /&gt;
* Video (object)&lt;br /&gt;
* Title&lt;br /&gt;
* Description&lt;br /&gt;
* HTML embed code (&amp;lt;input&amp;gt;)&lt;br /&gt;
* Permalink&lt;br /&gt;
* Author&lt;br /&gt;
** Name&lt;br /&gt;
** URL&lt;br /&gt;
* Site (Publisher)&lt;br /&gt;
* Rating&lt;br /&gt;
* Viewcount&lt;br /&gt;
&lt;br /&gt;
— http://uk.youtube.com/watch?v=zP4zaMvV__4&lt;br /&gt;
&lt;br /&gt;
=====Embed Code=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;object width=&amp;quot;425&amp;quot; height=&amp;quot;344&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://www.youtube.com/v/zP4zaMvV__4&amp;amp;hl=en&amp;amp;fs=1&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;allowFullScreen&amp;quot; value=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;embed src=&amp;quot;http://www.youtube.com/v/zP4zaMvV__4&amp;amp;hl=en&amp;amp;fs=1&amp;quot; &lt;br /&gt;
           type=&amp;quot;application/x-shockwave-flash&amp;quot;&lt;br /&gt;
           allowscriptaccess=&amp;quot;always&amp;quot;&lt;br /&gt;
           allowfullscreen=&amp;quot;true&amp;quot;&lt;br /&gt;
           width=&amp;quot;425&amp;quot;&lt;br /&gt;
           height=&amp;quot;344&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt;&lt;br /&gt;
&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Video URL&lt;br /&gt;
* Media Dimensions&lt;br /&gt;
&lt;br /&gt;
YouTube does not include any information about the video, author, licensing or source site in HTML. That content is all presented within the Flash object itselt.&lt;br /&gt;
&lt;br /&gt;
====Flickr====&lt;br /&gt;
&lt;br /&gt;
Flickr has two relevant pages; the photo page itself (which contains no explicit embed code) and the ‘All Photos’ page, which contains links to multiple sizes and example embed code.&lt;br /&gt;
&lt;br /&gt;
=====Photo Page Schema=====&lt;br /&gt;
&lt;br /&gt;
* Title&lt;br /&gt;
* Description&lt;br /&gt;
* Image (img)&lt;br /&gt;
* Author&lt;br /&gt;
* Publisher (site name)&lt;br /&gt;
* License&lt;br /&gt;
* Link to other sizes&lt;br /&gt;
* Page is the permalink&lt;br /&gt;
&lt;br /&gt;
— http://www.flickr.com/photos/benward/3189768143/&lt;br /&gt;
&lt;br /&gt;
=====‘All Sizes’ (embed page) schema=====&lt;br /&gt;
&lt;br /&gt;
* Image (at size)&lt;br /&gt;
* License&lt;br /&gt;
* Author&lt;br /&gt;
* HTML embed code&lt;br /&gt;
* Direct link to image&lt;br /&gt;
* Additional reuse rules (‘photo must be linked to the photo page’)&lt;br /&gt;
* Links to other sizes&lt;br /&gt;
* Link back to main image (permalink)&lt;br /&gt;
&lt;br /&gt;
— http://www.flickr.com/photos/benward/3189768143/sizes/l/&lt;br /&gt;
&lt;br /&gt;
=====Embed Code=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://www.flickr.com/photos/benward/3189768143/&amp;quot; title=&amp;quot;Fresh Baked by Ben Ward, on Flickr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;http://farm4.static.flickr.com/3398/3189768143_2ca7da4544_b.jpg&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;683&amp;quot; alt=&amp;quot;Fresh Baked&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Photo URL&lt;br /&gt;
* Photo Title&lt;br /&gt;
* Photo Dimensions&lt;br /&gt;
* Author name&lt;br /&gt;
* Publisher Name&lt;br /&gt;
* Photo permalink&lt;br /&gt;
&lt;br /&gt;
===Vimeo===&lt;br /&gt;
&lt;br /&gt;
====In Page===&lt;br /&gt;
* Title&lt;br /&gt;
* Video (content)&lt;br /&gt;
* Description&lt;br /&gt;
* Author&lt;br /&gt;
* Publisher (vimeo)&lt;br /&gt;
* Published Date&lt;br /&gt;
* Link to raw video&lt;br /&gt;
* Embed code — revealed by clicking a link within a flash movie. Not present with JavaScript disabled.&lt;br /&gt;
&lt;br /&gt;
====Embed Code====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;object width=&amp;quot;400&amp;quot; height=&amp;quot;225&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;allowfullscreen&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=2755105&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=0&amp;amp;amp;show_portrait=0&amp;amp;amp;color=FF0E0F&amp;amp;amp;fullscreen=1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;embed src=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=2755105&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=0&amp;amp;amp;show_portrait=0&amp;amp;amp;color=FF0E0F&amp;amp;amp;fullscreen=1&amp;quot; &lt;br /&gt;
           type=&amp;quot;application/x-shockwave-flash&amp;quot;&lt;br /&gt;
           allowfullscreen=&amp;quot;true&amp;quot;&lt;br /&gt;
            allowscriptaccess=&amp;quot;always&amp;quot;&lt;br /&gt;
            width=&amp;quot;400&amp;quot;&lt;br /&gt;
            height=&amp;quot;225&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/embed&amp;gt;&lt;br /&gt;
&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://vimeo.com/&amp;quot;&amp;gt;The Remnants&amp;lt;/a&amp;gt;&lt;br /&gt;
from &amp;lt;a href=&amp;quot;http://vimeo.com/johnaugust&amp;quot;&amp;gt;John August&amp;lt;/a&amp;gt;&lt;br /&gt;
on &amp;lt;a href=&amp;quot;http://vimeo.com&amp;quot;&amp;gt;Vimeo&amp;lt;/a&amp;gt;.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Video object&lt;br /&gt;
* Video dimensions&lt;br /&gt;
* Video title&lt;br /&gt;
* Permalink&lt;br /&gt;
* Publisher&lt;br /&gt;
** Name (Vimeo)&lt;br /&gt;
** URL&lt;br /&gt;
* Creator&lt;br /&gt;
** Name&lt;br /&gt;
** URL&lt;br /&gt;
&lt;br /&gt;
===Skitch===&lt;br /&gt;
* Publishes 5 different embed codes. Interrrresting.&lt;br /&gt;
&lt;br /&gt;
===Photobucket===&lt;br /&gt;
&lt;br /&gt;
===Consumers===&lt;br /&gt;
&lt;br /&gt;
Consumption of embedable content is spread throughout a number of different use cases:&lt;br /&gt;
&lt;br /&gt;
====Microblogging====&lt;br /&gt;
&lt;br /&gt;
=====Pownce=====&lt;br /&gt;
&lt;br /&gt;
[http://pownce.com Pownce] is the original pioneer of the &amp;lt;code&amp;gt;oembed&amp;lt;/code&amp;gt; standard. It takes a URL input for an external resource, and where supported embedable content is found, the embed is included with the link post.&lt;br /&gt;
&lt;br /&gt;
Pownce notes are already marked up with hAtom, and include embedded content within a class of &amp;lt;code&amp;gt;attachment&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition to the fields of hAtom, the embedded content includes:&lt;br /&gt;
&lt;br /&gt;
* Linking back to the publishing source&lt;br /&gt;
* Attribution to the embedded content creator&lt;br /&gt;
* Count of the times the content has been downloaded from this publisher&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;li id=&amp;quot;note4390327&amp;quot; class=&amp;quot;public-note hentry&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;note-contents&amp;quot;&amp;gt; &lt;br /&gt;
        &amp;lt;a href=&amp;quot;/ariel/&amp;quot;&amp;gt; &lt;br /&gt;
            &amp;lt;img src=&amp;quot;/profile_photos/a/r/i/ariel/304_medium.jpg&amp;quot; width=&amp;quot;48&amp;quot; height=&amp;quot;48&amp;quot; title=&amp;quot;Ariel Waldman&amp;quot; class=&amp;quot;user&amp;quot; /&amp;gt; &lt;br /&gt;
        	&amp;lt;em class=&amp;quot;pro-2&amp;quot;&amp;gt;Pro!&amp;lt;/em&amp;gt; &lt;br /&gt;
        &amp;lt;/a&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
        &amp;lt;p class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;em class=&amp;quot;note-type entry-title&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;a href=&amp;quot;/ariel/notes/4390327/&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;Public&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;/em&amp;gt; &lt;br /&gt;
            My favorite Pownce post from !&amp;lt;a href=&amp;quot;/leahculver/&amp;quot;&amp;gt;leahculver&amp;lt;/a&amp;gt;.&lt;br /&gt;
        &amp;lt;/p&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
        &amp;lt;div class=&amp;quot;attachment&amp;quot;&amp;gt;                &lt;br /&gt;
            &amp;lt;div&amp;gt; &lt;br /&gt;
                &amp;lt;a href=&amp;quot;http://flickr.com/photos/arielwaldman/3078507970/in/photostream/&amp;quot;&amp;gt; &lt;br /&gt;
                    &amp;lt;img src=&amp;quot;http://farm4.static.flickr.com/3210/3078507970_5811e41585_m.jpg&amp;quot; alt=&amp;quot;Pownce&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
                &amp;lt;/a&amp;gt; &lt;br /&gt;
            &amp;lt;/div&amp;gt; &lt;br /&gt;
                    &lt;br /&gt;
            &amp;lt;div class=&amp;quot;by-caption&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;photo by&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;a href=&amp;quot;http://www.flickr.com/photos/arielwaldman/&amp;quot; &amp;gt;arielwaldman&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt; &lt;br /&gt;
        &lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://flickr.com/photos/arielwaldman/3078507970/in/photostream/&amp;quot; class=&amp;quot;note-url&amp;quot;&amp;gt; &lt;br /&gt;
                flickr.com/photos/arielwaldman/30...&lt;br /&gt;
            &amp;lt;/a&amp;gt; &lt;br /&gt;
            &amp;lt;div class=&amp;quot;note-count&amp;quot;&amp;gt; &lt;br /&gt;
                &amp;lt;span id=&amp;quot;click-count-4390327&amp;quot;&amp;gt;(14 views)&amp;lt;/span&amp;gt;     &lt;br /&gt;
            &amp;lt;/div&amp;gt; &lt;br /&gt;
        &amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div class=&amp;quot;note-location fireeagle&amp;quot;&amp;gt; &lt;br /&gt;
            &amp;lt;span class=&amp;quot;locator&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/settings/fireeagle/&amp;quot;&amp;gt;Fire Eagle&amp;lt;/a&amp;gt;:&lt;br /&gt;
            &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;San Francisco, CA&amp;lt;/span&amp;gt; &lt;br /&gt;
            &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;US&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt; &lt;br /&gt;
	&lt;br /&gt;
        &amp;lt;h4&amp;gt; &lt;br /&gt;
            &amp;lt;abbr class=&amp;quot;published&amp;quot; title=&amp;quot;1 day ago&amp;quot;&amp;gt;1 day ago&amp;lt;/abbr&amp;gt; &lt;br /&gt;
            &amp;lt;span class=&amp;quot;vcard author&amp;quot;&amp;gt; &lt;br /&gt;
                &amp;lt;a href=&amp;quot;/ariel/&amp;quot; class=&amp;quot;sender url&amp;quot;&amp;gt; &lt;br /&gt;
                    &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt; &lt;br /&gt;
                        Ariel Waldman					&lt;br /&gt;
                    &amp;lt;/span&amp;gt; &lt;br /&gt;
                 &amp;lt;/a&amp;gt; 				&lt;br /&gt;
            &amp;lt;/span&amp;gt; &lt;br /&gt;
	   &lt;br /&gt;
            &amp;lt;a href=&amp;quot;/ariel/notes/4390327/&amp;quot; class=&amp;quot;reply&amp;quot;&amp;gt;2  Replies &amp;lt;/a&amp;gt; &lt;br /&gt;
            &amp;lt;a href=&amp;quot;/ariel/notes/4390327/forward/&amp;quot; class=&amp;quot;forward&amp;quot;&amp;gt;Forward&amp;lt;/a&amp;gt; &lt;br /&gt;
        &amp;lt;/h4&amp;gt; &lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
''— Source of a full note, embedding a Flickr photograph, from http://pownce.com/benward''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;attachment&amp;quot;&amp;gt;     &lt;br /&gt;
    &amp;lt;div&amp;gt; &lt;br /&gt;
        &amp;lt;span&amp;gt;                     &lt;br /&gt;
            &amp;lt;object classid=&amp;quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&amp;quot;&lt;br /&gt;
             codebase=&amp;quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0&amp;quot;&lt;br /&gt;
             width=&amp;quot;300&amp;quot; height=&amp;quot;247&amp;quot; id=&amp;quot;jxT0ELP7az0&amp;quot; align=&amp;quot;middle&amp;quot;&amp;gt; &lt;br /&gt;
            &amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://www.youtube.com/v/jxT0ELP7az0&amp;quot; /&amp;gt; &lt;br /&gt;
            &amp;lt;embed src=&amp;quot;http://www.youtube.com/v/jxT0ELP7az0&amp;quot; quality=&amp;quot;high&amp;quot;&lt;br /&gt;
             width=&amp;quot;300&amp;quot; height=&amp;quot;247&amp;quot; name=&amp;quot;jxT0ELP7az0&amp;quot;&lt;br /&gt;
             align=&amp;quot;middle&amp;quot; allowScriptAccess=&amp;quot;sameDomain&amp;quot;&lt;br /&gt;
             type=&amp;quot;application/x-shockwave-flash&amp;quot; pluginspage=&amp;quot;http://www.adobe.com/go/getflashplayer&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/object&amp;gt; &lt;br /&gt;
        &amp;lt;/span&amp;gt; &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=jxT0ELP7az0&amp;quot; class=&amp;quot;note-url&amp;quot;&amp;gt;&lt;br /&gt;
        www.youtube.com/watch?v=jxT0ELP7a...&lt;br /&gt;
    &amp;lt;/a&amp;gt; &lt;br /&gt;
    &amp;lt;div class=&amp;quot;note-count&amp;quot;&amp;gt; &lt;br /&gt;
        &amp;lt;span id=&amp;quot;click-count-3949474&amp;quot;&amp;gt;(4 views)&amp;lt;/span&amp;gt; &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
''— Source snippet of a video note, showing the YouTube video attachment, from [http://pownce.com/BenWard/notes/4137829/]''&lt;br /&gt;
&lt;br /&gt;
=====Tumblr=====&lt;br /&gt;
&lt;br /&gt;
[http://tumblr.com Tumblr] is the defacto tumblelog application, encouraging users to post small snippet posts of text, as well as reposting images, audio, video, text quotes and URLs. The output of Tumblr varies depending on the theme the user uses, and can be customised. As such, the following documents the inputs used to publish content.&lt;br /&gt;
&lt;br /&gt;
* '''Text'''&lt;br /&gt;
** Title&lt;br /&gt;
** Text Content&lt;br /&gt;
* '''Photo'''&lt;br /&gt;
** Either the URL of a already hosted photograph, or an image binary upload&lt;br /&gt;
** Text Caption&lt;br /&gt;
** Click-through URL (e.g. linking a Flickr photo back to the source page)&lt;br /&gt;
* '''Quote'''&lt;br /&gt;
** Quote Text&lt;br /&gt;
** Source (text, also usable as a desciption)&lt;br /&gt;
* '''Link/URL'''&lt;br /&gt;
** Name (title)&lt;br /&gt;
** URL&lt;br /&gt;
** Description&lt;br /&gt;
* '''Chat (conversations)'''&lt;br /&gt;
** Title&lt;br /&gt;
** Dialogue (free text field, expects &amp;lt;code&amp;gt;My Name: This is my message&amp;lt;/code&amp;gt; format text)&lt;br /&gt;
* '''Audio'''&lt;br /&gt;
** Audio binary, or URL to externally hosted audio&lt;br /&gt;
** Text description&lt;br /&gt;
* '''Video'''&lt;br /&gt;
** URL for YouTube or Vimeo service videos, or paste custom embed code from any site.&lt;br /&gt;
** Text caption&lt;br /&gt;
&lt;br /&gt;
All post types include adding tags, setting the publication date, visibility (public/private), and the permalink slug.&lt;br /&gt;
&lt;br /&gt;
Tumblr provides a quite strictly structured input mechanism, but the ''video'' type is most relevant, as this accepts the code provided by any site. This microformat could allow it to accept any URL, beyond just YouTube and Vimeo for which it has implemented proprietary support.&lt;br /&gt;
&lt;br /&gt;
=====More to Document=====&lt;br /&gt;
&lt;br /&gt;
* Delicious&lt;br /&gt;
* Yahoo Search&lt;br /&gt;
* Google Search&lt;br /&gt;
* Facebook's ‘Compose New Message’ interface&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=embed-brainstorming&amp;diff=40759</id>
		<title>embed-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=embed-brainstorming&amp;diff=40759"/>
		<updated>2009-09-15T19:06:43Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Add editor credit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;; Editor: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
==Synopsis==&lt;br /&gt;
&lt;br /&gt;
Embedding content across different publishers — such as showing YouTube videos in blog posts, Flickr photographs in Pownce, preview images next to bookmarked links.&lt;br /&gt;
&lt;br /&gt;
Sites such as YouTube, Flickr, Vimeo and others publish ‘embed code’ to aid users in copy+pasting content into their own repostings. This is especially useful for embedding of complex content such as Shockwave Flash movies, where the HTML code is not intuitive. Sites like Flickr use copy+paste code examples to encourage and enforce link-back policies and publication of author, publisher and copyright information.&lt;br /&gt;
&lt;br /&gt;
==Goal==&lt;br /&gt;
&lt;br /&gt;
Produce a microformat to describe the embedding patterns for content and the author/publisher information connected to the content, such that a user or tool could extract the ‘embed’ from any supporting site in a common manner. That could be in the authoring stage of tools such as blogging platforms, or at the publication stage, such as Pownce showing embedded content for URLs that are posted to the service.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* Users republish any embeddable piece of content by providing just a URL&lt;br /&gt;
* Content from a URL extracted and displayed alongside links in microblogging systems such as Pownce and Tumblr, without those services having to write unique extraction code for every website.&lt;br /&gt;
* Content to be displayed alongside search results (e.g. via Yahoo SearchMonkey, or behind-the-scenes systems used for image previews)&lt;br /&gt;
* Where you type a URL into a message (e.g. on Facebook), a service looks up the URL and grabs the page title and a content snippet to display with the the message. A kind of ‘rich link’. This microformat would enable more relevant content to be parsed out of pages.&lt;br /&gt;
* Allow content to be marked up in such a way that the embed code can be taken from mark-up itself if appropriate, not just explicit chunks of code.&lt;br /&gt;
* Allow publishers to mark-up a piece of code used for embedding that differs from the code used by the publisher site.&lt;br /&gt;
** e.g. Flickr photos on Flickr do not link to the Flickr page itself, but Flickr TOS dictate that photos ''must'' link back to Flickr. As such, the code they give users to embed a photo is different from the code they use to publish the photo.&lt;br /&gt;
** However, when I repost that photo — linking to Flickr — the actual mark-up I used could be used by someone else to republish that photo in line with the TOS. Both publishing scenarios are valid.&lt;br /&gt;
&lt;br /&gt;
==Existing Sytems==&lt;br /&gt;
&lt;br /&gt;
The creators of Pownce have created an XML standard called oEmbed. This is a standalone XML representation of embeddable content, similar to a feed entry, but including additional fields for the host site (the publisher), and the exact code needed to include the content object in pages.&lt;br /&gt;
&lt;br /&gt;
oEmbed uses an XRDS endpoint, linked to from the content page, to provide the oEmbed representation of a resource.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
===Publishers===&lt;br /&gt;
&lt;br /&gt;
Publisher examples record both the content of the provided embed code, and also the whether that same information is present in the mark-up of the page.&lt;br /&gt;
&lt;br /&gt;
====YouTube====&lt;br /&gt;
&lt;br /&gt;
=====In Page=====&lt;br /&gt;
&lt;br /&gt;
* Video (object)&lt;br /&gt;
* Title&lt;br /&gt;
* Description&lt;br /&gt;
* HTML embed code (&amp;lt;input&amp;gt;)&lt;br /&gt;
* Permalink&lt;br /&gt;
* Author&lt;br /&gt;
** Name&lt;br /&gt;
** URL&lt;br /&gt;
* Site (Publisher)&lt;br /&gt;
* Rating&lt;br /&gt;
* Viewcount&lt;br /&gt;
&lt;br /&gt;
— http://uk.youtube.com/watch?v=zP4zaMvV__4&lt;br /&gt;
&lt;br /&gt;
=====Embed Code=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;object width=&amp;quot;425&amp;quot; height=&amp;quot;344&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://www.youtube.com/v/zP4zaMvV__4&amp;amp;hl=en&amp;amp;fs=1&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;allowFullScreen&amp;quot; value=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;embed src=&amp;quot;http://www.youtube.com/v/zP4zaMvV__4&amp;amp;hl=en&amp;amp;fs=1&amp;quot; &lt;br /&gt;
           type=&amp;quot;application/x-shockwave-flash&amp;quot;&lt;br /&gt;
           allowscriptaccess=&amp;quot;always&amp;quot;&lt;br /&gt;
           allowfullscreen=&amp;quot;true&amp;quot;&lt;br /&gt;
           width=&amp;quot;425&amp;quot;&lt;br /&gt;
           height=&amp;quot;344&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt;&lt;br /&gt;
&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Video URL&lt;br /&gt;
* Media Dimensions&lt;br /&gt;
&lt;br /&gt;
YouTube does not include any information about the video, author, licensing or source site in HTML. That content is all presented within the Flash object itselt.&lt;br /&gt;
&lt;br /&gt;
====Flickr====&lt;br /&gt;
&lt;br /&gt;
Flickr has two relevant pages; the photo page itself (which contains no explicit embed code) and the ‘All Photos’ page, which contains links to multiple sizes and example embed code.&lt;br /&gt;
&lt;br /&gt;
=====Photo Page Schema=====&lt;br /&gt;
&lt;br /&gt;
* Title&lt;br /&gt;
* Description&lt;br /&gt;
* Image (img)&lt;br /&gt;
* Author&lt;br /&gt;
* Publisher (site name)&lt;br /&gt;
* License&lt;br /&gt;
* Link to other sizes&lt;br /&gt;
* Page is the permalink&lt;br /&gt;
&lt;br /&gt;
— http://www.flickr.com/photos/benward/3189768143/&lt;br /&gt;
&lt;br /&gt;
=====‘All Sizes’ (embed page) schema=====&lt;br /&gt;
&lt;br /&gt;
* Image (at size)&lt;br /&gt;
* License&lt;br /&gt;
* Author&lt;br /&gt;
* HTML embed code&lt;br /&gt;
* Direct link to image&lt;br /&gt;
* Additional reuse rules (‘photo must be linked to the photo page’)&lt;br /&gt;
* Links to other sizes&lt;br /&gt;
* Link back to main image (permalink)&lt;br /&gt;
&lt;br /&gt;
— http://www.flickr.com/photos/benward/3189768143/sizes/l/&lt;br /&gt;
&lt;br /&gt;
=====Embed Code=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://www.flickr.com/photos/benward/3189768143/&amp;quot; title=&amp;quot;Fresh Baked by Ben Ward, on Flickr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;http://farm4.static.flickr.com/3398/3189768143_2ca7da4544_b.jpg&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;683&amp;quot; alt=&amp;quot;Fresh Baked&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Photo URL&lt;br /&gt;
* Photo Title&lt;br /&gt;
* Photo Dimensions&lt;br /&gt;
* Author name&lt;br /&gt;
* Publisher Name&lt;br /&gt;
* Photo permalink&lt;br /&gt;
&lt;br /&gt;
===Vimeo===&lt;br /&gt;
&lt;br /&gt;
====In Page===&lt;br /&gt;
* Title&lt;br /&gt;
* Video (content)&lt;br /&gt;
* Description&lt;br /&gt;
* Author&lt;br /&gt;
* Publisher (vimeo)&lt;br /&gt;
* Published Date&lt;br /&gt;
* Link to raw video&lt;br /&gt;
* Embed code — revealed by clicking a link within a flash movie. Not present with JavaScript disabled.&lt;br /&gt;
&lt;br /&gt;
====Embed Code====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;object width=&amp;quot;400&amp;quot; height=&amp;quot;225&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;allowfullscreen&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;allowscriptaccess&amp;quot; value=&amp;quot;always&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=2755105&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=0&amp;amp;amp;show_portrait=0&amp;amp;amp;color=FF0E0F&amp;amp;amp;fullscreen=1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;embed src=&amp;quot;http://vimeo.com/moogaloop.swf?clip_id=2755105&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=1&amp;amp;amp;show_byline=0&amp;amp;amp;show_portrait=0&amp;amp;amp;color=FF0E0F&amp;amp;amp;fullscreen=1&amp;quot; &lt;br /&gt;
           type=&amp;quot;application/x-shockwave-flash&amp;quot;&lt;br /&gt;
           allowfullscreen=&amp;quot;true&amp;quot;&lt;br /&gt;
            allowscriptaccess=&amp;quot;always&amp;quot;&lt;br /&gt;
            width=&amp;quot;400&amp;quot;&lt;br /&gt;
            height=&amp;quot;225&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/embed&amp;gt;&lt;br /&gt;
&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://vimeo.com/&amp;quot;&amp;gt;The Remnants&amp;lt;/a&amp;gt;&lt;br /&gt;
from &amp;lt;a href=&amp;quot;http://vimeo.com/johnaugust&amp;quot;&amp;gt;John August&amp;lt;/a&amp;gt;&lt;br /&gt;
on &amp;lt;a href=&amp;quot;http://vimeo.com&amp;quot;&amp;gt;Vimeo&amp;lt;/a&amp;gt;.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Video object&lt;br /&gt;
* Video dimensions&lt;br /&gt;
* Video title&lt;br /&gt;
* Permalink&lt;br /&gt;
* Publisher&lt;br /&gt;
** Name (Vimeo)&lt;br /&gt;
** URL&lt;br /&gt;
* Creator&lt;br /&gt;
** Name&lt;br /&gt;
** URL&lt;br /&gt;
&lt;br /&gt;
===Skitch===&lt;br /&gt;
* Publishes 5 different embed codes. Interrrresting.&lt;br /&gt;
&lt;br /&gt;
===Photobucket===&lt;br /&gt;
&lt;br /&gt;
===Consumers===&lt;br /&gt;
&lt;br /&gt;
Consumption of embedable content is spread throughout a number of different use cases:&lt;br /&gt;
&lt;br /&gt;
====Microblogging====&lt;br /&gt;
&lt;br /&gt;
=====Pownce=====&lt;br /&gt;
&lt;br /&gt;
[http://pownce.com Pownce] is the original pioneer of the &amp;lt;code&amp;gt;oembed&amp;lt;/code&amp;gt; standard. It takes a URL input for an external resource, and where supported embedable content is found, the embed is included with the link post.&lt;br /&gt;
&lt;br /&gt;
Pownce notes are already marked up with hAtom, and include embedded content within a class of &amp;lt;code&amp;gt;attachment&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition to the fields of hAtom, the embedded content includes:&lt;br /&gt;
&lt;br /&gt;
* Linking back to the publishing source&lt;br /&gt;
* Attribution to the embedded content creator&lt;br /&gt;
* Count of the times the content has been downloaded from this publisher&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;li id=&amp;quot;note4390327&amp;quot; class=&amp;quot;public-note hentry&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;note-contents&amp;quot;&amp;gt; &lt;br /&gt;
        &amp;lt;a href=&amp;quot;/ariel/&amp;quot;&amp;gt; &lt;br /&gt;
            &amp;lt;img src=&amp;quot;/profile_photos/a/r/i/ariel/304_medium.jpg&amp;quot; width=&amp;quot;48&amp;quot; height=&amp;quot;48&amp;quot; title=&amp;quot;Ariel Waldman&amp;quot; class=&amp;quot;user&amp;quot; /&amp;gt; &lt;br /&gt;
        	&amp;lt;em class=&amp;quot;pro-2&amp;quot;&amp;gt;Pro!&amp;lt;/em&amp;gt; &lt;br /&gt;
        &amp;lt;/a&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
        &amp;lt;p class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;em class=&amp;quot;note-type entry-title&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;a href=&amp;quot;/ariel/notes/4390327/&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;Public&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;/em&amp;gt; &lt;br /&gt;
            My favorite Pownce post from !&amp;lt;a href=&amp;quot;/leahculver/&amp;quot;&amp;gt;leahculver&amp;lt;/a&amp;gt;.&lt;br /&gt;
        &amp;lt;/p&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
        &amp;lt;div class=&amp;quot;attachment&amp;quot;&amp;gt;                &lt;br /&gt;
            &amp;lt;div&amp;gt; &lt;br /&gt;
                &amp;lt;a href=&amp;quot;http://flickr.com/photos/arielwaldman/3078507970/in/photostream/&amp;quot;&amp;gt; &lt;br /&gt;
                    &amp;lt;img src=&amp;quot;http://farm4.static.flickr.com/3210/3078507970_5811e41585_m.jpg&amp;quot; alt=&amp;quot;Pownce&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
                &amp;lt;/a&amp;gt; &lt;br /&gt;
            &amp;lt;/div&amp;gt; &lt;br /&gt;
                    &lt;br /&gt;
            &amp;lt;div class=&amp;quot;by-caption&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;photo by&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;a href=&amp;quot;http://www.flickr.com/photos/arielwaldman/&amp;quot; &amp;gt;arielwaldman&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt; &lt;br /&gt;
        &lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://flickr.com/photos/arielwaldman/3078507970/in/photostream/&amp;quot; class=&amp;quot;note-url&amp;quot;&amp;gt; &lt;br /&gt;
                flickr.com/photos/arielwaldman/30...&lt;br /&gt;
            &amp;lt;/a&amp;gt; &lt;br /&gt;
            &amp;lt;div class=&amp;quot;note-count&amp;quot;&amp;gt; &lt;br /&gt;
                &amp;lt;span id=&amp;quot;click-count-4390327&amp;quot;&amp;gt;(14 views)&amp;lt;/span&amp;gt;     &lt;br /&gt;
            &amp;lt;/div&amp;gt; &lt;br /&gt;
        &amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div class=&amp;quot;note-location fireeagle&amp;quot;&amp;gt; &lt;br /&gt;
            &amp;lt;span class=&amp;quot;locator&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/settings/fireeagle/&amp;quot;&amp;gt;Fire Eagle&amp;lt;/a&amp;gt;:&lt;br /&gt;
            &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;San Francisco, CA&amp;lt;/span&amp;gt; &lt;br /&gt;
            &amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;US&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt; &lt;br /&gt;
	&lt;br /&gt;
        &amp;lt;h4&amp;gt; &lt;br /&gt;
            &amp;lt;abbr class=&amp;quot;published&amp;quot; title=&amp;quot;1 day ago&amp;quot;&amp;gt;1 day ago&amp;lt;/abbr&amp;gt; &lt;br /&gt;
            &amp;lt;span class=&amp;quot;vcard author&amp;quot;&amp;gt; &lt;br /&gt;
                &amp;lt;a href=&amp;quot;/ariel/&amp;quot; class=&amp;quot;sender url&amp;quot;&amp;gt; &lt;br /&gt;
                    &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt; &lt;br /&gt;
                        Ariel Waldman					&lt;br /&gt;
                    &amp;lt;/span&amp;gt; &lt;br /&gt;
                 &amp;lt;/a&amp;gt; 				&lt;br /&gt;
            &amp;lt;/span&amp;gt; &lt;br /&gt;
	   &lt;br /&gt;
            &amp;lt;a href=&amp;quot;/ariel/notes/4390327/&amp;quot; class=&amp;quot;reply&amp;quot;&amp;gt;2  Replies &amp;lt;/a&amp;gt; &lt;br /&gt;
            &amp;lt;a href=&amp;quot;/ariel/notes/4390327/forward/&amp;quot; class=&amp;quot;forward&amp;quot;&amp;gt;Forward&amp;lt;/a&amp;gt; &lt;br /&gt;
        &amp;lt;/h4&amp;gt; &lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
''— Source of a full note, embedding a Flickr photograph, from http://pownce.com/benward''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;attachment&amp;quot;&amp;gt;     &lt;br /&gt;
    &amp;lt;div&amp;gt; &lt;br /&gt;
        &amp;lt;span&amp;gt;                     &lt;br /&gt;
            &amp;lt;object classid=&amp;quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&amp;quot;&lt;br /&gt;
             codebase=&amp;quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0&amp;quot;&lt;br /&gt;
             width=&amp;quot;300&amp;quot; height=&amp;quot;247&amp;quot; id=&amp;quot;jxT0ELP7az0&amp;quot; align=&amp;quot;middle&amp;quot;&amp;gt; &lt;br /&gt;
            &amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://www.youtube.com/v/jxT0ELP7az0&amp;quot; /&amp;gt; &lt;br /&gt;
            &amp;lt;embed src=&amp;quot;http://www.youtube.com/v/jxT0ELP7az0&amp;quot; quality=&amp;quot;high&amp;quot;&lt;br /&gt;
             width=&amp;quot;300&amp;quot; height=&amp;quot;247&amp;quot; name=&amp;quot;jxT0ELP7az0&amp;quot;&lt;br /&gt;
             align=&amp;quot;middle&amp;quot; allowScriptAccess=&amp;quot;sameDomain&amp;quot;&lt;br /&gt;
             type=&amp;quot;application/x-shockwave-flash&amp;quot; pluginspage=&amp;quot;http://www.adobe.com/go/getflashplayer&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/object&amp;gt; &lt;br /&gt;
        &amp;lt;/span&amp;gt; &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=jxT0ELP7az0&amp;quot; class=&amp;quot;note-url&amp;quot;&amp;gt;&lt;br /&gt;
        www.youtube.com/watch?v=jxT0ELP7a...&lt;br /&gt;
    &amp;lt;/a&amp;gt; &lt;br /&gt;
    &amp;lt;div class=&amp;quot;note-count&amp;quot;&amp;gt; &lt;br /&gt;
        &amp;lt;span id=&amp;quot;click-count-3949474&amp;quot;&amp;gt;(4 views)&amp;lt;/span&amp;gt; &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
''— Source snippet of a video note, showing the YouTube video attachment, from [http://pownce.com/BenWard/notes/4137829/]''&lt;br /&gt;
&lt;br /&gt;
=====Tumblr=====&lt;br /&gt;
&lt;br /&gt;
[http://tumblr.com Tumblr] is the defacto tumblelog application, encouraging users to post small snippet posts of text, as well as reposting images, audio, video, text quotes and URLs. The output of Tumblr varies depending on the theme the user uses, and can be customised. As such, the following documents the inputs used to publish content.&lt;br /&gt;
&lt;br /&gt;
* '''Text'''&lt;br /&gt;
** Title&lt;br /&gt;
** Text Content&lt;br /&gt;
* '''Photo'''&lt;br /&gt;
** Either the URL of a already hosted photograph, or an image binary upload&lt;br /&gt;
** Text Caption&lt;br /&gt;
** Click-through URL (e.g. linking a Flickr photo back to the source page)&lt;br /&gt;
* '''Quote'''&lt;br /&gt;
** Quote Text&lt;br /&gt;
** Source (text, also usable as a desciption)&lt;br /&gt;
* '''Link/URL'''&lt;br /&gt;
** Name (title)&lt;br /&gt;
** URL&lt;br /&gt;
** Description&lt;br /&gt;
* '''Chat (conversations)'''&lt;br /&gt;
** Title&lt;br /&gt;
** Dialogue (free text field, expects &amp;lt;code&amp;gt;My Name: This is my message&amp;lt;/code&amp;gt; format text)&lt;br /&gt;
* '''Audio'''&lt;br /&gt;
** Audio binary, or URL to externally hosted audio&lt;br /&gt;
** Text description&lt;br /&gt;
* '''Video'''&lt;br /&gt;
** URL for YouTube or Vimeo service videos, or paste custom embed code from any site.&lt;br /&gt;
** Text caption&lt;br /&gt;
&lt;br /&gt;
All post types include adding tags, setting the publication date, visibility (public/private), and the permalink slug.&lt;br /&gt;
&lt;br /&gt;
Tumblr provides a quite strictly structured input mechanism, but the ''video'' type is most relevant, as this accepts the code provided by any site. This microformat could allow it to accept any URL, beyond just YouTube and Vimeo for which it has implemented proprietary support.&lt;br /&gt;
&lt;br /&gt;
=====More to Document=====&lt;br /&gt;
&lt;br /&gt;
* Delicious&lt;br /&gt;
* Yahoo Search&lt;br /&gt;
* Google Search&lt;br /&gt;
* Facebook's ‘Compose New Message’ interface&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=html5&amp;diff=40705</id>
		<title>html5</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=html5&amp;diff=40705"/>
		<updated>2009-09-04T21:25:08Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* New features in HTML5 */ More HTML5 equivalents&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Microformats in HTML 5&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''This page is to document '''future''' use of microformats in [http://www.w3.org/html/wg/html5 HTML 5]. None of the items documented are supported now, and may change upon proper development within the microformats community, or changes in the HTML 5 specification. This page is to track HTML5 enabled enhancements to microformats, and issues that HTML5 raises. It may be used to track issues which we need to push back into the HTML 5 development process.''&lt;br /&gt;
&lt;br /&gt;
If there are things that Microformats would like to mark up that aren't handled by HTML5 explicitly, please let the WHATWG know, so we can improve HTML5. This is how &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; came to be, for instance.&lt;br /&gt;
&lt;br /&gt;
==New features in HTML5==&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element for representing date times'''. In HTML5, the machine form of datetimes can be represented natively. It should be possible to replace the date-time design pattern with native HTML.&lt;br /&gt;
** &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; takes an optional &amp;lt;code&amp;gt;pubdate&amp;lt;/code&amp;gt; attribute, to indicate the publication date of an &amp;lt;code&amp;gt;article&amp;lt;/code&amp;gt;. Synonymous with [[hAtom]] &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt;, may imply [[hAtom]] &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt;, may imply [[hReview]] &amp;lt;code&amp;gt;dtreviewed&amp;lt;/code&amp;gt;, may imply [[hListing]] &amp;lt;code&amp;gt;dtlisted&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''&amp;lt;code&amp;gt;article&amp;lt;/code&amp;gt;''' element for major, independent compositions of content within a page. Perhaps synonymous with [[hAtom]] &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt;. Could be parsed as &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt; within explicit &amp;lt;code&amp;gt;hfeed&amp;lt;/code&amp;gt; blocks?&lt;br /&gt;
* '''&amp;lt;code&amp;gt;data-&amp;lt;/code&amp;gt; naming convention for tag attributes'''. the draft specification states that any attribute that starts with &amp;quot;data-&amp;quot; will be treated as a storage area for private data.&lt;br /&gt;
** Note that the data-* stuff is explicitly 'not' for Microformats, at least not Microformats that ever want to be handled natively by the browser. Those attributes are defined in such a way that browsers will never do anything special with them, ever. They are intended for script authors to have a space in which they can play without ever clashing with anything the browser does.&lt;br /&gt;
* '''[[microdata]]'''. HTML5 provides a set of attributes and associated DOM APIs for extracting data from web pages.&lt;br /&gt;
** &amp;lt;code&amp;gt;itemprop&amp;lt;/code&amp;gt; attribute is a more specific version of &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;, for field names&lt;br /&gt;
** &amp;lt;code&amp;gt;subject&amp;lt;/code&amp;gt; attribute allows semantically linking within the page. Conceptually similar to the [[include-pattern]].&lt;br /&gt;
** &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; attribute on the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element can be used to invisibly include data. Conceptually similar to the [[value-class-pattern]]. &lt;br /&gt;
** &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; attribute identifies blocks to be marked as structure data. Conceptually similar to the [[mfo]] brainstorming?&lt;br /&gt;
&lt;br /&gt;
== Current microformat compatibility ==&lt;br /&gt;
There seems to be no issue with current implementation of the following microformats in HTML 5:&lt;br /&gt;
* [[hcard]]&lt;br /&gt;
* [[xfn]]&lt;br /&gt;
&lt;br /&gt;
== Requests ==&lt;br /&gt;
* &amp;quot;how to use with HTML5&amp;quot; sections that include (a) microformats examples that use [[HTML5]], and (b) microformats parsing details that specify what to do (if anything special is required) with HTML5 elements (e.g. how to parse the &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element for dates and times for microformats). See (and add to if necessary) :&lt;br /&gt;
** [[hcard-brainstorming#how_to_use_with_HTML5|hCard brainstorming - how to use with HTML5]]&lt;br /&gt;
** [[hcalendar-brainstorming#how_to_use_with_HTML5|hCalendar brainstorming - how to use with HTML5]] e.g. hCalendar with the &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element&lt;br /&gt;
** [[citation-brainstorming#how_to_use_with_HTML5|citation brainstorming - how to use with HTML5]]&lt;br /&gt;
** if nothing special is required for HTML5, then after performing the analysis, that should be noted as well, for the purpose of clarity.&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class='discussion issues'&amp;gt;&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; attribute has been removed'''. In HTML5, &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; are no-longer paired, and the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute nolonger describes the direction of a relationship. Microformats which use &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; will need to use &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
** Or something like data-rev=&amp;quot;vote-for&amp;quot;&lt;br /&gt;
*** As above, &amp;lt;code&amp;gt;data-&amp;lt;/code&amp;gt; attributes are for application-context functionality, ''not'' shared vocabularies. Further, the HTML5 specification makes &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; the correct attribute to use, regardless of direction, through the changed specification. --[[User:BenWard|BenWard]] 17:53, 12 May 2009 (UTC)&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt; attribute has been removed'''. In HTML, the &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt; attribute from the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; has been removed, with no direct replacement. This causes issues for GRDDL support. It's been suggested that profile URLs be represented in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements instead, or even as a custom HTTP header. See [[grddl]] and [[profile-uris]]&lt;br /&gt;
* '''Microdata &amp;lt;code&amp;gt;itemprop&amp;lt;/code&amp;gt; duplicates &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; data'''. the new attribute itemprop is designed to hold some meaningful data about an element, but class already exists to hold this data. Unsure of reasons why itemprop required?&lt;br /&gt;
** This is because microdata is designed to be generically parsable, even when the parser does not understand the vocabulary. As such, property names have to be on an explicit attribute, not shared with other, non-data classnames. --[[User:BenWard|BenWard]] 21:12, 4 September 2009 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[HTML3]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=html5&amp;diff=40704</id>
		<title>html5</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=html5&amp;diff=40704"/>
		<updated>2009-09-04T21:12:26Z</updated>

		<summary type="html">&lt;p&gt;BenWard: /* Issues */ Explain why itemprop not class&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Microformats in HTML 5&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''This page is to document '''future''' use of microformats in [http://www.w3.org/html/wg/html5 HTML 5]. None of the items documented are supported now, and may change upon proper development within the microformats community, or changes in the HTML 5 specification. This page is to track HTML5 enabled enhancements to microformats, and issues that HTML5 raises. It may be used to track issues which we need to push back into the HTML 5 development process.''&lt;br /&gt;
&lt;br /&gt;
If there are things that Microformats would like to mark up that aren't handled by HTML5 explicitly, please let the WHATWG know, so we can improve HTML5. This is how &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; came to be, for instance.&lt;br /&gt;
&lt;br /&gt;
==New features in HTML5==&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element for representing date times'''. In HTML5, the machine form of datetimes can be represented natively. It should be possible to replace the date-time design pattern with native HTML.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;data-&amp;lt;/code&amp;gt; naming convention for tag attributes'''. the draft specification states that any attribute that starts with &amp;quot;data-&amp;quot; will be treated as a storage area for private data.&lt;br /&gt;
** Note that the data-* stuff is explicitly 'not' for Microformats, at least not Microformats that ever want to be handled natively by the browser. Those attributes are defined in such a way that browsers will never do anything special with them, ever. They are intended for script authors to have a space in which they can play without ever clashing with anything the browser does.&lt;br /&gt;
* '''[[microdata]]'''. HTML5 provides a set of attributes and associated DOM APIs for extracting data from web pages.&lt;br /&gt;
** &amp;lt;code&amp;gt;itemprop&amp;lt;/code&amp;gt; attribute is a more specific version of &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;, for field names&lt;br /&gt;
** &amp;lt;code&amp;gt;subject&amp;lt;/code&amp;gt; attribute allows semantically linking within the page. Conceptually similar to the [[include-pattern]].&lt;br /&gt;
** &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; attribute on the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element can be used to invisibly include data. Conceptually similar to the [[value-class-pattern]]. &lt;br /&gt;
** &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; attribute identifies blocks to be marked as structure data. Conceptually similar to the [[mfo]] brainstorming?&lt;br /&gt;
&lt;br /&gt;
== Current microformat compatibility ==&lt;br /&gt;
There seems to be no issue with current implementation of the following microformats in HTML 5:&lt;br /&gt;
* [[hcard]]&lt;br /&gt;
* [[xfn]]&lt;br /&gt;
&lt;br /&gt;
== Requests ==&lt;br /&gt;
* &amp;quot;how to use with HTML5&amp;quot; sections that include (a) microformats examples that use [[HTML5]], and (b) microformats parsing details that specify what to do (if anything special is required) with HTML5 elements (e.g. how to parse the &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element for dates and times for microformats). See (and add to if necessary) :&lt;br /&gt;
** [[hcard-brainstorming#how_to_use_with_HTML5|hCard brainstorming - how to use with HTML5]]&lt;br /&gt;
** [[hcalendar-brainstorming#how_to_use_with_HTML5|hCalendar brainstorming - how to use with HTML5]] e.g. hCalendar with the &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element&lt;br /&gt;
** [[citation-brainstorming#how_to_use_with_HTML5|citation brainstorming - how to use with HTML5]]&lt;br /&gt;
** if nothing special is required for HTML5, then after performing the analysis, that should be noted as well, for the purpose of clarity.&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class='discussion issues'&amp;gt;&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; attribute has been removed'''. In HTML5, &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; are no-longer paired, and the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute nolonger describes the direction of a relationship. Microformats which use &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; will need to use &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
** Or something like data-rev=&amp;quot;vote-for&amp;quot;&lt;br /&gt;
*** As above, &amp;lt;code&amp;gt;data-&amp;lt;/code&amp;gt; attributes are for application-context functionality, ''not'' shared vocabularies. Further, the HTML5 specification makes &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; the correct attribute to use, regardless of direction, through the changed specification. --[[User:BenWard|BenWard]] 17:53, 12 May 2009 (UTC)&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt; attribute has been removed'''. In HTML, the &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt; attribute from the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; has been removed, with no direct replacement. This causes issues for GRDDL support. It's been suggested that profile URLs be represented in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements instead, or even as a custom HTTP header. See [[grddl]] and [[profile-uris]]&lt;br /&gt;
* '''Microdata &amp;lt;code&amp;gt;itemprop&amp;lt;/code&amp;gt; duplicates &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; data'''. the new attribute itemprop is designed to hold some meaningful data about an element, but class already exists to hold this data. Unsure of reasons why itemprop required?&lt;br /&gt;
** This is because microdata is designed to be generically parsable, even when the parser does not understand the vocabulary. As such, property names have to be on an explicit attribute, not shared with other, non-data classnames. --[[User:BenWard|BenWard]] 21:12, 4 September 2009 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[HTML3]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=category-brainstorming&amp;diff=40601</id>
		<title>category-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=category-brainstorming&amp;diff=40601"/>
		<updated>2009-09-01T01:16:27Z</updated>

		<summary type="html">&lt;p&gt;BenWard: New brainstorming around the area of object categorization. Proposal for identifying/parsing language categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; is a field used in many microformats, originally taken from [[hCard]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Type name: CATEGORIES&lt;br /&gt;
Type purpose: To specify application category information about the vCard.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
— &amp;lt;cite&amp;gt;[http://www.ietf.org/rfc/rfc2426.txt RFC2426]&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is closely related to [[rel-tag]], but has no dependency on URL schemes, it simply marks up the inner-text as a category keyword.&lt;br /&gt;
&lt;br /&gt;
Brainstorming on this page may be applicable to parsing of &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; and/or [[rel-tag]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Supported Languages==&lt;br /&gt;
&lt;br /&gt;
An object — a person, or item (in a [[hProduct]] or [[hListing]] context) — may be consumable in multiple languages. A person may communicate in multiple languages, a set of self-assembly shelves may come with an instruction manual in multiple languages, a web application (also a product) can be localized to support use in multiple languages.&lt;br /&gt;
&lt;br /&gt;
In a loose form, supported language is a form of categorization, but it is useful to filter by language separately from other tags/categories (‘Only show me people that speak languages I speak’, ‘Only show applications available in my language’).&lt;br /&gt;
&lt;br /&gt;
Language on the web are indicated in multiple forms on the web:&lt;br /&gt;
&lt;br /&gt;
* Names (e.g. ‘Français’, ‘Deutsch’, ‘English (British)’&lt;br /&gt;
* Abbreviated local names ‘En’, ‘Fr’, ‘De’&lt;br /&gt;
* Abbreviated country names: ‘GB’, ‘UK’, ‘ES’&lt;br /&gt;
* ''Local'' names (e.g. ‘French’, ‘German’, ‘British English’, ‘Dutch’)&lt;br /&gt;
* ISO 639 language codes (e.g. 'en-gb', 'en', 'fr', 'de')&lt;br /&gt;
&lt;br /&gt;
HTML already has a &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute for marking up actual content. This uses ISO 639 codes.&lt;br /&gt;
&lt;br /&gt;
Categorizing languages has the following requirements:&lt;br /&gt;
&lt;br /&gt;
* Differentiate from other types of category&lt;br /&gt;
* Allow the language to be presented in local name form&lt;br /&gt;
* Allow the language itself to be ascertained reliably and interoperably&lt;br /&gt;
&lt;br /&gt;
===Proposal 1: &amp;lt;code&amp;gt;class='category language'&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
* Use an additional class-name &amp;lt;code&amp;gt;language&amp;lt;/code&amp;gt; to indicate that a category is marking up a supported language for the object.&lt;br /&gt;
* &amp;lt;code&amp;gt;class=language&amp;lt;/code&amp;gt; also instructs parsers to read the ISO code from the &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute of the element, in place of the inner text, where present.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;category language&amp;quot; lang=&amp;quot;en-gb&amp;quot;&amp;gt;English (British)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;category language&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;English (American)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;category language&amp;quot; lang=&amp;quot;fr&amp;quot;&amp;gt;Français&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;category language&amp;quot; lang=&amp;quot;de&amp;quot;&amp;gt;Deutsch&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HTML, the strings ''should'' be marked up with a lang attribute to ensure that the local named languages are pronounced correctly by screen readers (for example).&lt;br /&gt;
&lt;br /&gt;
With rel-tag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;&amp;lt;a class='language' rel='tag' href='/apps/lang/en' lang='en'&amp;gt;English&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;&amp;lt;a class='language' rel='tag' href='/apps/lang/en-gb' lang='en-gb'&amp;gt;English (British)&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;&amp;lt;a class='language' rel='tag' href='/apps/lang/fr' lang='fr'&amp;gt;Français&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;&amp;lt;a class='language' rel='tag' href='/apps/lang/de' lang='de'&amp;gt;Deutsch&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the URL scheme is shown to also use ISO codes. This may not be the case in production environments (they may choose to use &amp;lt;code&amp;gt;/apps/lang/english&amp;lt;/code&amp;gt;, for example), so parsers look explicitly for language information should be instructed to again look for for the &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute where rel-tag is used in combination with class-language.&lt;br /&gt;
--[[User:BenWard|BenWard]] 01:16, 1 September 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-tag-spaces&amp;diff=40600</id>
		<title>rel-tag-spaces</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-tag-spaces&amp;diff=40600"/>
		<updated>2009-09-01T00:44:20Z</updated>

		<summary type="html">&lt;p&gt;BenWard: Document Last.FM tagspace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of &amp;quot;name spaces&amp;quot; suitable for use in tagging, and by the [[rel-tag]] microformat. Please feel free to add to it, in alphabetical order.&lt;br /&gt;
&lt;br /&gt;
==A9==&lt;br /&gt;
*One word - http://a9.com/microformats&lt;br /&gt;
*Multi-word - http://a9.com/source+code (plus sign)&lt;br /&gt;
&lt;br /&gt;
==Amazon.com==&lt;br /&gt;
*One word - http://www.amazon.com/tag/horror&lt;br /&gt;
*Multi-word - http://www.amazon.com/tag/science%20fiction (%20, browsers will auto-encode a space into this)&lt;br /&gt;
&lt;br /&gt;
:(note - not valid for amazon.co.uk)&lt;br /&gt;
&lt;br /&gt;
==del.icio.us==&lt;br /&gt;
*One word - http://del.icio.us/tag/dog&lt;br /&gt;
*Multi-word - http://del.icio.us/tag/german_shepherd (underscore)&lt;br /&gt;
&lt;br /&gt;
==Discogs==&lt;br /&gt;
(for musical artists)&lt;br /&gt;
*One word - http://www.discogs.com/artist/Genesis&lt;br /&gt;
*Multi-word - http://www.discogs.com/artist/Jimi+Hendrix (plus sign)&lt;br /&gt;
&lt;br /&gt;
==eBay==&lt;br /&gt;
*One word - http://search.ebay.com/door&lt;br /&gt;
*Multi-word - http://search.ebay.com/door-mat (hyphen)&lt;br /&gt;
*International - http://search.ebay.co.uk/door (etc.)&lt;br /&gt;
&lt;br /&gt;
==Flickr==&lt;br /&gt;
*One word - http://www.flickr.com/photos/tags/key&lt;br /&gt;
*Multi-word. Flickr allows all of the following, and treats them as &amp;quot;keyhole&amp;quot;:&lt;br /&gt;
**http://www.flickr.com/photos/tags/key_hole (underscore)&lt;br /&gt;
**http://www.flickr.com/photos/tags/key-hole (hyphen)&lt;br /&gt;
**http://www.flickr.com/photos/tags/key+hole (plus)&lt;br /&gt;
**http://www.flickr.com/photos/tags/key=hole (equals)&lt;br /&gt;
**http://www.flickr.com/photos/tags/key*hole (asterisk)&lt;br /&gt;
**http://www.flickr.com/photos/tags/key.hole (stop)&lt;br /&gt;
&lt;br /&gt;
[http://weblog.terrellrussell.com/2007/06/clean-and-store-your-raw-tags-like-flickr/ More on this &amp;quot;tag-cleaning&amp;quot; behavior] and [http://www.flickr.com/services/api/misc.tags.html Flickr's note on tag-cleaning].&lt;br /&gt;
&lt;br /&gt;
== HashTags ==&lt;br /&gt;
&lt;br /&gt;
Tags for Twitter posts, but also suitable as a general target for tagged links:&lt;br /&gt;
&lt;br /&gt;
* One word - http://hashtags.org/tag/microformats/&lt;br /&gt;
* Multi-word - tbc&lt;br /&gt;
&lt;br /&gt;
== ISBN ==&lt;br /&gt;
&lt;br /&gt;
For [[isbn|ISBN]] codes, e.g. 0-9507881-2-0:&lt;br /&gt;
&lt;br /&gt;
*Talis (note: no hyphens)&lt;br /&gt;
** ISBN-10 - http://cenote.talis.com/isbn/0950788120&lt;br /&gt;
** ISBN-13 - http://cenote.talis.com/isbn/9780950788128&lt;br /&gt;
*Wikipedia&lt;br /&gt;
** ISBN-10 - http://en.wikipedia.org/wiki/Special:Booksources/0950788120 or http://en.wikipedia.org/wiki/Special:Booksources/0-9507881-2-0&lt;br /&gt;
** ISBN-13 - http://en.wikipedia.org/wiki/Special:Booksources/9780950788128 or http://en.wikipedia.org/wiki/Special:Booksources/978-09507881-2-8&lt;br /&gt;
*WorldCat&lt;br /&gt;
** ISBN-10 - http://worldcat.org/isbn/0950788120 or http://worldcat.org/isbn/0-9507881-2-0&lt;br /&gt;
** ISBN-13 - http://worldcat.org/isbn/9780950788128 or http://worldcat.org/isbn/978-0950788128&lt;br /&gt;
&lt;br /&gt;
== ISSN ==&lt;br /&gt;
&lt;br /&gt;
For [[isbn|ISSN]] codes, e.g. 0007-0335&lt;br /&gt;
*WorldCat - http://worldcat.org/issn/0007-0335 (hyphen mandatory)&lt;br /&gt;
&lt;br /&gt;
==Journa-list==&lt;br /&gt;
*One word - http://www.journa-list.com/tags/letters&lt;br /&gt;
*Multi-word - http://www.journa-list.com/tags/royal+mail (plus sign)&lt;br /&gt;
&lt;br /&gt;
==Last.FM==&lt;br /&gt;
* One word - http://last.fm/music/Radiohead&lt;br /&gt;
* One word - http://last.fm/music/Radiohead/Amnesiac&lt;br /&gt;
* Multi word - http://last.fm/music/Florence+and+the+Machine (plus sign separator)&lt;br /&gt;
&lt;br /&gt;
==Technorati==&lt;br /&gt;
*One word - http://technorati.com/tag/cheese&lt;br /&gt;
*Multi-word - http://technorati.com/tag/apple+pie (plus sign)&lt;br /&gt;
&lt;br /&gt;
==Wikipedia==&lt;br /&gt;
*One word - http://en.wikipedia.org/wiki/sugar&lt;br /&gt;
*Multi-word - http://en.wikipedia.org/wiki/brown_sugar (underscore)&lt;br /&gt;
&lt;br /&gt;
===Issues (Wikipedia)===&lt;br /&gt;
*Case sensitivity (http://en.wikipedia.org/wiki/Perry_Barr works; http://en.wikipedia.org/wiki/perry_barr does not)&lt;br /&gt;
*Caution should be exercised when using Wikipedia as a name-space. For example, an article about Birmingham, Alabama, tagged with a link to http://en.wikipedia.org/wiki/Birmingham would link to an article about Birmingham, England.&lt;br /&gt;
&lt;br /&gt;
==Wikitravel==&lt;br /&gt;
For place names.&lt;br /&gt;
*One word - http://wikitravel.org/en/London&lt;br /&gt;
*Multi-word - http://wikitravel.org/en/East_Grinstead (underscore)&lt;br /&gt;
&lt;br /&gt;
===Issues  (Wikitravel)===&lt;br /&gt;
*A tag using, e.g. http://wikitravel.org/en/Newcastle will link to a disambiguation page.&lt;br /&gt;
&lt;br /&gt;
==Yedda==&lt;br /&gt;
For Questions &amp;amp; Answers:&lt;br /&gt;
*One word - http://yedda.com/questions/tags/technology&lt;br /&gt;
*Multi-word - http://yedda.com/questions/tags/home+improvement (plus sign)&lt;br /&gt;
&lt;br /&gt;
For people (by interest):&lt;br /&gt;
*One word - http://yedda.com/questions/tags/technology&lt;br /&gt;
*Multi-word - http://yedda.com/people/tags/web+2.0 (plus sign)&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
{{rel-tag-related-pages}}&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-licence&amp;diff=40587</id>
		<title>rel-licence</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-licence&amp;diff=40587"/>
		<updated>2009-08-31T21:30:10Z</updated>

		<summary type="html">&lt;p&gt;BenWard: en-gb redirect for License/Licence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[rel-license]]&lt;/div&gt;</summary>
		<author><name>BenWard</name></author>
	</entry>
</feed>