<?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=VoxPelli</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=VoxPelli"/>
	<link rel="alternate" type="text/html" href="https://microformats.org/wiki/Special:Contributions/VoxPelli"/>
	<updated>2026-05-10T05:06:34Z</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=65659</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=65659"/>
		<updated>2016-07-13T14:34:44Z</updated>

		<summary type="html">&lt;p&gt;VoxPelli: /* Parse language information */ Adding link to github issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats2 parsing brainstorming&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is for brainstorming, discussion, and other questions and explorations about [[microformats2]] parsing.&lt;br /&gt;
&lt;br /&gt;
For the microformats2 parsing algorithm, see:&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
For filing issues / problems with microformats2-parsing, see:&lt;br /&gt;
* [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Parse language information ==&lt;br /&gt;
Raised by [[User:VoxPelli|VoxPelli]] 18:04, 23 July 2015 (UTC)&lt;br /&gt;
* 2016-060: Update: and parse &amp;quot;id&amp;quot; attribute. [[User:Tantek|Tantek]] 16:39, 29 February 2016 (UTC) (see Additionally below)&lt;br /&gt;
* 2016-07-13: Update: created [https://github.com/microformats/microformats2-parsing/issues/3 GitHub issue] for this brainstorm [[User:VoxPelli|VoxPelli]] 14:34, 13 July 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
Currently there’s no way to tell the language of parsed microformats even if those microformats has been marked up with HTML &amp;quot;lang&amp;quot;-attributes.&lt;br /&gt;
&lt;br /&gt;
There are examples in the wild of people marking up pages in such a way:&lt;br /&gt;
&lt;br /&gt;
* [http://voxpelli.com/ VoxPelli.com] has a &amp;quot;lang&amp;quot;-attribute on the h-entry of his [http://voxpelli.com/2011/03/sista-dagen-p-good-old/ swedish articles] to signify that the article is swedish even though the rest of the site is english.&lt;br /&gt;
* Stephanie [http://climbtothestars.org/archives/2013/09/17/basic-bilingual-1-0-plugin-for-wordpress-blog-in-more-than-one-language/ uses a WordPress plugin] that adds summaries of other languages at the start of her content.&lt;br /&gt;
&lt;br /&gt;
Proposal is to add a new &amp;quot;lang&amp;quot; keyword to h-* and e-* objects so that the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;sv&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;En svensk titel&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;En svensk titel&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;With an english summary&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Och svensk huvudtext&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;
&lt;br /&gt;
This was [http://indiewebcamp.com/irc/2015-07-23#t1437667712078 brainstormed on the IndieWebCamp IRC-channel] where the mentioned example came up.&lt;br /&gt;
&lt;br /&gt;
* Pull request for implementation in microformat-node added 2015-07-23 https://github.com/glennjones/microformat-node/pull/23&lt;br /&gt;
** Closed 2015-09-08 because the library has changed and parsing is now handled by microformat-shiv. New issue opened there: https://github.com/glennjones/microformat-shiv/issues/22&lt;br /&gt;
* Issue around implementation in php-mf2 added 2016-05-07 https://github.com/indieweb/php-mf2/issues/96&lt;br /&gt;
&lt;br /&gt;
Additionally: consider the same for &amp;quot;id&amp;quot; attributes (use-case: rel=feed local discovery of a nested h-feed on the home page), specifically, parsing the first instance of any &amp;quot;id&amp;quot; attribute (ignoring latter duplicate id attribute values on any subsequent elements).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And alternatively: consider parsing as &amp;quot;html-id&amp;quot; and &amp;quot;html-lang&amp;quot; prefixed properties in the parsed result, e.g.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;sv&amp;quot; id=&amp;quot;postfrag123&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;En svensk titel&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;html-id&amp;quot;: &amp;quot;postfrag123&amp;quot;,&lt;br /&gt;
  &amp;quot;html-lang&amp;quot;: &amp;quot;sv&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;En svensk titel&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html-lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;With an english summary&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Och svensk huvudtext&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;
&lt;br /&gt;
=== Language inheritance ===&lt;br /&gt;
&lt;br /&gt;
If the &amp;quot;lang&amp;quot; attribute is not specified for a particular element, it is inherited from the nearest parent (or from the HTTP Content-Language header)&lt;br /&gt;
&lt;br /&gt;
HTML5: https://www.w3.org/TR/html5/dom.html#the-lang-and-xml:lang-attributes&amp;lt;br&amp;gt;&lt;br /&gt;
HTML4: https://www.w3.org/TR/html4/struct/dirlang.html#h-8.1.2&lt;br /&gt;
&lt;br /&gt;
Proposal: Determine and include the inherited &amp;quot;lang&amp;quot; value on *every* microformat object that directly specifies a lang or that has an ancestor that does, e.g. if &amp;amp;lt;html lang=&amp;quot;en&amp;quot;&amp;amp;gt;, then every object in the output will have &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Pronouns in different languages ===&lt;br /&gt;
&lt;br /&gt;
Language is also useful context when defining [[pronouns]], discussed a bit here[https://github.com/idno/Known/pull/1426#issuecomment-217626923].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;he&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-x-pronoun-possessive&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would parse as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;x-pronoun-nominative&amp;quot;: [&amp;quot;he&amp;quot;],&lt;br /&gt;
    &amp;quot;x-pronoun-possessive&amp;quot;: [&amp;quot;him&amp;quot;],&lt;br /&gt;
    &amp;quot;x-pronoun-oblique&amp;quot;: [&amp;quot;his&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It could also be useful to specify multiple languages within a single h-card (pardon me if I butcher Swedish pronouns)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;en&amp;quot; class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;he&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;en&amp;quot; class=&amp;quot;p-x-pronoun-possessive&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;en&amp;quot; class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;sv&amp;quot; class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;han&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;sv&amp;quot; class=&amp;quot;p-x-pronoun-possessive&amp;quot;&amp;gt;hans&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;sv&amp;quot; class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;honom&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which might parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;x-pronoun-nominative&amp;quot;: [{&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;he&amp;quot;}, {&amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;han&amp;quot;}],&lt;br /&gt;
    &amp;quot;x-pronoun-possessive&amp;quot;: [{&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;him&amp;quot;}, {&amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;hans&amp;quot;}],&lt;br /&gt;
    &amp;quot;x-pronoun-oblique&amp;quot;: [{&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;his&amp;quot;}, {&amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;honom&amp;quot;}]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively, we could introduce a new microformat h-x-pronoun to wrap a set of pronouns&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-x-pronoun h-x-pronoun&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-nominative&amp;quot;&amp;gt;he&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-possessive&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-oblique&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-x-pronoun h-x-pronoun&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-nominative&amp;quot;&amp;gt;han&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-possessive&amp;quot;&amp;gt;hans&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-oblique&amp;quot;&amp;gt;honom&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;
&lt;br /&gt;
&lt;br /&gt;
parsed as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;x-pronoun&amp;quot;: [{&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-x-pronoun&amp;quot;],&lt;br /&gt;
      &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;nominative&amp;quot;: [&amp;quot;he&amp;quot;],&lt;br /&gt;
        &amp;quot;possessive&amp;quot;: [&amp;quot;him&amp;quot;],&lt;br /&gt;
        &amp;quot;oblique&amp;quot;: [&amp;quot;his&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    }, {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-x-pronoun&amp;quot;],&lt;br /&gt;
      &amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;,&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;nominative&amp;quot;: [&amp;quot;han&amp;quot;],&lt;br /&gt;
        &amp;quot;possessive&amp;quot;: [&amp;quot;hans&amp;quot;],&lt;br /&gt;
        &amp;quot;oblique&amp;quot;: [&amp;quot;honom&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Discussion:&lt;br /&gt;
* [[User:Kylewm|Kylewm]] Including the &amp;quot;lang&amp;quot; attribute in h- and e- properties makes a ton of sense to me.&lt;br /&gt;
* [[User:Kylewm|Kylewm]] I like the idea of introducing an h-x-pronoun container that can define all the different pronoun forms for a particular language&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Canonicalization of datetime output ==&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
It would be useful to choose a (more) uniform output format for datetimes to make it easier for users of the parser to consume datetimes. Microformats2 parsers already do sophisticated pattern matching to recognize date vs. time vs. datetimes, so converting this to any specific format should not add overhead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Specifically: &lt;br /&gt;
* Choose either 'T' or space as the date/time separator.&lt;br /&gt;
** Prefer space as it is more human friendly/readable, which matters even for syntaxes/formats, as human still develop, debug them. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* Choose either +XXYY or +XX:YY as the timezone specification (and convert 'Z' to +0000).&lt;br /&gt;
** Would appreciate some study / input here as to which timezone offset syntax is more human friendly. I lean slightly toward +/-NNNN (without the colon) because in the context of seeing a time, leaving out the colon makes it less likely the offset will be confused for a time. E.g. &amp;quot;07:00-08:00&amp;quot; looks like 7-8am, even if it meant 07:00 in PST. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** Space is fine - consensus [[2015-01-20]] meetup.&lt;br /&gt;
* Parsers should ''not'' attempt make datetimes more exact than specified. They should not add time, seconds, or timezone if omitted in the original. [[User:Kylewm|Kylewm]] 04:02, 14 May 2014 (UTC)&lt;br /&gt;
** Agreed. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** or month, day per Tom Morris&lt;br /&gt;
** consensus [[2015-01-20]] meetup&lt;br /&gt;
&lt;br /&gt;
* Counterpoint: PHP's builtin date parsing does not require strict formatting. And the equivalent functionality for Python is provided by the widely used python-dateutil library. [[User:Kylewm|Kylewm]] 19:02, 14 May 2014 (UTC)&lt;br /&gt;
** However we cannot (must not) depend on either PHP or Python's &amp;quot;smart&amp;quot; &amp;quot;fixing&amp;quot; or Postelian &amp;quot;liberal handling&amp;quot;, or any other language/framework's for that matter, as they all differ in how &amp;quot;intelligent&amp;quot; they are. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhaps just provide a guideline for these based on the above consensus.&lt;br /&gt;
&lt;br /&gt;
== Add meta http-equiv to microformats2 parsing model ==&lt;br /&gt;
Status: disagreement, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
Similar to document level parsing of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, it makes sense simultaneously to parse &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv&amp;amp;gt;&amp;lt;/code&amp;gt; elements, perhaps treating &amp;quot;Status&amp;quot; in a special way (only using first number (sequence of digits) for its &amp;quot;value&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Use case: IndieWeb &amp;quot;deleted&amp;quot; indication inline in content for static file services that don't support HTTP return codes.&lt;br /&gt;
* http://indiewebcamp.com/deleted#HTML_meta_http-equiv_for_status&lt;br /&gt;
&lt;br /&gt;
HTTP Header example:&lt;br /&gt;
* &amp;lt;samp&amp;gt;Content-Type: text/html; charset=utf-8&amp;lt;/samp&amp;gt;&lt;br /&gt;
HTML equivalent: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related:&lt;br /&gt;
* https://www.w3.org/International/O-HTTP-charset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Interesting thought. Are you suggesting a top level &amp;quot;http-equivs:&amp;quot; collection similar to &amp;quot;rels:&amp;quot; in the parsed output? Should we consider &amp;quot;metas:&amp;quot; instead or in addition? [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* What's the use case for this? Also, http-equiv on its own is useless. http-equiv is only a supplement to the data stored in headers. And headers aren't always there: what happens in the context of someone debugging a page who pastes the source into the textarea of an mf2 parser? Without a compelling use case for including headers (and then over-riding some of them with http-equivs), I'm not sure why an implementor want to do this. —[[User:TomMorris|Tom Morris]] 00:25, 8 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. from https://gist.github.com/aaronpk/10297489&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Status&amp;quot; content=&amp;quot;410 GONE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [],&lt;br /&gt;
 &amp;quot;rels&amp;quot;: {},&lt;br /&gt;
 &amp;quot;http&amp;quot;: {&lt;br /&gt;
 &amp;quot;status&amp;quot;: 410&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Maybe make this an optional pass in the parser? - Tom Morris [[2015-01-20]]&lt;br /&gt;
* For now, don't bother with metas until someone provides a use-case. Tom Morris&lt;br /&gt;
* Agreed on both counts. [[User:Tantek|Tantek]] 06:56, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MIME type==&lt;br /&gt;
See [[microformats2-mime-type]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation Parsing Notes==&lt;br /&gt;
Note: most of these need to be written up as separate [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&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;
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;
** *If* there is even some reasonable data on actual use of the &amp;quot;pubdate&amp;quot; attribute (I don't think there is, frankly, especially with the removal of the algorithm to produce Atom from HTML5), then we could consider parsing &amp;quot;pubdate&amp;quot; as backwards compatible option for &amp;quot;dt-published&amp;quot;. As a general rule, however, it is bad (demonstrably/experienced) design to depend on additional attributes (c.f. RDFa confusion over &amp;quot;property&amp;quot; vs. &amp;quot;rel&amp;quot;), especially for an instance where no additional attribute is necessary. I would leave this out for now until there is non-trivial (more than just test pages or folks who've written HTML5 books, ahem) use in the wild. When there is such use in the wild, it should be documented on a wiki page. We don't want to encourage more complex (additional attribute) publishing as a result of supporting it. [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
* [[value-class-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;
** A few things:&lt;br /&gt;
*** 1. Yes, no more subproperties. 'tel' becomes just 'p-tel'. If there is demand for a structured 'tel' value, then we can use that demand (and research into publishing in practice) to brainstorm and create an 'h-tel' structured telephone number (with perhaps fields like 'type', 'extension', some indication of it being local dialing (an extra 0 in some countries) or international dialing, etc.) Or, we address the different 'tel' types as their own flat properties (again as justified by research), e.g. perhaps 'p-tel-fax', or 'p-tel-mobile'. Something for hcard-2-brainstorming.&lt;br /&gt;
*** 2. For prices, e.g. hListing, either we're going to need to encode how to parse monetary amounts including monetary symbols, or consider creating an 'h-price' structured price. Not sure what the right answer is here, again, will need to be informed by analysis of documented actual price publication practices.&lt;br /&gt;
*** 3. We should avoid introducing a new prefix 'v-' just for value-class-pattern. As we've noted elsewhere, each new prefix adds complexity and should be avoided without substantial advantage.&lt;br /&gt;
*** 4. Using 'p-value-title' is strange, as it would be an exception to 'p-' parsing, since it would get the value from the 'title' attribute whereas 'p-' properties don't normally do that (exception: abbr).&lt;br /&gt;
*** 5. Using 'p-value' is also strange, as it wouldn't generate a 'value' property in the JSON data model.&lt;br /&gt;
*** 6. Class name 'value-title' is already sufficiently prefixed - we've found or even heard of no collisions in practice.&lt;br /&gt;
*** 7. Class name 'value' can, by its simpler naming nature, be expected to potentially collide with other web designer class name usage though we have no documentation/mention thereof. We could consider a renaming, or providing of alternative, such as 'value-string', or 'value-content', etc. However, let's keep that as a backup plan to use only if/when evidence is presented that we need to.&lt;br /&gt;
** Conclusions: for now, in microformats-2, keep using 'value' and 'value-title' as defined in the [[value-class-pattern]], and add the additional (obvious) interpretation that [[value-class-pattern#Date_and_time_parsing|value class pattern: date and time parsing]] applies to all 'dt-' properties. - [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== incorporated 2015-05-28 ==&lt;br /&gt;
The following brainstorms were incorporated 2015-05-28.&lt;br /&gt;
&lt;br /&gt;
== more information for alternates ==&lt;br /&gt;
Raised 2015-04-24 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
The existing &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; parsing is omitting &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - that should be added.  The &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; would make sense to add here too.&lt;br /&gt;
&lt;br /&gt;
Use-case: labels for presenting alternates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 Makes sense. [[User:Tantek|Tantek]] 03:41, 25 April 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== more information for rel-based formats ==&lt;br /&gt;
Raised 2015-04-18 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
Related github test suite issue: https://github.com/microformats/tests/issues/16&lt;br /&gt;
&lt;br /&gt;
Several rel-based formats have additional information that is useful beyond the link itself, which is all we capture at the moment. As I am trying to update the Universal feedparser to support mf2 based I will show examples from the [https://github.com/kevinmarks/feedparser/tree/365623a9470e99246f393a8c1f49a0db567826b8/feedparser/tests/microformats testcases] there.&lt;br /&gt;
&lt;br /&gt;
The main change is to add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; entry for more information about the attributes and text of the urls pointed to by rel's in the document&lt;br /&gt;
&lt;br /&gt;
A fork of mf2py that implements these changes is at https://github.com/kevinmarks/mf2py&lt;br /&gt;
=== rel-tag ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://del.icio.us/tag/tech&amp;quot;&amp;gt;Technology&amp;lt;/a&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;tag&amp;quot;: [&amp;quot;http://del.icio.us/tag/tech&amp;quot;]}, &amp;quot;items&amp;quot;: []} &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is useful as a label. &lt;br /&gt;
&lt;br /&gt;
We add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; element to the parsed output with this extra data that can be looked up from the rels, which doesn't break backward compatibility and works better with xfn (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://del.icio.us/tag/tech&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://del.icio.us/tag/tech&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Technology&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xfn ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;coworker&amp;quot;: [&amp;quot;http://example.com/johndoe&amp;quot;]}, &amp;quot;items&amp;quot;: []}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is the person's name. Suggested output using the urls object:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with multiple xfn values &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker friend&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
we get this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;friend&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;, &lt;br /&gt;
                &amp;quot;friend&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-enclosure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;enclosure&amp;quot; href=&amp;quot;http://example.com/movie.mp4&amp;quot; type=&amp;quot;video/mpeg&amp;quot; title=&amp;quot;real title&amp;quot;&amp;gt;my movie&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;'{&amp;quot;rels&amp;quot;: {&amp;quot;enclosure&amp;quot;: [&amp;quot;http://example.com/movie.mp4&amp;quot;]}, &amp;quot;items&amp;quot;: []}'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text,  which is the title and the attributes which give type. Suggested output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;enclosure&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/movie.mp4&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/movie.mp4&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;enclosure&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot;, &lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;video/mpeg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;real title&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This generalises to other rel's too, such as [[rel-feed]] and [[rel-alternate]] that have type, lang etc attributes.&lt;br /&gt;
&lt;br /&gt;
(updated to include changes from feedback below) [[User:Kevin Marks|Kevin Marks]] 22:13, 26 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== attributes parsed ===&lt;br /&gt;
Attributes currently parsed are:&lt;br /&gt;
* &amp;lt;code&amp;gt;hreflang&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
&lt;br /&gt;
Attributes we may consider parsing if we have a use case are &lt;br /&gt;
* &amp;lt;code&amp;gt;sizes&amp;lt;/code&amp;gt; for icon - need use-case documentation&lt;br /&gt;
* &amp;lt;code&amp;gt;coords&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
* &amp;lt;code&amp;gt;shape&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
&lt;br /&gt;
In addition there is a special attribute &amp;lt;s&amp;gt;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; &amp;lt;/s&amp;gt;&amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; which is the text contents of the link, which is useful in rel-tag rel-enclosure and xfn, and in alternate when used for feeds. It's also clarifying for rel-me links. &lt;br /&gt;
&lt;br /&gt;
Tantek [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79057 suggests] we use &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; for this instead, and make it a single string, not a list as &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is elsewhere in mf2 parsing&lt;br /&gt;
* Update: &amp;quot;text&amp;quot; is good enough, and &amp;quot;textContent&amp;quot; is ugly camelCase. [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== feedback on more rel info ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;quot;name&amp;quot; is bad because it misleadingly conflates with use of &amp;quot;name&amp;quot; elsewhere in microformats2.&lt;br /&gt;
#* Suggested alternative: [https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent textContent] - since that's literally what is being returned there. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** as all other mf2 keys are lowercase-with-hyphens, [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79101 Tantek suggests] 'text' as that isn't going to be an html [[User:Kevin Marks|Kevin Marks]] 07:28, 25 April 2015 (UTC)&lt;br /&gt;
# no need for array for &amp;quot;name&amp;quot;/textContent - since there is always only one at most&lt;br /&gt;
#* E.g. should be &amp;quot;textContent&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#* Update: &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
# &amp;quot;urls&amp;quot; key is misleading - implies all URLs in the document, which is neither true, nor desired (takes much more parsing time and work and code)&lt;br /&gt;
#* Suggested alternative: &amp;quot;rel-urls&amp;quot;. And open to better alternatives too. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** If we are trying to extend the number of properties retuned from a rel without breaking the old structure why don't we call the new structure something like &amp;quot;rels-extended&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#*** Extension is not the point, but rather to use them complementary. One structure for look-up of any rel value, hence &amp;quot;rels&amp;quot;, which returns you a list of URLs. Then you can lookup those URLs in the new mapping, by URL, hence it is called &amp;quot;rel-urls&amp;quot; - that's the point to use them in conjunction and that's why rel-urls is named what it is. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
# Why is the structure of  &amp;quot;rel-urls&amp;quot; different to the &amp;quot;alternates&amp;quot; structure. Should the &amp;quot;url&amp;quot; not just be added as a property and not as a key. Creating two data structures for one type of object seems inconsistent. It adds cognitive load to anyone trying to understand the JSON structure [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* I was trying to avoid breaking the existing &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; structure and use of it - I did implement a variant that put the structure inside rels, and it became cumbersome and repetitive where there were multiple rels on a url (xfn cases). Denormalising as properties of the URL made more sense. It also dedupes if there is repetitive linking to the same URL, eg a series of posts with rel-author on each. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
# If the rel is a &amp;quot;tag&amp;quot; then the main value we need to return should be the last path component of the URL, not the link text? Should we add another output property ie &amp;quot;tag&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* No need to return last path segment of the URL, because the URL is already there - and that's just a library/framework utility function to get the last path segment of a URL. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
# As currently described, the URL from &amp;lt;code&amp;gt;alternates&amp;lt;/code&amp;gt; is repeated in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; structure. If we are doing this, surely &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; should be in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; too? I assumed a mapping between them. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
## edit showing this variant: http://microformats.org/wiki/index.php?title=microformats2-parsing&amp;amp;oldid=65021#parse_a_hyperlink_element_for_rel_microformats&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
#* Yes it makes sense to drop &amp;quot;alternates&amp;quot; assuming the backcompat impact is low, put alternates in &amp;quot;rels&amp;quot; along with everything else, and direct people to use rels and rel-urls for alternates functionality. Evidence this is an acceptable even preferable approach.[http://indiewebcamp.com/irc/2015-06-01/line/1433195247005] Will add an issue accordingly. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Incorporated 2015-06-06 ==&lt;br /&gt;
&lt;br /&gt;
== Nested h-* objects' &amp;quot;value&amp;quot; property ==&lt;br /&gt;
Status: resolved, resolution iterated, one real world implementation proven implementability, incorporated&lt;br /&gt;
* 2015-06-06 incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
Raised 2015-01-06 by [[User:Kylewm]];&lt;br /&gt;
&lt;br /&gt;
If a child element has a microformat (h-*) and is a property element (p-*, u-*, dt-*, e-*), the parser will add a &amp;quot;value&amp;quot; property to the resulting object. The value should attempt to be a useful representation of the object for consumers that do not have semantic knowledge of the particular h-* type. Ref: [[microformats2-parsing#parse_an_element_for_class_microformats]].&lt;br /&gt;
&lt;br /&gt;
To determine the &amp;quot;value&amp;quot;, we parse the property element simply (as if it did not have a h-* class), which works well for simple h-* objects, e.g. &amp;lt;code&amp;gt;&amp;lt;a class=&amp;quot;u-like-of h-cite&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* To handle more complex microformats, I propose that &amp;quot;value&amp;quot; for a p-* property element take on the first explicit &amp;quot;name&amp;quot; property of the nested microformat, and for a u-* property, the first explicit &amp;quot;url&amp;quot; property. Parsing will fall back on the current rules if an explicit property does not exist.&lt;br /&gt;
** This makes sense to me, and fits with the use-cases and examples I've seen. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** A similar (possibly simpler?) formulation would use the implied name and url rules to determine the &amp;quot;value&amp;quot; for p-* and u-* properties respectively&lt;br /&gt;
*** I don't think that's needed, as there are already implied rules on a property that should handle that. I'd start with just the &amp;quot;first explicit&amp;quot; scoping to be more conservative, and then see if we find any use-cases that (and existing implied rules) don't/doesn't catch. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
**** Agreement at [[2015-01-20]] meetup.&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;u-in-reply-to h-cite&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Example Author&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/post&amp;quot;&amp;gt;Example Post&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nested u-in-reply-to object would parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;in-reply-to&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-cite&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;Example Post&amp;quot;],&lt;br /&gt;
    &amp;quot;url&amp;quot;: [&amp;quot;http://example.com/post&amp;quot;],&lt;br /&gt;
    &amp;quot;author&amp;quot;: [{&lt;br /&gt;
      &amp;quot;type&amp;quot;:[&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;http://example.com&amp;quot;], &lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Example Author&amp;quot;]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;Example Author&amp;quot;&lt;br /&gt;
    }],&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;value&amp;quot;: &amp;quot;http://example.com/post&amp;quot;&lt;br /&gt;
}]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the outer &amp;quot;value&amp;quot; gets the in-reply-to h-cite's u-url property, and the inner &amp;quot;value&amp;quot; gets the author's p-name property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Because there are no implied properties of the dt-* and e-* types, and no obvious defaults, the value rules for these types would not change.&lt;br /&gt;
** A possibility for dt-* h-*: The dt-* could take either the first dt-* of the h-*, or (perhaps if no dt-* in the h-*,) the first &amp;lt;code&amp;gt;&amp;amp;lt;time&amp;amp;gt;&amp;lt;/code&amp;gt; element inside. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** First dt-* seems reasonable, predictable, and usable. Consensus at [[2015-01-20]] meetup.&lt;br /&gt;
** Update 2015-05-29: no known use-cases for first dt-* or first e-*, and implementing that &amp;quot;would require some refactoring&amp;quot; (in mf2py at least per kylewm), thus until there's a use-case for first dt-*/e-* inside, let's treat &amp;quot;dt-* h-*&amp;quot; and &amp;quot;e-* h-*&amp;quot; as before. [[User:Tantek|Tantek]] . In particular:&lt;br /&gt;
*** p-* h-* - value from first &amp;quot;name&amp;quot; as proposed above&lt;br /&gt;
*** u-* h-* - value from first &amp;quot;url&amp;quot; as proposed above&lt;br /&gt;
*** e-* h-* - value is already defined for e-* parsing, nothing special here&lt;br /&gt;
*** dt-* h-* - value from normal dt-* parsing - nothing special.&lt;br /&gt;
*** +1 totally agree, let's wait for use cases of e-* dt-* [[User:Kylewm|Kylewm]] 19:44, 29 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Implemented in mf2py 2015-06-01 https://github.com/tommorris/mf2py/commit/edc895ef5a780bcee654e6644a688688934517b0&lt;br /&gt;
* Added to microformats test suite (experimental) 2015-06-01 https://github.com/microformats/tests/commit/90c8a7d8e96c7160036a298e13f16d9ddaec218e&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-brainstorming]]&lt;br /&gt;
* [[microformats2-prefixes]]&lt;br /&gt;
* [[microformats2-faq]]&lt;br /&gt;
* [[microformats2-issues]]&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>VoxPelli</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=65507</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=65507"/>
		<updated>2016-05-07T20:12:53Z</updated>

		<summary type="html">&lt;p&gt;VoxPelli: /* Parse language information */ Added link to php-mf2 issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats2 parsing brainstorming&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is for brainstorming, discussion, and other questions and explorations about [[microformats2]] parsing.&lt;br /&gt;
&lt;br /&gt;
For the microformats2 parsing algorithm, see:&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
For filing issues / problems with microformats2-parsing, see:&lt;br /&gt;
* [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Parse language information ==&lt;br /&gt;
Raised by [[User:VoxPelli|VoxPelli]] 18:04, 23 July 2015 (UTC)&lt;br /&gt;
* 2016-060: Update: and parse &amp;quot;id&amp;quot; attribute. [[User:Tantek|Tantek]] 16:39, 29 February 2016 (UTC) (see Additionally below)&lt;br /&gt;
&lt;br /&gt;
Currently there’s no way to tell the language of parsed microformats even if those microformats has been marked up with HTML &amp;quot;lang&amp;quot;-attributes.&lt;br /&gt;
&lt;br /&gt;
There are examples in the wild of people marking up pages in such a way:&lt;br /&gt;
&lt;br /&gt;
* [http://voxpelli.com/ VoxPelli.com] has a &amp;quot;lang&amp;quot;-attribute on the h-entry of his [http://voxpelli.com/2011/03/sista-dagen-p-good-old/ swedish articles] to signify that the article is swedish even though the rest of the site is english.&lt;br /&gt;
* Stephanie [http://climbtothestars.org/archives/2013/09/17/basic-bilingual-1-0-plugin-for-wordpress-blog-in-more-than-one-language/ uses a WordPress plugin] that adds summaries of other languages at the start of her content.&lt;br /&gt;
&lt;br /&gt;
Proposal is to add a new &amp;quot;lang&amp;quot; keyword to h-* and e-* objects so that the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;sv&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;En svensk titel&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;En svensk titel&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;With an english summary&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Och svensk huvudtext&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;
&lt;br /&gt;
This was [http://indiewebcamp.com/irc/2015-07-23#t1437667712078 brainstormed on the IndieWebCamp IRC-channel] where the mentioned example came up.&lt;br /&gt;
&lt;br /&gt;
* Pull request for implementation in microformat-node added 2015-07-23 https://github.com/glennjones/microformat-node/pull/23&lt;br /&gt;
** Closed 2015-09-08 because the library has changed and parsing is now handled by microformat-shiv. New issue opened there: https://github.com/glennjones/microformat-shiv/issues/22&lt;br /&gt;
* Issue around implementation in php-mf2 added 2016-05-07 https://github.com/indieweb/php-mf2/issues/96&lt;br /&gt;
&lt;br /&gt;
Additionally: consider the same for &amp;quot;id&amp;quot; attributes (use-case: rel=feed local discovery of a nested h-feed on the home page), specifically, parsing the first instance of any &amp;quot;id&amp;quot; attribute (ignoring latter duplicate id attribute values on any subsequent elements).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And alternatively: consider parsing as &amp;quot;html-id&amp;quot; and &amp;quot;html-lang&amp;quot; prefixed properties in the parsed result, e.g.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;sv&amp;quot; id=&amp;quot;postfrag123&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;En svensk titel&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;html-id&amp;quot;: &amp;quot;postfrag123&amp;quot;,&lt;br /&gt;
  &amp;quot;html-lang&amp;quot;: &amp;quot;sv&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;En svensk titel&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html-lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;With an english summary&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Och svensk huvudtext&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;
&lt;br /&gt;
=== Language inheritance ===&lt;br /&gt;
&lt;br /&gt;
If the &amp;quot;lang&amp;quot; attribute is not specified for a particular element, it is inherited from the nearest parent (or from the HTTP Content-Language header)&lt;br /&gt;
&lt;br /&gt;
HTML5: https://www.w3.org/TR/html5/dom.html#the-lang-and-xml:lang-attributes&amp;lt;br&amp;gt;&lt;br /&gt;
HTML4: https://www.w3.org/TR/html4/struct/dirlang.html#h-8.1.2&lt;br /&gt;
&lt;br /&gt;
Proposal: Determine and include the inherited &amp;quot;lang&amp;quot; value on *every* microformat object that directly specifies a lang or that has an ancestor that does, e.g. if &amp;amp;lt;html lang=&amp;quot;en&amp;quot;&amp;amp;gt;, then every object in the output will have &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Pronouns in different languages ===&lt;br /&gt;
&lt;br /&gt;
Language is also useful context when defining [[pronouns]], discussed a bit here[https://github.com/idno/Known/pull/1426#issuecomment-217626923].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;he&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-x-pronoun-possessive&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would parse as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;x-pronoun-nominative&amp;quot;: [&amp;quot;he&amp;quot;],&lt;br /&gt;
    &amp;quot;x-pronoun-possessive&amp;quot;: [&amp;quot;him&amp;quot;],&lt;br /&gt;
    &amp;quot;x-pronoun-oblique&amp;quot;: [&amp;quot;his&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It could also be useful to specify multiple languages within a single h-card (pardon me if I butcher Swedish pronouns)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;en&amp;quot; class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;he&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;en&amp;quot; class=&amp;quot;p-x-pronoun-possessive&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;en&amp;quot; class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;sv&amp;quot; class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;han&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;sv&amp;quot; class=&amp;quot;p-x-pronoun-possessive&amp;quot;&amp;gt;hans&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;sv&amp;quot; class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;honom&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which might parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;x-pronoun-nominative&amp;quot;: [{&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;he&amp;quot;}, {&amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;han&amp;quot;}],&lt;br /&gt;
    &amp;quot;x-pronoun-possessive&amp;quot;: [{&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;him&amp;quot;}, {&amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;hans&amp;quot;}],&lt;br /&gt;
    &amp;quot;x-pronoun-oblique&amp;quot;: [{&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;his&amp;quot;}, {&amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;honom&amp;quot;}]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively, we could introduce a new microformat h-x-pronoun to wrap a set of pronouns&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-x-pronoun h-x-pronoun&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-nominative&amp;quot;&amp;gt;he&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-possessive&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-oblique&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-x-pronoun h-x-pronoun&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-nominative&amp;quot;&amp;gt;han&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-possessive&amp;quot;&amp;gt;hans&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-oblique&amp;quot;&amp;gt;honom&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;
&lt;br /&gt;
&lt;br /&gt;
parsed as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;x-pronoun&amp;quot;: [{&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-x-pronoun&amp;quot;],&lt;br /&gt;
      &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;nominative&amp;quot;: [&amp;quot;he&amp;quot;],&lt;br /&gt;
        &amp;quot;possessive&amp;quot;: [&amp;quot;him&amp;quot;],&lt;br /&gt;
        &amp;quot;oblique&amp;quot;: [&amp;quot;his&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    }, {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-x-pronoun&amp;quot;],&lt;br /&gt;
      &amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;,&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;nominative&amp;quot;: [&amp;quot;han&amp;quot;],&lt;br /&gt;
        &amp;quot;possessive&amp;quot;: [&amp;quot;hans&amp;quot;],&lt;br /&gt;
        &amp;quot;oblique&amp;quot;: [&amp;quot;honom&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Discussion:&lt;br /&gt;
* [[User:Kylewm|Kylewm]] Including the &amp;quot;lang&amp;quot; attribute in h- and e- properties makes a ton of sense to me.&lt;br /&gt;
* [[User:Kylewm|Kylewm]] I like the idea of introducing an h-x-pronoun container that can define all the different pronoun forms for a particular language&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Canonicalization of datetime output ==&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
It would be useful to choose a (more) uniform output format for datetimes to make it easier for users of the parser to consume datetimes. Microformats2 parsers already do sophisticated pattern matching to recognize date vs. time vs. datetimes, so converting this to any specific format should not add overhead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Specifically: &lt;br /&gt;
* Choose either 'T' or space as the date/time separator.&lt;br /&gt;
** Prefer space as it is more human friendly/readable, which matters even for syntaxes/formats, as human still develop, debug them. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* Choose either +XXYY or +XX:YY as the timezone specification (and convert 'Z' to +0000).&lt;br /&gt;
** Would appreciate some study / input here as to which timezone offset syntax is more human friendly. I lean slightly toward +/-NNNN (without the colon) because in the context of seeing a time, leaving out the colon makes it less likely the offset will be confused for a time. E.g. &amp;quot;07:00-08:00&amp;quot; looks like 7-8am, even if it meant 07:00 in PST. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** Space is fine - consensus [[2015-01-20]] meetup.&lt;br /&gt;
* Parsers should ''not'' attempt make datetimes more exact than specified. They should not add time, seconds, or timezone if omitted in the original. [[User:Kylewm|Kylewm]] 04:02, 14 May 2014 (UTC)&lt;br /&gt;
** Agreed. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** or month, day per Tom Morris&lt;br /&gt;
** consensus [[2015-01-20]] meetup&lt;br /&gt;
&lt;br /&gt;
* Counterpoint: PHP's builtin date parsing does not require strict formatting. And the equivalent functionality for Python is provided by the widely used python-dateutil library. [[User:Kylewm|Kylewm]] 19:02, 14 May 2014 (UTC)&lt;br /&gt;
** However we cannot (must not) depend on either PHP or Python's &amp;quot;smart&amp;quot; &amp;quot;fixing&amp;quot; or Postelian &amp;quot;liberal handling&amp;quot;, or any other language/framework's for that matter, as they all differ in how &amp;quot;intelligent&amp;quot; they are. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhaps just provide a guideline for these based on the above consensus.&lt;br /&gt;
&lt;br /&gt;
== Add meta http-equiv to microformats2 parsing model ==&lt;br /&gt;
Status: disagreement, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
Similar to document level parsing of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, it makes sense simultaneously to parse &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv&amp;amp;gt;&amp;lt;/code&amp;gt; elements, perhaps treating &amp;quot;Status&amp;quot; in a special way (only using first number (sequence of digits) for its &amp;quot;value&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Use case: IndieWeb &amp;quot;deleted&amp;quot; indication inline in content for static file services that don't support HTTP return codes.&lt;br /&gt;
* http://indiewebcamp.com/deleted#HTML_meta_http-equiv_for_status&lt;br /&gt;
&lt;br /&gt;
HTTP Header example:&lt;br /&gt;
* &amp;lt;samp&amp;gt;Content-Type: text/html; charset=utf-8&amp;lt;/samp&amp;gt;&lt;br /&gt;
HTML equivalent: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related:&lt;br /&gt;
* https://www.w3.org/International/O-HTTP-charset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Interesting thought. Are you suggesting a top level &amp;quot;http-equivs:&amp;quot; collection similar to &amp;quot;rels:&amp;quot; in the parsed output? Should we consider &amp;quot;metas:&amp;quot; instead or in addition? [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* What's the use case for this? Also, http-equiv on its own is useless. http-equiv is only a supplement to the data stored in headers. And headers aren't always there: what happens in the context of someone debugging a page who pastes the source into the textarea of an mf2 parser? Without a compelling use case for including headers (and then over-riding some of them with http-equivs), I'm not sure why an implementor want to do this. —[[User:TomMorris|Tom Morris]] 00:25, 8 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. from https://gist.github.com/aaronpk/10297489&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Status&amp;quot; content=&amp;quot;410 GONE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [],&lt;br /&gt;
 &amp;quot;rels&amp;quot;: {},&lt;br /&gt;
 &amp;quot;http&amp;quot;: {&lt;br /&gt;
 &amp;quot;status&amp;quot;: 410&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Maybe make this an optional pass in the parser? - Tom Morris [[2015-01-20]]&lt;br /&gt;
* For now, don't bother with metas until someone provides a use-case. Tom Morris&lt;br /&gt;
* Agreed on both counts. [[User:Tantek|Tantek]] 06:56, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MIME type==&lt;br /&gt;
See [[microformats2-mime-type]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation Parsing Notes==&lt;br /&gt;
Note: most of these need to be written up as separate [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&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;
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;
** *If* there is even some reasonable data on actual use of the &amp;quot;pubdate&amp;quot; attribute (I don't think there is, frankly, especially with the removal of the algorithm to produce Atom from HTML5), then we could consider parsing &amp;quot;pubdate&amp;quot; as backwards compatible option for &amp;quot;dt-published&amp;quot;. As a general rule, however, it is bad (demonstrably/experienced) design to depend on additional attributes (c.f. RDFa confusion over &amp;quot;property&amp;quot; vs. &amp;quot;rel&amp;quot;), especially for an instance where no additional attribute is necessary. I would leave this out for now until there is non-trivial (more than just test pages or folks who've written HTML5 books, ahem) use in the wild. When there is such use in the wild, it should be documented on a wiki page. We don't want to encourage more complex (additional attribute) publishing as a result of supporting it. [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
* [[value-class-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;
** A few things:&lt;br /&gt;
*** 1. Yes, no more subproperties. 'tel' becomes just 'p-tel'. If there is demand for a structured 'tel' value, then we can use that demand (and research into publishing in practice) to brainstorm and create an 'h-tel' structured telephone number (with perhaps fields like 'type', 'extension', some indication of it being local dialing (an extra 0 in some countries) or international dialing, etc.) Or, we address the different 'tel' types as their own flat properties (again as justified by research), e.g. perhaps 'p-tel-fax', or 'p-tel-mobile'. Something for hcard-2-brainstorming.&lt;br /&gt;
*** 2. For prices, e.g. hListing, either we're going to need to encode how to parse monetary amounts including monetary symbols, or consider creating an 'h-price' structured price. Not sure what the right answer is here, again, will need to be informed by analysis of documented actual price publication practices.&lt;br /&gt;
*** 3. We should avoid introducing a new prefix 'v-' just for value-class-pattern. As we've noted elsewhere, each new prefix adds complexity and should be avoided without substantial advantage.&lt;br /&gt;
*** 4. Using 'p-value-title' is strange, as it would be an exception to 'p-' parsing, since it would get the value from the 'title' attribute whereas 'p-' properties don't normally do that (exception: abbr).&lt;br /&gt;
*** 5. Using 'p-value' is also strange, as it wouldn't generate a 'value' property in the JSON data model.&lt;br /&gt;
*** 6. Class name 'value-title' is already sufficiently prefixed - we've found or even heard of no collisions in practice.&lt;br /&gt;
*** 7. Class name 'value' can, by its simpler naming nature, be expected to potentially collide with other web designer class name usage though we have no documentation/mention thereof. We could consider a renaming, or providing of alternative, such as 'value-string', or 'value-content', etc. However, let's keep that as a backup plan to use only if/when evidence is presented that we need to.&lt;br /&gt;
** Conclusions: for now, in microformats-2, keep using 'value' and 'value-title' as defined in the [[value-class-pattern]], and add the additional (obvious) interpretation that [[value-class-pattern#Date_and_time_parsing|value class pattern: date and time parsing]] applies to all 'dt-' properties. - [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== incorporated 2015-05-28 ==&lt;br /&gt;
The following brainstorms were incorporated 2015-05-28.&lt;br /&gt;
&lt;br /&gt;
== more information for alternates ==&lt;br /&gt;
Raised 2015-04-24 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
The existing &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; parsing is omitting &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - that should be added.  The &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; would make sense to add here too.&lt;br /&gt;
&lt;br /&gt;
Use-case: labels for presenting alternates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 Makes sense. [[User:Tantek|Tantek]] 03:41, 25 April 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== more information for rel-based formats ==&lt;br /&gt;
Raised 2015-04-18 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
Related github test suite issue: https://github.com/microformats/tests/issues/16&lt;br /&gt;
&lt;br /&gt;
Several rel-based formats have additional information that is useful beyond the link itself, which is all we capture at the moment. As I am trying to update the Universal feedparser to support mf2 based I will show examples from the [https://github.com/kevinmarks/feedparser/tree/365623a9470e99246f393a8c1f49a0db567826b8/feedparser/tests/microformats testcases] there.&lt;br /&gt;
&lt;br /&gt;
The main change is to add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; entry for more information about the attributes and text of the urls pointed to by rel's in the document&lt;br /&gt;
&lt;br /&gt;
A fork of mf2py that implements these changes is at https://github.com/kevinmarks/mf2py&lt;br /&gt;
=== rel-tag ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://del.icio.us/tag/tech&amp;quot;&amp;gt;Technology&amp;lt;/a&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;tag&amp;quot;: [&amp;quot;http://del.icio.us/tag/tech&amp;quot;]}, &amp;quot;items&amp;quot;: []} &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is useful as a label. &lt;br /&gt;
&lt;br /&gt;
We add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; element to the parsed output with this extra data that can be looked up from the rels, which doesn't break backward compatibility and works better with xfn (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://del.icio.us/tag/tech&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://del.icio.us/tag/tech&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Technology&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xfn ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;coworker&amp;quot;: [&amp;quot;http://example.com/johndoe&amp;quot;]}, &amp;quot;items&amp;quot;: []}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is the person's name. Suggested output using the urls object:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with multiple xfn values &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker friend&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
we get this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;friend&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;, &lt;br /&gt;
                &amp;quot;friend&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-enclosure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;enclosure&amp;quot; href=&amp;quot;http://example.com/movie.mp4&amp;quot; type=&amp;quot;video/mpeg&amp;quot; title=&amp;quot;real title&amp;quot;&amp;gt;my movie&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;'{&amp;quot;rels&amp;quot;: {&amp;quot;enclosure&amp;quot;: [&amp;quot;http://example.com/movie.mp4&amp;quot;]}, &amp;quot;items&amp;quot;: []}'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text,  which is the title and the attributes which give type. Suggested output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;enclosure&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/movie.mp4&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/movie.mp4&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;enclosure&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot;, &lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;video/mpeg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;real title&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This generalises to other rel's too, such as [[rel-feed]] and [[rel-alternate]] that have type, lang etc attributes.&lt;br /&gt;
&lt;br /&gt;
(updated to include changes from feedback below) [[User:Kevin Marks|Kevin Marks]] 22:13, 26 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== attributes parsed ===&lt;br /&gt;
Attributes currently parsed are:&lt;br /&gt;
* &amp;lt;code&amp;gt;hreflang&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
&lt;br /&gt;
Attributes we may consider parsing if we have a use case are &lt;br /&gt;
* &amp;lt;code&amp;gt;sizes&amp;lt;/code&amp;gt; for icon - need use-case documentation&lt;br /&gt;
* &amp;lt;code&amp;gt;coords&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
* &amp;lt;code&amp;gt;shape&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
&lt;br /&gt;
In addition there is a special attribute &amp;lt;s&amp;gt;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; &amp;lt;/s&amp;gt;&amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; which is the text contents of the link, which is useful in rel-tag rel-enclosure and xfn, and in alternate when used for feeds. It's also clarifying for rel-me links. &lt;br /&gt;
&lt;br /&gt;
Tantek [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79057 suggests] we use &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; for this instead, and make it a single string, not a list as &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is elsewhere in mf2 parsing&lt;br /&gt;
* Update: &amp;quot;text&amp;quot; is good enough, and &amp;quot;textContent&amp;quot; is ugly camelCase. [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== feedback on more rel info ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;quot;name&amp;quot; is bad because it misleadingly conflates with use of &amp;quot;name&amp;quot; elsewhere in microformats2.&lt;br /&gt;
#* Suggested alternative: [https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent textContent] - since that's literally what is being returned there. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** as all other mf2 keys are lowercase-with-hyphens, [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79101 Tantek suggests] 'text' as that isn't going to be an html [[User:Kevin Marks|Kevin Marks]] 07:28, 25 April 2015 (UTC)&lt;br /&gt;
# no need for array for &amp;quot;name&amp;quot;/textContent - since there is always only one at most&lt;br /&gt;
#* E.g. should be &amp;quot;textContent&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#* Update: &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
# &amp;quot;urls&amp;quot; key is misleading - implies all URLs in the document, which is neither true, nor desired (takes much more parsing time and work and code)&lt;br /&gt;
#* Suggested alternative: &amp;quot;rel-urls&amp;quot;. And open to better alternatives too. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** If we are trying to extend the number of properties retuned from a rel without breaking the old structure why don't we call the new structure something like &amp;quot;rels-extended&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#*** Extension is not the point, but rather to use them complementary. One structure for look-up of any rel value, hence &amp;quot;rels&amp;quot;, which returns you a list of URLs. Then you can lookup those URLs in the new mapping, by URL, hence it is called &amp;quot;rel-urls&amp;quot; - that's the point to use them in conjunction and that's why rel-urls is named what it is. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
# Why is the structure of  &amp;quot;rel-urls&amp;quot; different to the &amp;quot;alternates&amp;quot; structure. Should the &amp;quot;url&amp;quot; not just be added as a property and not as a key. Creating two data structures for one type of object seems inconsistent. It adds cognitive load to anyone trying to understand the JSON structure [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* I was trying to avoid breaking the existing &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; structure and use of it - I did implement a variant that put the structure inside rels, and it became cumbersome and repetitive where there were multiple rels on a url (xfn cases). Denormalising as properties of the URL made more sense. It also dedupes if there is repetitive linking to the same URL, eg a series of posts with rel-author on each. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
# If the rel is a &amp;quot;tag&amp;quot; then the main value we need to return should be the last path component of the URL, not the link text? Should we add another output property ie &amp;quot;tag&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* No need to return last path segment of the URL, because the URL is already there - and that's just a library/framework utility function to get the last path segment of a URL. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
# As currently described, the URL from &amp;lt;code&amp;gt;alternates&amp;lt;/code&amp;gt; is repeated in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; structure. If we are doing this, surely &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; should be in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; too? I assumed a mapping between them. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
## edit showing this variant: http://microformats.org/wiki/index.php?title=microformats2-parsing&amp;amp;oldid=65021#parse_a_hyperlink_element_for_rel_microformats&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
#* Yes it makes sense to drop &amp;quot;alternates&amp;quot; assuming the backcompat impact is low, put alternates in &amp;quot;rels&amp;quot; along with everything else, and direct people to use rels and rel-urls for alternates functionality. Evidence this is an acceptable even preferable approach.[http://indiewebcamp.com/irc/2015-06-01/line/1433195247005] Will add an issue accordingly. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Incorporated 2015-06-06 ==&lt;br /&gt;
&lt;br /&gt;
== Nested h-* objects' &amp;quot;value&amp;quot; property ==&lt;br /&gt;
Status: resolved, resolution iterated, one real world implementation proven implementability, incorporated&lt;br /&gt;
* 2015-06-06 incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
Raised 2015-01-06 by [[User:Kylewm]];&lt;br /&gt;
&lt;br /&gt;
If a child element has a microformat (h-*) and is a property element (p-*, u-*, dt-*, e-*), the parser will add a &amp;quot;value&amp;quot; property to the resulting object. The value should attempt to be a useful representation of the object for consumers that do not have semantic knowledge of the particular h-* type. Ref: [[microformats2-parsing#parse_an_element_for_class_microformats]].&lt;br /&gt;
&lt;br /&gt;
To determine the &amp;quot;value&amp;quot;, we parse the property element simply (as if it did not have a h-* class), which works well for simple h-* objects, e.g. &amp;lt;code&amp;gt;&amp;lt;a class=&amp;quot;u-like-of h-cite&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* To handle more complex microformats, I propose that &amp;quot;value&amp;quot; for a p-* property element take on the first explicit &amp;quot;name&amp;quot; property of the nested microformat, and for a u-* property, the first explicit &amp;quot;url&amp;quot; property. Parsing will fall back on the current rules if an explicit property does not exist.&lt;br /&gt;
** This makes sense to me, and fits with the use-cases and examples I've seen. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** A similar (possibly simpler?) formulation would use the implied name and url rules to determine the &amp;quot;value&amp;quot; for p-* and u-* properties respectively&lt;br /&gt;
*** I don't think that's needed, as there are already implied rules on a property that should handle that. I'd start with just the &amp;quot;first explicit&amp;quot; scoping to be more conservative, and then see if we find any use-cases that (and existing implied rules) don't/doesn't catch. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
**** Agreement at [[2015-01-20]] meetup.&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;u-in-reply-to h-cite&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Example Author&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/post&amp;quot;&amp;gt;Example Post&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nested u-in-reply-to object would parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;in-reply-to&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-cite&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;Example Post&amp;quot;],&lt;br /&gt;
    &amp;quot;url&amp;quot;: [&amp;quot;http://example.com/post&amp;quot;],&lt;br /&gt;
    &amp;quot;author&amp;quot;: [{&lt;br /&gt;
      &amp;quot;type&amp;quot;:[&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;http://example.com&amp;quot;], &lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Example Author&amp;quot;]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;Example Author&amp;quot;&lt;br /&gt;
    }],&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;value&amp;quot;: &amp;quot;http://example.com/post&amp;quot;&lt;br /&gt;
}]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the outer &amp;quot;value&amp;quot; gets the in-reply-to h-cite's u-url property, and the inner &amp;quot;value&amp;quot; gets the author's p-name property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Because there are no implied properties of the dt-* and e-* types, and no obvious defaults, the value rules for these types would not change.&lt;br /&gt;
** A possibility for dt-* h-*: The dt-* could take either the first dt-* of the h-*, or (perhaps if no dt-* in the h-*,) the first &amp;lt;code&amp;gt;&amp;amp;lt;time&amp;amp;gt;&amp;lt;/code&amp;gt; element inside. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** First dt-* seems reasonable, predictable, and usable. Consensus at [[2015-01-20]] meetup.&lt;br /&gt;
** Update 2015-05-29: no known use-cases for first dt-* or first e-*, and implementing that &amp;quot;would require some refactoring&amp;quot; (in mf2py at least per kylewm), thus until there's a use-case for first dt-*/e-* inside, let's treat &amp;quot;dt-* h-*&amp;quot; and &amp;quot;e-* h-*&amp;quot; as before. [[User:Tantek|Tantek]] . In particular:&lt;br /&gt;
*** p-* h-* - value from first &amp;quot;name&amp;quot; as proposed above&lt;br /&gt;
*** u-* h-* - value from first &amp;quot;url&amp;quot; as proposed above&lt;br /&gt;
*** e-* h-* - value is already defined for e-* parsing, nothing special here&lt;br /&gt;
*** dt-* h-* - value from normal dt-* parsing - nothing special.&lt;br /&gt;
*** +1 totally agree, let's wait for use cases of e-* dt-* [[User:Kylewm|Kylewm]] 19:44, 29 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Implemented in mf2py 2015-06-01 https://github.com/tommorris/mf2py/commit/edc895ef5a780bcee654e6644a688688934517b0&lt;br /&gt;
* Added to microformats test suite (experimental) 2015-06-01 https://github.com/microformats/tests/commit/90c8a7d8e96c7160036a298e13f16d9ddaec218e&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-brainstorming]]&lt;br /&gt;
* [[microformats2-prefixes]]&lt;br /&gt;
* [[microformats2-faq]]&lt;br /&gt;
* [[microformats2-issues]]&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>VoxPelli</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=65146</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=65146"/>
		<updated>2015-07-29T09:03:32Z</updated>

		<summary type="html">&lt;p&gt;VoxPelli: Use correct country code in example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats2 parsing brainstorming&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is for brainstorming, discussion, and other questions and explorations about [[microformats2]] parsing.&lt;br /&gt;
&lt;br /&gt;
For the microformats2 parsing algorithm, see:&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
For filing issues / problems with microformats2-parsing, see:&lt;br /&gt;
* [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Parse language information ==&lt;br /&gt;
&lt;br /&gt;
Raised by [[User:VoxPelli|VoxPelli]] 18:04, 23 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Currently there’s no way to tell the language of parsed microformats even if those microformats has been marked up with HTML &amp;quot;lang&amp;quot;-attributes.&lt;br /&gt;
&lt;br /&gt;
There are examples in the wild of people marking up pages in such a way:&lt;br /&gt;
&lt;br /&gt;
* [http://voxpelli.com/ VoxPelli.com] has a &amp;quot;lang&amp;quot;-attribute on the h-entry of his [http://voxpelli.com/2011/03/sista-dagen-p-good-old/ swedish articles] to signify that the article is swedish even though the rest of the site is english.&lt;br /&gt;
* Stephanie [http://climbtothestars.org/archives/2013/09/17/basic-bilingual-1-0-plugin-for-wordpress-blog-in-more-than-one-language/ uses a WordPress plugin] that adds summaries of other languages at the start of her content.&lt;br /&gt;
&lt;br /&gt;
Proposal is to add a new &amp;quot;lang&amp;quot; keyword to h-* and e-* objects so that the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;sv&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;En svensk titel&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;En svensk titel&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;With an english summary&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Och svensk huvudtext&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was [http://indiewebcamp.com/irc/2015-07-23#t1437667712078 brainstormed on the IndieWebCamp IRC-channel] where the mentioned example came up.&lt;br /&gt;
&lt;br /&gt;
* Pull request for implementation in microformat-node added 2015-07-23 https://github.com/glennjones/microformat-node/pull/23&lt;br /&gt;
&lt;br /&gt;
== Canonicalization of datetime output ==&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
It would be useful to choose a (more) uniform output format for datetimes to make it easier for users of the parser to consume datetimes. Microformats2 parsers already do sophisticated pattern matching to recognize date vs. time vs. datetimes, so converting this to any specific format should not add overhead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Specifically: &lt;br /&gt;
* Choose either 'T' or space as the date/time separator.&lt;br /&gt;
** Prefer space as it is more human friendly/readable, which matters even for syntaxes/formats, as human still develop, debug them. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* Choose either +XXYY or +XX:YY as the timezone specification (and convert 'Z' to +0000).&lt;br /&gt;
** Would appreciate some study / input here as to which timezone offset syntax is more human friendly. I lean slightly toward +/-NNNN (without the colon) because in the context of seeing a time, leaving out the colon makes it less likely the offset will be confused for a time. E.g. &amp;quot;07:00-08:00&amp;quot; looks like 7-8am, even if it meant 07:00 in PST. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** Space is fine - consensus [[2015-01-20]] meetup.&lt;br /&gt;
* Parsers should ''not'' attempt make datetimes more exact than specified. They should not add time, seconds, or timezone if omitted in the original. [[User:Kylewm|Kylewm]] 04:02, 14 May 2014 (UTC)&lt;br /&gt;
** Agreed. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** or month, day per Tom Morris&lt;br /&gt;
** consensus [[2015-01-20]] meetup&lt;br /&gt;
&lt;br /&gt;
* Counterpoint: PHP's builtin date parsing does not require strict formatting. And the equivalent functionality for Python is provided by the widely used python-dateutil library. [[User:Kylewm|Kylewm]] 19:02, 14 May 2014 (UTC)&lt;br /&gt;
** However we cannot (must not) depend on either PHP or Python's &amp;quot;smart&amp;quot; &amp;quot;fixing&amp;quot; or Postelian &amp;quot;liberal handling&amp;quot;, or any other language/framework's for that matter, as they all differ in how &amp;quot;intelligent&amp;quot; they are. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhaps just provide a guideline for these based on the above consensus.&lt;br /&gt;
&lt;br /&gt;
== Add meta http-equiv to microformats2 parsing model ==&lt;br /&gt;
Status: disagreement, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
Similar to document level parsing of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, it makes sense simultaneously to parse &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv&amp;amp;gt;&amp;lt;/code&amp;gt; elements, perhaps treating &amp;quot;Status&amp;quot; in a special way (only using first number (sequence of digits) for its &amp;quot;value&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Use case: IndieWeb &amp;quot;deleted&amp;quot; indication inline in content for static file services that don't support HTTP return codes.&lt;br /&gt;
* http://indiewebcamp.com/deleted#HTML_meta_http-equiv_for_status&lt;br /&gt;
&lt;br /&gt;
HTTP Header example:&lt;br /&gt;
* &amp;lt;samp&amp;gt;Content-Type: text/html; charset=utf-8&amp;lt;/samp&amp;gt;&lt;br /&gt;
HTML equivalent: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related:&lt;br /&gt;
* https://www.w3.org/International/O-HTTP-charset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Interesting thought. Are you suggesting a top level &amp;quot;http-equivs:&amp;quot; collection similar to &amp;quot;rels:&amp;quot; in the parsed output? Should we consider &amp;quot;metas:&amp;quot; instead or in addition? [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* What's the use case for this? Also, http-equiv on its own is useless. http-equiv is only a supplement to the data stored in headers. And headers aren't always there: what happens in the context of someone debugging a page who pastes the source into the textarea of an mf2 parser? Without a compelling use case for including headers (and then over-riding some of them with http-equivs), I'm not sure why an implementor want to do this. —[[User:TomMorris|Tom Morris]] 00:25, 8 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. from https://gist.github.com/aaronpk/10297489&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Status&amp;quot; content=&amp;quot;410 GONE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [],&lt;br /&gt;
 &amp;quot;rels&amp;quot;: {},&lt;br /&gt;
 &amp;quot;http&amp;quot;: {&lt;br /&gt;
 &amp;quot;status&amp;quot;: 410&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Maybe make this an optional pass in the parser? - Tom Morris [[2015-01-20]]&lt;br /&gt;
* For now, don't bother with metas until someone provides a use-case. Tom Morris&lt;br /&gt;
* Agreed on both counts. [[User:Tantek|Tantek]] 06:56, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MIME type==&lt;br /&gt;
See [[microformats2-mime-type]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation Parsing Notes==&lt;br /&gt;
Note: most of these need to be written up as separate [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&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;
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;
** *If* there is even some reasonable data on actual use of the &amp;quot;pubdate&amp;quot; attribute (I don't think there is, frankly, especially with the removal of the algorithm to produce Atom from HTML5), then we could consider parsing &amp;quot;pubdate&amp;quot; as backwards compatible option for &amp;quot;dt-published&amp;quot;. As a general rule, however, it is bad (demonstrably/experienced) design to depend on additional attributes (c.f. RDFa confusion over &amp;quot;property&amp;quot; vs. &amp;quot;rel&amp;quot;), especially for an instance where no additional attribute is necessary. I would leave this out for now until there is non-trivial (more than just test pages or folks who've written HTML5 books, ahem) use in the wild. When there is such use in the wild, it should be documented on a wiki page. We don't want to encourage more complex (additional attribute) publishing as a result of supporting it. [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
* [[value-class-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;
** A few things:&lt;br /&gt;
*** 1. Yes, no more subproperties. 'tel' becomes just 'p-tel'. If there is demand for a structured 'tel' value, then we can use that demand (and research into publishing in practice) to brainstorm and create an 'h-tel' structured telephone number (with perhaps fields like 'type', 'extension', some indication of it being local dialing (an extra 0 in some countries) or international dialing, etc.) Or, we address the different 'tel' types as their own flat properties (again as justified by research), e.g. perhaps 'p-tel-fax', or 'p-tel-mobile'. Something for hcard-2-brainstorming.&lt;br /&gt;
*** 2. For prices, e.g. hListing, either we're going to need to encode how to parse monetary amounts including monetary symbols, or consider creating an 'h-price' structured price. Not sure what the right answer is here, again, will need to be informed by analysis of documented actual price publication practices.&lt;br /&gt;
*** 3. We should avoid introducing a new prefix 'v-' just for value-class-pattern. As we've noted elsewhere, each new prefix adds complexity and should be avoided without substantial advantage.&lt;br /&gt;
*** 4. Using 'p-value-title' is strange, as it would be an exception to 'p-' parsing, since it would get the value from the 'title' attribute whereas 'p-' properties don't normally do that (exception: abbr).&lt;br /&gt;
*** 5. Using 'p-value' is also strange, as it wouldn't generate a 'value' property in the JSON data model.&lt;br /&gt;
*** 6. Class name 'value-title' is already sufficiently prefixed - we've found or even heard of no collisions in practice.&lt;br /&gt;
*** 7. Class name 'value' can, by its simpler naming nature, be expected to potentially collide with other web designer class name usage though we have no documentation/mention thereof. We could consider a renaming, or providing of alternative, such as 'value-string', or 'value-content', etc. However, let's keep that as a backup plan to use only if/when evidence is presented that we need to.&lt;br /&gt;
** Conclusions: for now, in microformats-2, keep using 'value' and 'value-title' as defined in the [[value-class-pattern]], and add the additional (obvious) interpretation that [[value-class-pattern#Date_and_time_parsing|value class pattern: date and time parsing]] applies to all 'dt-' properties. - [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== incorporated 2015-05-28 ==&lt;br /&gt;
The following brainstorms were incorporated 2015-05-28.&lt;br /&gt;
&lt;br /&gt;
== more information for alternates ==&lt;br /&gt;
Raised 2015-04-24 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
The existing &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; parsing is omitting &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - that should be added.  The &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; would make sense to add here too.&lt;br /&gt;
&lt;br /&gt;
Use-case: labels for presenting alternates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 Makes sense. [[User:Tantek|Tantek]] 03:41, 25 April 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== more information for rel-based formats ==&lt;br /&gt;
Raised 2015-04-18 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
Related github test suite issue: https://github.com/microformats/tests/issues/16&lt;br /&gt;
&lt;br /&gt;
Several rel-based formats have additional information that is useful beyond the link itself, which is all we capture at the moment. As I am trying to update the Universal feedparser to support mf2 based I will show examples from the [https://github.com/kevinmarks/feedparser/tree/365623a9470e99246f393a8c1f49a0db567826b8/feedparser/tests/microformats testcases] there.&lt;br /&gt;
&lt;br /&gt;
The main change is to add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; entry for more information about the attributes and text of the urls pointed to by rel's in the document&lt;br /&gt;
&lt;br /&gt;
A fork of mf2py that implements these changes is at https://github.com/kevinmarks/mf2py&lt;br /&gt;
=== rel-tag ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://del.icio.us/tag/tech&amp;quot;&amp;gt;Technology&amp;lt;/a&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;tag&amp;quot;: [&amp;quot;http://del.icio.us/tag/tech&amp;quot;]}, &amp;quot;items&amp;quot;: []} &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is useful as a label. &lt;br /&gt;
&lt;br /&gt;
We add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; element to the parsed output with this extra data that can be looked up from the rels, which doesn't break backward compatibility and works better with xfn (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://del.icio.us/tag/tech&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://del.icio.us/tag/tech&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Technology&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xfn ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;coworker&amp;quot;: [&amp;quot;http://example.com/johndoe&amp;quot;]}, &amp;quot;items&amp;quot;: []}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is the person's name. Suggested output using the urls object:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with multiple xfn values &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker friend&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
we get this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;friend&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;, &lt;br /&gt;
                &amp;quot;friend&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-enclosure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;enclosure&amp;quot; href=&amp;quot;http://example.com/movie.mp4&amp;quot; type=&amp;quot;video/mpeg&amp;quot; title=&amp;quot;real title&amp;quot;&amp;gt;my movie&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;'{&amp;quot;rels&amp;quot;: {&amp;quot;enclosure&amp;quot;: [&amp;quot;http://example.com/movie.mp4&amp;quot;]}, &amp;quot;items&amp;quot;: []}'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text,  which is the title and the attributes which give type. Suggested output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;enclosure&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/movie.mp4&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/movie.mp4&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;enclosure&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot;, &lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;video/mpeg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;real title&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This generalises to other rel's too, such as [[rel-feed]] and [[rel-alternate]] that have type, lang etc attributes.&lt;br /&gt;
&lt;br /&gt;
(updated to include changes from feedback below) [[User:Kevin Marks|Kevin Marks]] 22:13, 26 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== attributes parsed ===&lt;br /&gt;
Attributes currently parsed are:&lt;br /&gt;
* &amp;lt;code&amp;gt;hreflang&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
&lt;br /&gt;
Attributes we may consider parsing if we have a use case are &lt;br /&gt;
* &amp;lt;code&amp;gt;sizes&amp;lt;/code&amp;gt; for icon - need use-case documentation&lt;br /&gt;
* &amp;lt;code&amp;gt;coords&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
* &amp;lt;code&amp;gt;shape&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
&lt;br /&gt;
In addition there is a special attribute &amp;lt;s&amp;gt;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; &amp;lt;/s&amp;gt;&amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; which is the text contents of the link, which is useful in rel-tag rel-enclosure and xfn, and in alternate when used for feeds. It's also clarifying for rel-me links. &lt;br /&gt;
&lt;br /&gt;
Tantek [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79057 suggests] we use &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; for this instead, and make it a single string, not a list as &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is elsewhere in mf2 parsing&lt;br /&gt;
* Update: &amp;quot;text&amp;quot; is good enough, and &amp;quot;textContent&amp;quot; is ugly camelCase. [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== feedback on more rel info ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;quot;name&amp;quot; is bad because it misleadingly conflates with use of &amp;quot;name&amp;quot; elsewhere in microformats2.&lt;br /&gt;
#* Suggested alternative: [https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent textContent] - since that's literally what is being returned there. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** as all other mf2 keys are lowercase-with-hyphens, [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79101 Tantek suggests] 'text' as that isn't going to be an html [[User:Kevin Marks|Kevin Marks]] 07:28, 25 April 2015 (UTC)&lt;br /&gt;
# no need for array for &amp;quot;name&amp;quot;/textContent - since there is always only one at most&lt;br /&gt;
#* E.g. should be &amp;quot;textContent&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#* Update: &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
# &amp;quot;urls&amp;quot; key is misleading - implies all URLs in the document, which is neither true, nor desired (takes much more parsing time and work and code)&lt;br /&gt;
#* Suggested alternative: &amp;quot;rel-urls&amp;quot;. And open to better alternatives too. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** If we are trying to extend the number of properties retuned from a rel without breaking the old structure why don't we call the new structure something like &amp;quot;rels-extended&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#*** Extension is not the point, but rather to use them complementary. One structure for look-up of any rel value, hence &amp;quot;rels&amp;quot;, which returns you a list of URLs. Then you can lookup those URLs in the new mapping, by URL, hence it is called &amp;quot;rel-urls&amp;quot; - that's the point to use them in conjunction and that's why rel-urls is named what it is. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
# Why is the structure of  &amp;quot;rel-urls&amp;quot; different to the &amp;quot;alternates&amp;quot; structure. Should the &amp;quot;url&amp;quot; not just be added as a property and not as a key. Creating two data structures for one type of object seems inconsistent. It adds cognitive load to anyone trying to understand the JSON structure [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* I was trying to avoid breaking the existing &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; structure and use of it - I did implement a variant that put the structure inside rels, and it became cumbersome and repetitive where there were multiple rels on a url (xfn cases). Denormalising as properties of the URL made more sense. It also dedupes if there is repetitive linking to the same URL, eg a series of posts with rel-author on each. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
# If the rel is a &amp;quot;tag&amp;quot; then the main value we need to return should be the last path component of the URL, not the link text? Should we add another output property ie &amp;quot;tag&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* No need to return last path segment of the URL, because the URL is already there - and that's just a library/framework utility function to get the last path segment of a URL. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
# As currently described, the URL from &amp;lt;code&amp;gt;alternates&amp;lt;/code&amp;gt; is repeated in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; structure. If we are doing this, surely &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; should be in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; too? I assumed a mapping between them. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
## edit showing this variant: http://microformats.org/wiki/index.php?title=microformats2-parsing&amp;amp;oldid=65021#parse_a_hyperlink_element_for_rel_microformats&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
#* Yes it makes sense to drop &amp;quot;alternates&amp;quot; assuming the backcompat impact is low, put alternates in &amp;quot;rels&amp;quot; along with everything else, and direct people to use rels and rel-urls for alternates functionality. Evidence this is an acceptable even preferable approach.[http://indiewebcamp.com/irc/2015-06-01/line/1433195247005] Will add an issue accordingly. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Incorporated 2015-06-06 ==&lt;br /&gt;
&lt;br /&gt;
== Nested h-* objects' &amp;quot;value&amp;quot; property ==&lt;br /&gt;
Status: resolved, resolution iterated, one real world implementation proven implementability, incorporated&lt;br /&gt;
* 2015-06-06 incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
Raised 2015-01-06 by [[User:Kylewm]];&lt;br /&gt;
&lt;br /&gt;
If a child element has a microformat (h-*) and is a property element (p-*, u-*, dt-*, e-*), the parser will add a &amp;quot;value&amp;quot; property to the resulting object. The value should attempt to be a useful representation of the object for consumers that do not have semantic knowledge of the particular h-* type. Ref: [[microformats2-parsing#parse_an_element_for_class_microformats]].&lt;br /&gt;
&lt;br /&gt;
To determine the &amp;quot;value&amp;quot;, we parse the property element simply (as if it did not have a h-* class), which works well for simple h-* objects, e.g. &amp;lt;code&amp;gt;&amp;lt;a class=&amp;quot;u-like-of h-cite&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* To handle more complex microformats, I propose that &amp;quot;value&amp;quot; for a p-* property element take on the first explicit &amp;quot;name&amp;quot; property of the nested microformat, and for a u-* property, the first explicit &amp;quot;url&amp;quot; property. Parsing will fall back on the current rules if an explicit property does not exist.&lt;br /&gt;
** This makes sense to me, and fits with the use-cases and examples I've seen. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** A similar (possibly simpler?) formulation would use the implied name and url rules to determine the &amp;quot;value&amp;quot; for p-* and u-* properties respectively&lt;br /&gt;
*** I don't think that's needed, as there are already implied rules on a property that should handle that. I'd start with just the &amp;quot;first explicit&amp;quot; scoping to be more conservative, and then see if we find any use-cases that (and existing implied rules) don't/doesn't catch. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
**** Agreement at [[2015-01-20]] meetup.&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;u-in-reply-to h-cite&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Example Author&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/post&amp;quot;&amp;gt;Example Post&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nested u-in-reply-to object would parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;in-reply-to&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-cite&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;Example Post&amp;quot;],&lt;br /&gt;
    &amp;quot;url&amp;quot;: [&amp;quot;http://example.com/post&amp;quot;],&lt;br /&gt;
    &amp;quot;author&amp;quot;: [{&lt;br /&gt;
      &amp;quot;type&amp;quot;:[&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;http://example.com&amp;quot;], &lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Example Author&amp;quot;]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;Example Author&amp;quot;&lt;br /&gt;
    }],&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;value&amp;quot;: &amp;quot;http://example.com/post&amp;quot;&lt;br /&gt;
}]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the outer &amp;quot;value&amp;quot; gets the in-reply-to h-cite's u-url property, and the inner &amp;quot;value&amp;quot; gets the author's p-name property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Because there are no implied properties of the dt-* and e-* types, and no obvious defaults, the value rules for these types would not change.&lt;br /&gt;
** A possibility for dt-* h-*: The dt-* could take either the first dt-* of the h-*, or (perhaps if no dt-* in the h-*,) the first &amp;lt;code&amp;gt;&amp;amp;lt;time&amp;amp;gt;&amp;lt;/code&amp;gt; element inside. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** First dt-* seems reasonable, predictable, and usable. Consensus at [[2015-01-20]] meetup.&lt;br /&gt;
** Update 2015-05-29: no known use-cases for first dt-* or first e-*, and implementing that &amp;quot;would require some refactoring&amp;quot; (in mf2py at least per kylewm), thus until there's a use-case for first dt-*/e-* inside, let's treat &amp;quot;dt-* h-*&amp;quot; and &amp;quot;e-* h-*&amp;quot; as before. [[User:Tantek|Tantek]] . In particular:&lt;br /&gt;
*** p-* h-* - value from first &amp;quot;name&amp;quot; as proposed above&lt;br /&gt;
*** u-* h-* - value from first &amp;quot;url&amp;quot; as proposed above&lt;br /&gt;
*** e-* h-* - value is already defined for e-* parsing, nothing special here&lt;br /&gt;
*** dt-* h-* - value from normal dt-* parsing - nothing special.&lt;br /&gt;
*** +1 totally agree, let's wait for use cases of e-* dt-* [[User:Kylewm|Kylewm]] 19:44, 29 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Implemented in mf2py 2015-06-01 https://github.com/tommorris/mf2py/commit/edc895ef5a780bcee654e6644a688688934517b0&lt;br /&gt;
* Added to microformats test suite (experimental) 2015-06-01 https://github.com/microformats/tests/commit/90c8a7d8e96c7160036a298e13f16d9ddaec218e&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-brainstorming]]&lt;br /&gt;
* [[microformats2-prefixes]]&lt;br /&gt;
* [[microformats2-faq]]&lt;br /&gt;
* [[microformats2-issues]]&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>VoxPelli</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=65141</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=65141"/>
		<updated>2015-07-23T18:37:00Z</updated>

		<summary type="html">&lt;p&gt;VoxPelli: add link to experimental microformat-node implementation of language parsing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats2 parsing brainstorming&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is for brainstorming, discussion, and other questions and explorations about [[microformats2]] parsing.&lt;br /&gt;
&lt;br /&gt;
For the microformats2 parsing algorithm, see:&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
For filing issues / problems with microformats2-parsing, see:&lt;br /&gt;
* [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Parse language information ==&lt;br /&gt;
&lt;br /&gt;
Raised by [[User:VoxPelli|VoxPelli]] 18:04, 23 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Currently there’s no way to tell the language of parsed microformats even if those microformats has been marked up with HTML &amp;quot;lang&amp;quot;-attributes.&lt;br /&gt;
&lt;br /&gt;
There are examples in the wild of people marking up pages in such a way:&lt;br /&gt;
&lt;br /&gt;
* [http://voxpelli.com/ VoxPelli.com] has a &amp;quot;lang&amp;quot;-attribute on the h-entry of his [http://voxpelli.com/2011/03/sista-dagen-p-good-old/ swedish articles] to signify that the article is swedish even though the rest of the site is english.&lt;br /&gt;
* Stephanie [http://climbtothestars.org/archives/2013/09/17/basic-bilingual-1-0-plugin-for-wordpress-blog-in-more-than-one-language/ uses a WordPress plugin] that adds summaries of other languages at the start of her content.&lt;br /&gt;
&lt;br /&gt;
Proposal is to add a new &amp;quot;lang&amp;quot; keyword to h-* and e-* objects so that the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;se&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;En svensk titel&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;se&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;En svensk titel&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;With an english summary&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Och svensk huvudtext&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was [http://indiewebcamp.com/irc/2015-07-23#t1437667712078 brainstormed on the IndieWebCamp IRC-channel] where the mentioned example came up.&lt;br /&gt;
&lt;br /&gt;
* Pull request for implementation in microformat-node added 2015-07-23 https://github.com/glennjones/microformat-node/pull/23&lt;br /&gt;
&lt;br /&gt;
== Canonicalization of datetime output ==&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
It would be useful to choose a (more) uniform output format for datetimes to make it easier for users of the parser to consume datetimes. Microformats2 parsers already do sophisticated pattern matching to recognize date vs. time vs. datetimes, so converting this to any specific format should not add overhead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Specifically: &lt;br /&gt;
* Choose either 'T' or space as the date/time separator.&lt;br /&gt;
** Prefer space as it is more human friendly/readable, which matters even for syntaxes/formats, as human still develop, debug them. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* Choose either +XXYY or +XX:YY as the timezone specification (and convert 'Z' to +0000).&lt;br /&gt;
** Would appreciate some study / input here as to which timezone offset syntax is more human friendly. I lean slightly toward +/-NNNN (without the colon) because in the context of seeing a time, leaving out the colon makes it less likely the offset will be confused for a time. E.g. &amp;quot;07:00-08:00&amp;quot; looks like 7-8am, even if it meant 07:00 in PST. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** Space is fine - consensus [[2015-01-20]] meetup.&lt;br /&gt;
* Parsers should ''not'' attempt make datetimes more exact than specified. They should not add time, seconds, or timezone if omitted in the original. [[User:Kylewm|Kylewm]] 04:02, 14 May 2014 (UTC)&lt;br /&gt;
** Agreed. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** or month, day per Tom Morris&lt;br /&gt;
** consensus [[2015-01-20]] meetup&lt;br /&gt;
&lt;br /&gt;
* Counterpoint: PHP's builtin date parsing does not require strict formatting. And the equivalent functionality for Python is provided by the widely used python-dateutil library. [[User:Kylewm|Kylewm]] 19:02, 14 May 2014 (UTC)&lt;br /&gt;
** However we cannot (must not) depend on either PHP or Python's &amp;quot;smart&amp;quot; &amp;quot;fixing&amp;quot; or Postelian &amp;quot;liberal handling&amp;quot;, or any other language/framework's for that matter, as they all differ in how &amp;quot;intelligent&amp;quot; they are. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhaps just provide a guideline for these based on the above consensus.&lt;br /&gt;
&lt;br /&gt;
== Add meta http-equiv to microformats2 parsing model ==&lt;br /&gt;
Status: disagreement, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
Similar to document level parsing of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, it makes sense simultaneously to parse &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv&amp;amp;gt;&amp;lt;/code&amp;gt; elements, perhaps treating &amp;quot;Status&amp;quot; in a special way (only using first number (sequence of digits) for its &amp;quot;value&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Use case: IndieWeb &amp;quot;deleted&amp;quot; indication inline in content for static file services that don't support HTTP return codes.&lt;br /&gt;
* http://indiewebcamp.com/deleted#HTML_meta_http-equiv_for_status&lt;br /&gt;
&lt;br /&gt;
HTTP Header example:&lt;br /&gt;
* &amp;lt;samp&amp;gt;Content-Type: text/html; charset=utf-8&amp;lt;/samp&amp;gt;&lt;br /&gt;
HTML equivalent: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related:&lt;br /&gt;
* https://www.w3.org/International/O-HTTP-charset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Interesting thought. Are you suggesting a top level &amp;quot;http-equivs:&amp;quot; collection similar to &amp;quot;rels:&amp;quot; in the parsed output? Should we consider &amp;quot;metas:&amp;quot; instead or in addition? [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* What's the use case for this? Also, http-equiv on its own is useless. http-equiv is only a supplement to the data stored in headers. And headers aren't always there: what happens in the context of someone debugging a page who pastes the source into the textarea of an mf2 parser? Without a compelling use case for including headers (and then over-riding some of them with http-equivs), I'm not sure why an implementor want to do this. —[[User:TomMorris|Tom Morris]] 00:25, 8 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. from https://gist.github.com/aaronpk/10297489&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Status&amp;quot; content=&amp;quot;410 GONE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [],&lt;br /&gt;
 &amp;quot;rels&amp;quot;: {},&lt;br /&gt;
 &amp;quot;http&amp;quot;: {&lt;br /&gt;
 &amp;quot;status&amp;quot;: 410&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Maybe make this an optional pass in the parser? - Tom Morris [[2015-01-20]]&lt;br /&gt;
* For now, don't bother with metas until someone provides a use-case. Tom Morris&lt;br /&gt;
* Agreed on both counts. [[User:Tantek|Tantek]] 06:56, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MIME type==&lt;br /&gt;
See [[microformats2-mime-type]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation Parsing Notes==&lt;br /&gt;
Note: most of these need to be written up as separate [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&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;
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;
** *If* there is even some reasonable data on actual use of the &amp;quot;pubdate&amp;quot; attribute (I don't think there is, frankly, especially with the removal of the algorithm to produce Atom from HTML5), then we could consider parsing &amp;quot;pubdate&amp;quot; as backwards compatible option for &amp;quot;dt-published&amp;quot;. As a general rule, however, it is bad (demonstrably/experienced) design to depend on additional attributes (c.f. RDFa confusion over &amp;quot;property&amp;quot; vs. &amp;quot;rel&amp;quot;), especially for an instance where no additional attribute is necessary. I would leave this out for now until there is non-trivial (more than just test pages or folks who've written HTML5 books, ahem) use in the wild. When there is such use in the wild, it should be documented on a wiki page. We don't want to encourage more complex (additional attribute) publishing as a result of supporting it. [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
* [[value-class-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;
** A few things:&lt;br /&gt;
*** 1. Yes, no more subproperties. 'tel' becomes just 'p-tel'. If there is demand for a structured 'tel' value, then we can use that demand (and research into publishing in practice) to brainstorm and create an 'h-tel' structured telephone number (with perhaps fields like 'type', 'extension', some indication of it being local dialing (an extra 0 in some countries) or international dialing, etc.) Or, we address the different 'tel' types as their own flat properties (again as justified by research), e.g. perhaps 'p-tel-fax', or 'p-tel-mobile'. Something for hcard-2-brainstorming.&lt;br /&gt;
*** 2. For prices, e.g. hListing, either we're going to need to encode how to parse monetary amounts including monetary symbols, or consider creating an 'h-price' structured price. Not sure what the right answer is here, again, will need to be informed by analysis of documented actual price publication practices.&lt;br /&gt;
*** 3. We should avoid introducing a new prefix 'v-' just for value-class-pattern. As we've noted elsewhere, each new prefix adds complexity and should be avoided without substantial advantage.&lt;br /&gt;
*** 4. Using 'p-value-title' is strange, as it would be an exception to 'p-' parsing, since it would get the value from the 'title' attribute whereas 'p-' properties don't normally do that (exception: abbr).&lt;br /&gt;
*** 5. Using 'p-value' is also strange, as it wouldn't generate a 'value' property in the JSON data model.&lt;br /&gt;
*** 6. Class name 'value-title' is already sufficiently prefixed - we've found or even heard of no collisions in practice.&lt;br /&gt;
*** 7. Class name 'value' can, by its simpler naming nature, be expected to potentially collide with other web designer class name usage though we have no documentation/mention thereof. We could consider a renaming, or providing of alternative, such as 'value-string', or 'value-content', etc. However, let's keep that as a backup plan to use only if/when evidence is presented that we need to.&lt;br /&gt;
** Conclusions: for now, in microformats-2, keep using 'value' and 'value-title' as defined in the [[value-class-pattern]], and add the additional (obvious) interpretation that [[value-class-pattern#Date_and_time_parsing|value class pattern: date and time parsing]] applies to all 'dt-' properties. - [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== incorporated 2015-05-28 ==&lt;br /&gt;
The following brainstorms were incorporated 2015-05-28.&lt;br /&gt;
&lt;br /&gt;
== more information for alternates ==&lt;br /&gt;
Raised 2015-04-24 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
The existing &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; parsing is omitting &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - that should be added.  The &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; would make sense to add here too.&lt;br /&gt;
&lt;br /&gt;
Use-case: labels for presenting alternates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 Makes sense. [[User:Tantek|Tantek]] 03:41, 25 April 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== more information for rel-based formats ==&lt;br /&gt;
Raised 2015-04-18 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
Related github test suite issue: https://github.com/microformats/tests/issues/16&lt;br /&gt;
&lt;br /&gt;
Several rel-based formats have additional information that is useful beyond the link itself, which is all we capture at the moment. As I am trying to update the Universal feedparser to support mf2 based I will show examples from the [https://github.com/kevinmarks/feedparser/tree/365623a9470e99246f393a8c1f49a0db567826b8/feedparser/tests/microformats testcases] there.&lt;br /&gt;
&lt;br /&gt;
The main change is to add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; entry for more information about the attributes and text of the urls pointed to by rel's in the document&lt;br /&gt;
&lt;br /&gt;
A fork of mf2py that implements these changes is at https://github.com/kevinmarks/mf2py&lt;br /&gt;
=== rel-tag ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://del.icio.us/tag/tech&amp;quot;&amp;gt;Technology&amp;lt;/a&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;tag&amp;quot;: [&amp;quot;http://del.icio.us/tag/tech&amp;quot;]}, &amp;quot;items&amp;quot;: []} &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is useful as a label. &lt;br /&gt;
&lt;br /&gt;
We add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; element to the parsed output with this extra data that can be looked up from the rels, which doesn't break backward compatibility and works better with xfn (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://del.icio.us/tag/tech&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://del.icio.us/tag/tech&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Technology&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xfn ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;coworker&amp;quot;: [&amp;quot;http://example.com/johndoe&amp;quot;]}, &amp;quot;items&amp;quot;: []}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is the person's name. Suggested output using the urls object:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with multiple xfn values &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker friend&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
we get this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;friend&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;, &lt;br /&gt;
                &amp;quot;friend&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-enclosure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;enclosure&amp;quot; href=&amp;quot;http://example.com/movie.mp4&amp;quot; type=&amp;quot;video/mpeg&amp;quot; title=&amp;quot;real title&amp;quot;&amp;gt;my movie&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;'{&amp;quot;rels&amp;quot;: {&amp;quot;enclosure&amp;quot;: [&amp;quot;http://example.com/movie.mp4&amp;quot;]}, &amp;quot;items&amp;quot;: []}'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text,  which is the title and the attributes which give type. Suggested output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;enclosure&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/movie.mp4&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/movie.mp4&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;enclosure&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot;, &lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;video/mpeg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;real title&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This generalises to other rel's too, such as [[rel-feed]] and [[rel-alternate]] that have type, lang etc attributes.&lt;br /&gt;
&lt;br /&gt;
(updated to include changes from feedback below) [[User:Kevin Marks|Kevin Marks]] 22:13, 26 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== attributes parsed ===&lt;br /&gt;
Attributes currently parsed are:&lt;br /&gt;
* &amp;lt;code&amp;gt;hreflang&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
&lt;br /&gt;
Attributes we may consider parsing if we have a use case are &lt;br /&gt;
* &amp;lt;code&amp;gt;sizes&amp;lt;/code&amp;gt; for icon - need use-case documentation&lt;br /&gt;
* &amp;lt;code&amp;gt;coords&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
* &amp;lt;code&amp;gt;shape&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
&lt;br /&gt;
In addition there is a special attribute &amp;lt;s&amp;gt;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; &amp;lt;/s&amp;gt;&amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; which is the text contents of the link, which is useful in rel-tag rel-enclosure and xfn, and in alternate when used for feeds. It's also clarifying for rel-me links. &lt;br /&gt;
&lt;br /&gt;
Tantek [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79057 suggests] we use &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; for this instead, and make it a single string, not a list as &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is elsewhere in mf2 parsing&lt;br /&gt;
* Update: &amp;quot;text&amp;quot; is good enough, and &amp;quot;textContent&amp;quot; is ugly camelCase. [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== feedback on more rel info ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;quot;name&amp;quot; is bad because it misleadingly conflates with use of &amp;quot;name&amp;quot; elsewhere in microformats2.&lt;br /&gt;
#* Suggested alternative: [https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent textContent] - since that's literally what is being returned there. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** as all other mf2 keys are lowercase-with-hyphens, [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79101 Tantek suggests] 'text' as that isn't going to be an html [[User:Kevin Marks|Kevin Marks]] 07:28, 25 April 2015 (UTC)&lt;br /&gt;
# no need for array for &amp;quot;name&amp;quot;/textContent - since there is always only one at most&lt;br /&gt;
#* E.g. should be &amp;quot;textContent&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#* Update: &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
# &amp;quot;urls&amp;quot; key is misleading - implies all URLs in the document, which is neither true, nor desired (takes much more parsing time and work and code)&lt;br /&gt;
#* Suggested alternative: &amp;quot;rel-urls&amp;quot;. And open to better alternatives too. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** If we are trying to extend the number of properties retuned from a rel without breaking the old structure why don't we call the new structure something like &amp;quot;rels-extended&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#*** Extension is not the point, but rather to use them complementary. One structure for look-up of any rel value, hence &amp;quot;rels&amp;quot;, which returns you a list of URLs. Then you can lookup those URLs in the new mapping, by URL, hence it is called &amp;quot;rel-urls&amp;quot; - that's the point to use them in conjunction and that's why rel-urls is named what it is. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
# Why is the structure of  &amp;quot;rel-urls&amp;quot; different to the &amp;quot;alternates&amp;quot; structure. Should the &amp;quot;url&amp;quot; not just be added as a property and not as a key. Creating two data structures for one type of object seems inconsistent. It adds cognitive load to anyone trying to understand the JSON structure [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* I was trying to avoid breaking the existing &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; structure and use of it - I did implement a variant that put the structure inside rels, and it became cumbersome and repetitive where there were multiple rels on a url (xfn cases). Denormalising as properties of the URL made more sense. It also dedupes if there is repetitive linking to the same URL, eg a series of posts with rel-author on each. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
# If the rel is a &amp;quot;tag&amp;quot; then the main value we need to return should be the last path component of the URL, not the link text? Should we add another output property ie &amp;quot;tag&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* No need to return last path segment of the URL, because the URL is already there - and that's just a library/framework utility function to get the last path segment of a URL. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
# As currently described, the URL from &amp;lt;code&amp;gt;alternates&amp;lt;/code&amp;gt; is repeated in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; structure. If we are doing this, surely &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; should be in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; too? I assumed a mapping between them. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
## edit showing this variant: http://microformats.org/wiki/index.php?title=microformats2-parsing&amp;amp;oldid=65021#parse_a_hyperlink_element_for_rel_microformats&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
#* Yes it makes sense to drop &amp;quot;alternates&amp;quot; assuming the backcompat impact is low, put alternates in &amp;quot;rels&amp;quot; along with everything else, and direct people to use rels and rel-urls for alternates functionality. Evidence this is an acceptable even preferable approach.[http://indiewebcamp.com/irc/2015-06-01/line/1433195247005] Will add an issue accordingly. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Incorporated 2015-06-06 ==&lt;br /&gt;
&lt;br /&gt;
== Nested h-* objects' &amp;quot;value&amp;quot; property ==&lt;br /&gt;
Status: resolved, resolution iterated, one real world implementation proven implementability, incorporated&lt;br /&gt;
* 2015-06-06 incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
Raised 2015-01-06 by [[User:Kylewm]];&lt;br /&gt;
&lt;br /&gt;
If a child element has a microformat (h-*) and is a property element (p-*, u-*, dt-*, e-*), the parser will add a &amp;quot;value&amp;quot; property to the resulting object. The value should attempt to be a useful representation of the object for consumers that do not have semantic knowledge of the particular h-* type. Ref: [[microformats2-parsing#parse_an_element_for_class_microformats]].&lt;br /&gt;
&lt;br /&gt;
To determine the &amp;quot;value&amp;quot;, we parse the property element simply (as if it did not have a h-* class), which works well for simple h-* objects, e.g. &amp;lt;code&amp;gt;&amp;lt;a class=&amp;quot;u-like-of h-cite&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* To handle more complex microformats, I propose that &amp;quot;value&amp;quot; for a p-* property element take on the first explicit &amp;quot;name&amp;quot; property of the nested microformat, and for a u-* property, the first explicit &amp;quot;url&amp;quot; property. Parsing will fall back on the current rules if an explicit property does not exist.&lt;br /&gt;
** This makes sense to me, and fits with the use-cases and examples I've seen. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** A similar (possibly simpler?) formulation would use the implied name and url rules to determine the &amp;quot;value&amp;quot; for p-* and u-* properties respectively&lt;br /&gt;
*** I don't think that's needed, as there are already implied rules on a property that should handle that. I'd start with just the &amp;quot;first explicit&amp;quot; scoping to be more conservative, and then see if we find any use-cases that (and existing implied rules) don't/doesn't catch. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
**** Agreement at [[2015-01-20]] meetup.&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;u-in-reply-to h-cite&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Example Author&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/post&amp;quot;&amp;gt;Example Post&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nested u-in-reply-to object would parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;in-reply-to&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-cite&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;Example Post&amp;quot;],&lt;br /&gt;
    &amp;quot;url&amp;quot;: [&amp;quot;http://example.com/post&amp;quot;],&lt;br /&gt;
    &amp;quot;author&amp;quot;: [{&lt;br /&gt;
      &amp;quot;type&amp;quot;:[&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;http://example.com&amp;quot;], &lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Example Author&amp;quot;]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;Example Author&amp;quot;&lt;br /&gt;
    }],&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;value&amp;quot;: &amp;quot;http://example.com/post&amp;quot;&lt;br /&gt;
}]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the outer &amp;quot;value&amp;quot; gets the in-reply-to h-cite's u-url property, and the inner &amp;quot;value&amp;quot; gets the author's p-name property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Because there are no implied properties of the dt-* and e-* types, and no obvious defaults, the value rules for these types would not change.&lt;br /&gt;
** A possibility for dt-* h-*: The dt-* could take either the first dt-* of the h-*, or (perhaps if no dt-* in the h-*,) the first &amp;lt;code&amp;gt;&amp;amp;lt;time&amp;amp;gt;&amp;lt;/code&amp;gt; element inside. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** First dt-* seems reasonable, predictable, and usable. Consensus at [[2015-01-20]] meetup.&lt;br /&gt;
** Update 2015-05-29: no known use-cases for first dt-* or first e-*, and implementing that &amp;quot;would require some refactoring&amp;quot; (in mf2py at least per kylewm), thus until there's a use-case for first dt-*/e-* inside, let's treat &amp;quot;dt-* h-*&amp;quot; and &amp;quot;e-* h-*&amp;quot; as before. [[User:Tantek|Tantek]] . In particular:&lt;br /&gt;
*** p-* h-* - value from first &amp;quot;name&amp;quot; as proposed above&lt;br /&gt;
*** u-* h-* - value from first &amp;quot;url&amp;quot; as proposed above&lt;br /&gt;
*** e-* h-* - value is already defined for e-* parsing, nothing special here&lt;br /&gt;
*** dt-* h-* - value from normal dt-* parsing - nothing special.&lt;br /&gt;
*** +1 totally agree, let's wait for use cases of e-* dt-* [[User:Kylewm|Kylewm]] 19:44, 29 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Implemented in mf2py 2015-06-01 https://github.com/tommorris/mf2py/commit/edc895ef5a780bcee654e6644a688688934517b0&lt;br /&gt;
* Added to microformats test suite (experimental) 2015-06-01 https://github.com/microformats/tests/commit/90c8a7d8e96c7160036a298e13f16d9ddaec218e&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-brainstorming]]&lt;br /&gt;
* [[microformats2-prefixes]]&lt;br /&gt;
* [[microformats2-faq]]&lt;br /&gt;
* [[microformats2-issues]]&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>VoxPelli</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=65140</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=65140"/>
		<updated>2015-07-23T18:10:35Z</updated>

		<summary type="html">&lt;p&gt;VoxPelli: based on feedback, added some html to the e-* properties of the language example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats2 parsing brainstorming&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is for brainstorming, discussion, and other questions and explorations about [[microformats2]] parsing.&lt;br /&gt;
&lt;br /&gt;
For the microformats2 parsing algorithm, see:&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
For filing issues / problems with microformats2-parsing, see:&lt;br /&gt;
* [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Parse language information ==&lt;br /&gt;
&lt;br /&gt;
Raised by [[User:VoxPelli|VoxPelli]] 18:04, 23 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Currently there’s no way to tell the language of parsed microformats even if those microformats has been marked up with HTML &amp;quot;lang&amp;quot;-attributes.&lt;br /&gt;
&lt;br /&gt;
There are examples in the wild of people marking up pages in such a way:&lt;br /&gt;
&lt;br /&gt;
* [http://voxpelli.com/ VoxPelli.com] has a &amp;quot;lang&amp;quot;-attribute on the h-entry of his [http://voxpelli.com/2011/03/sista-dagen-p-good-old/ swedish articles] to signify that the article is swedish even though the rest of the site is english.&lt;br /&gt;
* Stephanie [http://climbtothestars.org/archives/2013/09/17/basic-bilingual-1-0-plugin-for-wordpress-blog-in-more-than-one-language/ uses a WordPress plugin] that adds summaries of other languages at the start of her content.&lt;br /&gt;
&lt;br /&gt;
Proposal is to add a new &amp;quot;lang&amp;quot; keyword to h-* and e-* objects so that the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;se&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;En svensk titel&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;se&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;En svensk titel&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;With an english summary&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Och svensk huvudtext&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was [http://indiewebcamp.com/irc/2015-07-23#t1437667712078 brainstormed on the IndieWebCamp IRC-channel] where the mentioned example came up.&lt;br /&gt;
&lt;br /&gt;
== Canonicalization of datetime output ==&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
It would be useful to choose a (more) uniform output format for datetimes to make it easier for users of the parser to consume datetimes. Microformats2 parsers already do sophisticated pattern matching to recognize date vs. time vs. datetimes, so converting this to any specific format should not add overhead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Specifically: &lt;br /&gt;
* Choose either 'T' or space as the date/time separator.&lt;br /&gt;
** Prefer space as it is more human friendly/readable, which matters even for syntaxes/formats, as human still develop, debug them. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* Choose either +XXYY or +XX:YY as the timezone specification (and convert 'Z' to +0000).&lt;br /&gt;
** Would appreciate some study / input here as to which timezone offset syntax is more human friendly. I lean slightly toward +/-NNNN (without the colon) because in the context of seeing a time, leaving out the colon makes it less likely the offset will be confused for a time. E.g. &amp;quot;07:00-08:00&amp;quot; looks like 7-8am, even if it meant 07:00 in PST. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** Space is fine - consensus [[2015-01-20]] meetup.&lt;br /&gt;
* Parsers should ''not'' attempt make datetimes more exact than specified. They should not add time, seconds, or timezone if omitted in the original. [[User:Kylewm|Kylewm]] 04:02, 14 May 2014 (UTC)&lt;br /&gt;
** Agreed. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** or month, day per Tom Morris&lt;br /&gt;
** consensus [[2015-01-20]] meetup&lt;br /&gt;
&lt;br /&gt;
* Counterpoint: PHP's builtin date parsing does not require strict formatting. And the equivalent functionality for Python is provided by the widely used python-dateutil library. [[User:Kylewm|Kylewm]] 19:02, 14 May 2014 (UTC)&lt;br /&gt;
** However we cannot (must not) depend on either PHP or Python's &amp;quot;smart&amp;quot; &amp;quot;fixing&amp;quot; or Postelian &amp;quot;liberal handling&amp;quot;, or any other language/framework's for that matter, as they all differ in how &amp;quot;intelligent&amp;quot; they are. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhaps just provide a guideline for these based on the above consensus.&lt;br /&gt;
&lt;br /&gt;
== Add meta http-equiv to microformats2 parsing model ==&lt;br /&gt;
Status: disagreement, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
Similar to document level parsing of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, it makes sense simultaneously to parse &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv&amp;amp;gt;&amp;lt;/code&amp;gt; elements, perhaps treating &amp;quot;Status&amp;quot; in a special way (only using first number (sequence of digits) for its &amp;quot;value&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Use case: IndieWeb &amp;quot;deleted&amp;quot; indication inline in content for static file services that don't support HTTP return codes.&lt;br /&gt;
* http://indiewebcamp.com/deleted#HTML_meta_http-equiv_for_status&lt;br /&gt;
&lt;br /&gt;
HTTP Header example:&lt;br /&gt;
* &amp;lt;samp&amp;gt;Content-Type: text/html; charset=utf-8&amp;lt;/samp&amp;gt;&lt;br /&gt;
HTML equivalent: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related:&lt;br /&gt;
* https://www.w3.org/International/O-HTTP-charset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Interesting thought. Are you suggesting a top level &amp;quot;http-equivs:&amp;quot; collection similar to &amp;quot;rels:&amp;quot; in the parsed output? Should we consider &amp;quot;metas:&amp;quot; instead or in addition? [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* What's the use case for this? Also, http-equiv on its own is useless. http-equiv is only a supplement to the data stored in headers. And headers aren't always there: what happens in the context of someone debugging a page who pastes the source into the textarea of an mf2 parser? Without a compelling use case for including headers (and then over-riding some of them with http-equivs), I'm not sure why an implementor want to do this. —[[User:TomMorris|Tom Morris]] 00:25, 8 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. from https://gist.github.com/aaronpk/10297489&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Status&amp;quot; content=&amp;quot;410 GONE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [],&lt;br /&gt;
 &amp;quot;rels&amp;quot;: {},&lt;br /&gt;
 &amp;quot;http&amp;quot;: {&lt;br /&gt;
 &amp;quot;status&amp;quot;: 410&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Maybe make this an optional pass in the parser? - Tom Morris [[2015-01-20]]&lt;br /&gt;
* For now, don't bother with metas until someone provides a use-case. Tom Morris&lt;br /&gt;
* Agreed on both counts. [[User:Tantek|Tantek]] 06:56, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MIME type==&lt;br /&gt;
See [[microformats2-mime-type]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation Parsing Notes==&lt;br /&gt;
Note: most of these need to be written up as separate [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&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;
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;
** *If* there is even some reasonable data on actual use of the &amp;quot;pubdate&amp;quot; attribute (I don't think there is, frankly, especially with the removal of the algorithm to produce Atom from HTML5), then we could consider parsing &amp;quot;pubdate&amp;quot; as backwards compatible option for &amp;quot;dt-published&amp;quot;. As a general rule, however, it is bad (demonstrably/experienced) design to depend on additional attributes (c.f. RDFa confusion over &amp;quot;property&amp;quot; vs. &amp;quot;rel&amp;quot;), especially for an instance where no additional attribute is necessary. I would leave this out for now until there is non-trivial (more than just test pages or folks who've written HTML5 books, ahem) use in the wild. When there is such use in the wild, it should be documented on a wiki page. We don't want to encourage more complex (additional attribute) publishing as a result of supporting it. [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
* [[value-class-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;
** A few things:&lt;br /&gt;
*** 1. Yes, no more subproperties. 'tel' becomes just 'p-tel'. If there is demand for a structured 'tel' value, then we can use that demand (and research into publishing in practice) to brainstorm and create an 'h-tel' structured telephone number (with perhaps fields like 'type', 'extension', some indication of it being local dialing (an extra 0 in some countries) or international dialing, etc.) Or, we address the different 'tel' types as their own flat properties (again as justified by research), e.g. perhaps 'p-tel-fax', or 'p-tel-mobile'. Something for hcard-2-brainstorming.&lt;br /&gt;
*** 2. For prices, e.g. hListing, either we're going to need to encode how to parse monetary amounts including monetary symbols, or consider creating an 'h-price' structured price. Not sure what the right answer is here, again, will need to be informed by analysis of documented actual price publication practices.&lt;br /&gt;
*** 3. We should avoid introducing a new prefix 'v-' just for value-class-pattern. As we've noted elsewhere, each new prefix adds complexity and should be avoided without substantial advantage.&lt;br /&gt;
*** 4. Using 'p-value-title' is strange, as it would be an exception to 'p-' parsing, since it would get the value from the 'title' attribute whereas 'p-' properties don't normally do that (exception: abbr).&lt;br /&gt;
*** 5. Using 'p-value' is also strange, as it wouldn't generate a 'value' property in the JSON data model.&lt;br /&gt;
*** 6. Class name 'value-title' is already sufficiently prefixed - we've found or even heard of no collisions in practice.&lt;br /&gt;
*** 7. Class name 'value' can, by its simpler naming nature, be expected to potentially collide with other web designer class name usage though we have no documentation/mention thereof. We could consider a renaming, or providing of alternative, such as 'value-string', or 'value-content', etc. However, let's keep that as a backup plan to use only if/when evidence is presented that we need to.&lt;br /&gt;
** Conclusions: for now, in microformats-2, keep using 'value' and 'value-title' as defined in the [[value-class-pattern]], and add the additional (obvious) interpretation that [[value-class-pattern#Date_and_time_parsing|value class pattern: date and time parsing]] applies to all 'dt-' properties. - [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== incorporated 2015-05-28 ==&lt;br /&gt;
The following brainstorms were incorporated 2015-05-28.&lt;br /&gt;
&lt;br /&gt;
== more information for alternates ==&lt;br /&gt;
Raised 2015-04-24 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
The existing &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; parsing is omitting &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - that should be added.  The &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; would make sense to add here too.&lt;br /&gt;
&lt;br /&gt;
Use-case: labels for presenting alternates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 Makes sense. [[User:Tantek|Tantek]] 03:41, 25 April 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== more information for rel-based formats ==&lt;br /&gt;
Raised 2015-04-18 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
Related github test suite issue: https://github.com/microformats/tests/issues/16&lt;br /&gt;
&lt;br /&gt;
Several rel-based formats have additional information that is useful beyond the link itself, which is all we capture at the moment. As I am trying to update the Universal feedparser to support mf2 based I will show examples from the [https://github.com/kevinmarks/feedparser/tree/365623a9470e99246f393a8c1f49a0db567826b8/feedparser/tests/microformats testcases] there.&lt;br /&gt;
&lt;br /&gt;
The main change is to add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; entry for more information about the attributes and text of the urls pointed to by rel's in the document&lt;br /&gt;
&lt;br /&gt;
A fork of mf2py that implements these changes is at https://github.com/kevinmarks/mf2py&lt;br /&gt;
=== rel-tag ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://del.icio.us/tag/tech&amp;quot;&amp;gt;Technology&amp;lt;/a&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;tag&amp;quot;: [&amp;quot;http://del.icio.us/tag/tech&amp;quot;]}, &amp;quot;items&amp;quot;: []} &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is useful as a label. &lt;br /&gt;
&lt;br /&gt;
We add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; element to the parsed output with this extra data that can be looked up from the rels, which doesn't break backward compatibility and works better with xfn (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://del.icio.us/tag/tech&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://del.icio.us/tag/tech&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Technology&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xfn ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;coworker&amp;quot;: [&amp;quot;http://example.com/johndoe&amp;quot;]}, &amp;quot;items&amp;quot;: []}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is the person's name. Suggested output using the urls object:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with multiple xfn values &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker friend&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
we get this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;friend&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;, &lt;br /&gt;
                &amp;quot;friend&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-enclosure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;enclosure&amp;quot; href=&amp;quot;http://example.com/movie.mp4&amp;quot; type=&amp;quot;video/mpeg&amp;quot; title=&amp;quot;real title&amp;quot;&amp;gt;my movie&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;'{&amp;quot;rels&amp;quot;: {&amp;quot;enclosure&amp;quot;: [&amp;quot;http://example.com/movie.mp4&amp;quot;]}, &amp;quot;items&amp;quot;: []}'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text,  which is the title and the attributes which give type. Suggested output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;enclosure&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/movie.mp4&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/movie.mp4&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;enclosure&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot;, &lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;video/mpeg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;real title&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This generalises to other rel's too, such as [[rel-feed]] and [[rel-alternate]] that have type, lang etc attributes.&lt;br /&gt;
&lt;br /&gt;
(updated to include changes from feedback below) [[User:Kevin Marks|Kevin Marks]] 22:13, 26 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== attributes parsed ===&lt;br /&gt;
Attributes currently parsed are:&lt;br /&gt;
* &amp;lt;code&amp;gt;hreflang&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
&lt;br /&gt;
Attributes we may consider parsing if we have a use case are &lt;br /&gt;
* &amp;lt;code&amp;gt;sizes&amp;lt;/code&amp;gt; for icon - need use-case documentation&lt;br /&gt;
* &amp;lt;code&amp;gt;coords&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
* &amp;lt;code&amp;gt;shape&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
&lt;br /&gt;
In addition there is a special attribute &amp;lt;s&amp;gt;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; &amp;lt;/s&amp;gt;&amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; which is the text contents of the link, which is useful in rel-tag rel-enclosure and xfn, and in alternate when used for feeds. It's also clarifying for rel-me links. &lt;br /&gt;
&lt;br /&gt;
Tantek [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79057 suggests] we use &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; for this instead, and make it a single string, not a list as &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is elsewhere in mf2 parsing&lt;br /&gt;
* Update: &amp;quot;text&amp;quot; is good enough, and &amp;quot;textContent&amp;quot; is ugly camelCase. [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== feedback on more rel info ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;quot;name&amp;quot; is bad because it misleadingly conflates with use of &amp;quot;name&amp;quot; elsewhere in microformats2.&lt;br /&gt;
#* Suggested alternative: [https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent textContent] - since that's literally what is being returned there. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** as all other mf2 keys are lowercase-with-hyphens, [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79101 Tantek suggests] 'text' as that isn't going to be an html [[User:Kevin Marks|Kevin Marks]] 07:28, 25 April 2015 (UTC)&lt;br /&gt;
# no need for array for &amp;quot;name&amp;quot;/textContent - since there is always only one at most&lt;br /&gt;
#* E.g. should be &amp;quot;textContent&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#* Update: &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
# &amp;quot;urls&amp;quot; key is misleading - implies all URLs in the document, which is neither true, nor desired (takes much more parsing time and work and code)&lt;br /&gt;
#* Suggested alternative: &amp;quot;rel-urls&amp;quot;. And open to better alternatives too. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** If we are trying to extend the number of properties retuned from a rel without breaking the old structure why don't we call the new structure something like &amp;quot;rels-extended&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#*** Extension is not the point, but rather to use them complementary. One structure for look-up of any rel value, hence &amp;quot;rels&amp;quot;, which returns you a list of URLs. Then you can lookup those URLs in the new mapping, by URL, hence it is called &amp;quot;rel-urls&amp;quot; - that's the point to use them in conjunction and that's why rel-urls is named what it is. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
# Why is the structure of  &amp;quot;rel-urls&amp;quot; different to the &amp;quot;alternates&amp;quot; structure. Should the &amp;quot;url&amp;quot; not just be added as a property and not as a key. Creating two data structures for one type of object seems inconsistent. It adds cognitive load to anyone trying to understand the JSON structure [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* I was trying to avoid breaking the existing &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; structure and use of it - I did implement a variant that put the structure inside rels, and it became cumbersome and repetitive where there were multiple rels on a url (xfn cases). Denormalising as properties of the URL made more sense. It also dedupes if there is repetitive linking to the same URL, eg a series of posts with rel-author on each. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
# If the rel is a &amp;quot;tag&amp;quot; then the main value we need to return should be the last path component of the URL, not the link text? Should we add another output property ie &amp;quot;tag&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* No need to return last path segment of the URL, because the URL is already there - and that's just a library/framework utility function to get the last path segment of a URL. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
# As currently described, the URL from &amp;lt;code&amp;gt;alternates&amp;lt;/code&amp;gt; is repeated in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; structure. If we are doing this, surely &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; should be in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; too? I assumed a mapping between them. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
## edit showing this variant: http://microformats.org/wiki/index.php?title=microformats2-parsing&amp;amp;oldid=65021#parse_a_hyperlink_element_for_rel_microformats&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
#* Yes it makes sense to drop &amp;quot;alternates&amp;quot; assuming the backcompat impact is low, put alternates in &amp;quot;rels&amp;quot; along with everything else, and direct people to use rels and rel-urls for alternates functionality. Evidence this is an acceptable even preferable approach.[http://indiewebcamp.com/irc/2015-06-01/line/1433195247005] Will add an issue accordingly. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Incorporated 2015-06-06 ==&lt;br /&gt;
&lt;br /&gt;
== Nested h-* objects' &amp;quot;value&amp;quot; property ==&lt;br /&gt;
Status: resolved, resolution iterated, one real world implementation proven implementability, incorporated&lt;br /&gt;
* 2015-06-06 incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
Raised 2015-01-06 by [[User:Kylewm]];&lt;br /&gt;
&lt;br /&gt;
If a child element has a microformat (h-*) and is a property element (p-*, u-*, dt-*, e-*), the parser will add a &amp;quot;value&amp;quot; property to the resulting object. The value should attempt to be a useful representation of the object for consumers that do not have semantic knowledge of the particular h-* type. Ref: [[microformats2-parsing#parse_an_element_for_class_microformats]].&lt;br /&gt;
&lt;br /&gt;
To determine the &amp;quot;value&amp;quot;, we parse the property element simply (as if it did not have a h-* class), which works well for simple h-* objects, e.g. &amp;lt;code&amp;gt;&amp;lt;a class=&amp;quot;u-like-of h-cite&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* To handle more complex microformats, I propose that &amp;quot;value&amp;quot; for a p-* property element take on the first explicit &amp;quot;name&amp;quot; property of the nested microformat, and for a u-* property, the first explicit &amp;quot;url&amp;quot; property. Parsing will fall back on the current rules if an explicit property does not exist.&lt;br /&gt;
** This makes sense to me, and fits with the use-cases and examples I've seen. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** A similar (possibly simpler?) formulation would use the implied name and url rules to determine the &amp;quot;value&amp;quot; for p-* and u-* properties respectively&lt;br /&gt;
*** I don't think that's needed, as there are already implied rules on a property that should handle that. I'd start with just the &amp;quot;first explicit&amp;quot; scoping to be more conservative, and then see if we find any use-cases that (and existing implied rules) don't/doesn't catch. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
**** Agreement at [[2015-01-20]] meetup.&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;u-in-reply-to h-cite&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Example Author&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/post&amp;quot;&amp;gt;Example Post&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nested u-in-reply-to object would parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;in-reply-to&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-cite&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;Example Post&amp;quot;],&lt;br /&gt;
    &amp;quot;url&amp;quot;: [&amp;quot;http://example.com/post&amp;quot;],&lt;br /&gt;
    &amp;quot;author&amp;quot;: [{&lt;br /&gt;
      &amp;quot;type&amp;quot;:[&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;http://example.com&amp;quot;], &lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Example Author&amp;quot;]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;Example Author&amp;quot;&lt;br /&gt;
    }],&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;value&amp;quot;: &amp;quot;http://example.com/post&amp;quot;&lt;br /&gt;
}]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the outer &amp;quot;value&amp;quot; gets the in-reply-to h-cite's u-url property, and the inner &amp;quot;value&amp;quot; gets the author's p-name property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Because there are no implied properties of the dt-* and e-* types, and no obvious defaults, the value rules for these types would not change.&lt;br /&gt;
** A possibility for dt-* h-*: The dt-* could take either the first dt-* of the h-*, or (perhaps if no dt-* in the h-*,) the first &amp;lt;code&amp;gt;&amp;amp;lt;time&amp;amp;gt;&amp;lt;/code&amp;gt; element inside. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** First dt-* seems reasonable, predictable, and usable. Consensus at [[2015-01-20]] meetup.&lt;br /&gt;
** Update 2015-05-29: no known use-cases for first dt-* or first e-*, and implementing that &amp;quot;would require some refactoring&amp;quot; (in mf2py at least per kylewm), thus until there's a use-case for first dt-*/e-* inside, let's treat &amp;quot;dt-* h-*&amp;quot; and &amp;quot;e-* h-*&amp;quot; as before. [[User:Tantek|Tantek]] . In particular:&lt;br /&gt;
*** p-* h-* - value from first &amp;quot;name&amp;quot; as proposed above&lt;br /&gt;
*** u-* h-* - value from first &amp;quot;url&amp;quot; as proposed above&lt;br /&gt;
*** e-* h-* - value is already defined for e-* parsing, nothing special here&lt;br /&gt;
*** dt-* h-* - value from normal dt-* parsing - nothing special.&lt;br /&gt;
*** +1 totally agree, let's wait for use cases of e-* dt-* [[User:Kylewm|Kylewm]] 19:44, 29 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Implemented in mf2py 2015-06-01 https://github.com/tommorris/mf2py/commit/edc895ef5a780bcee654e6644a688688934517b0&lt;br /&gt;
* Added to microformats test suite (experimental) 2015-06-01 https://github.com/microformats/tests/commit/90c8a7d8e96c7160036a298e13f16d9ddaec218e&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-brainstorming]]&lt;br /&gt;
* [[microformats2-prefixes]]&lt;br /&gt;
* [[microformats2-faq]]&lt;br /&gt;
* [[microformats2-issues]]&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>VoxPelli</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=65139</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=65139"/>
		<updated>2015-07-23T18:09:17Z</updated>

		<summary type="html">&lt;p&gt;VoxPelli: change language example to include actual real swedish and english&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats2 parsing brainstorming&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is for brainstorming, discussion, and other questions and explorations about [[microformats2]] parsing.&lt;br /&gt;
&lt;br /&gt;
For the microformats2 parsing algorithm, see:&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
For filing issues / problems with microformats2-parsing, see:&lt;br /&gt;
* [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Parse language information ==&lt;br /&gt;
&lt;br /&gt;
Raised by [[User:VoxPelli|VoxPelli]] 18:04, 23 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Currently there’s no way to tell the language of parsed microformats even if those microformats has been marked up with HTML &amp;quot;lang&amp;quot;-attributes.&lt;br /&gt;
&lt;br /&gt;
There are examples in the wild of people marking up pages in such a way:&lt;br /&gt;
&lt;br /&gt;
* [http://voxpelli.com/ VoxPelli.com] has a &amp;quot;lang&amp;quot;-attribute on the h-entry of his [http://voxpelli.com/2011/03/sista-dagen-p-good-old/ swedish articles] to signify that the article is swedish even though the rest of the site is english.&lt;br /&gt;
* Stephanie [http://climbtothestars.org/archives/2013/09/17/basic-bilingual-1-0-plugin-for-wordpress-blog-in-more-than-one-language/ uses a WordPress plugin] that adds summaries of other languages at the start of her content.&lt;br /&gt;
&lt;br /&gt;
Proposal is to add a new &amp;quot;lang&amp;quot; keyword to h-* and e-* objects so that the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;se&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;En svensk titel&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;With an english summary&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Och svensk huvudtext&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;se&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;En svensk titel&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;With an english summary&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;With an english summary&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Och svensk huvudtext&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Och svensk huvudtext&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was [http://indiewebcamp.com/irc/2015-07-23#t1437667712078 brainstormed on the IndieWebCamp IRC-channel] where the mentioned example came up.&lt;br /&gt;
&lt;br /&gt;
== Canonicalization of datetime output ==&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
It would be useful to choose a (more) uniform output format for datetimes to make it easier for users of the parser to consume datetimes. Microformats2 parsers already do sophisticated pattern matching to recognize date vs. time vs. datetimes, so converting this to any specific format should not add overhead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Specifically: &lt;br /&gt;
* Choose either 'T' or space as the date/time separator.&lt;br /&gt;
** Prefer space as it is more human friendly/readable, which matters even for syntaxes/formats, as human still develop, debug them. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* Choose either +XXYY or +XX:YY as the timezone specification (and convert 'Z' to +0000).&lt;br /&gt;
** Would appreciate some study / input here as to which timezone offset syntax is more human friendly. I lean slightly toward +/-NNNN (without the colon) because in the context of seeing a time, leaving out the colon makes it less likely the offset will be confused for a time. E.g. &amp;quot;07:00-08:00&amp;quot; looks like 7-8am, even if it meant 07:00 in PST. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** Space is fine - consensus [[2015-01-20]] meetup.&lt;br /&gt;
* Parsers should ''not'' attempt make datetimes more exact than specified. They should not add time, seconds, or timezone if omitted in the original. [[User:Kylewm|Kylewm]] 04:02, 14 May 2014 (UTC)&lt;br /&gt;
** Agreed. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** or month, day per Tom Morris&lt;br /&gt;
** consensus [[2015-01-20]] meetup&lt;br /&gt;
&lt;br /&gt;
* Counterpoint: PHP's builtin date parsing does not require strict formatting. And the equivalent functionality for Python is provided by the widely used python-dateutil library. [[User:Kylewm|Kylewm]] 19:02, 14 May 2014 (UTC)&lt;br /&gt;
** However we cannot (must not) depend on either PHP or Python's &amp;quot;smart&amp;quot; &amp;quot;fixing&amp;quot; or Postelian &amp;quot;liberal handling&amp;quot;, or any other language/framework's for that matter, as they all differ in how &amp;quot;intelligent&amp;quot; they are. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhaps just provide a guideline for these based on the above consensus.&lt;br /&gt;
&lt;br /&gt;
== Add meta http-equiv to microformats2 parsing model ==&lt;br /&gt;
Status: disagreement, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
Similar to document level parsing of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, it makes sense simultaneously to parse &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv&amp;amp;gt;&amp;lt;/code&amp;gt; elements, perhaps treating &amp;quot;Status&amp;quot; in a special way (only using first number (sequence of digits) for its &amp;quot;value&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Use case: IndieWeb &amp;quot;deleted&amp;quot; indication inline in content for static file services that don't support HTTP return codes.&lt;br /&gt;
* http://indiewebcamp.com/deleted#HTML_meta_http-equiv_for_status&lt;br /&gt;
&lt;br /&gt;
HTTP Header example:&lt;br /&gt;
* &amp;lt;samp&amp;gt;Content-Type: text/html; charset=utf-8&amp;lt;/samp&amp;gt;&lt;br /&gt;
HTML equivalent: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related:&lt;br /&gt;
* https://www.w3.org/International/O-HTTP-charset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Interesting thought. Are you suggesting a top level &amp;quot;http-equivs:&amp;quot; collection similar to &amp;quot;rels:&amp;quot; in the parsed output? Should we consider &amp;quot;metas:&amp;quot; instead or in addition? [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* What's the use case for this? Also, http-equiv on its own is useless. http-equiv is only a supplement to the data stored in headers. And headers aren't always there: what happens in the context of someone debugging a page who pastes the source into the textarea of an mf2 parser? Without a compelling use case for including headers (and then over-riding some of them with http-equivs), I'm not sure why an implementor want to do this. —[[User:TomMorris|Tom Morris]] 00:25, 8 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. from https://gist.github.com/aaronpk/10297489&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Status&amp;quot; content=&amp;quot;410 GONE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [],&lt;br /&gt;
 &amp;quot;rels&amp;quot;: {},&lt;br /&gt;
 &amp;quot;http&amp;quot;: {&lt;br /&gt;
 &amp;quot;status&amp;quot;: 410&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Maybe make this an optional pass in the parser? - Tom Morris [[2015-01-20]]&lt;br /&gt;
* For now, don't bother with metas until someone provides a use-case. Tom Morris&lt;br /&gt;
* Agreed on both counts. [[User:Tantek|Tantek]] 06:56, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MIME type==&lt;br /&gt;
See [[microformats2-mime-type]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation Parsing Notes==&lt;br /&gt;
Note: most of these need to be written up as separate [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&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;
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;
** *If* there is even some reasonable data on actual use of the &amp;quot;pubdate&amp;quot; attribute (I don't think there is, frankly, especially with the removal of the algorithm to produce Atom from HTML5), then we could consider parsing &amp;quot;pubdate&amp;quot; as backwards compatible option for &amp;quot;dt-published&amp;quot;. As a general rule, however, it is bad (demonstrably/experienced) design to depend on additional attributes (c.f. RDFa confusion over &amp;quot;property&amp;quot; vs. &amp;quot;rel&amp;quot;), especially for an instance where no additional attribute is necessary. I would leave this out for now until there is non-trivial (more than just test pages or folks who've written HTML5 books, ahem) use in the wild. When there is such use in the wild, it should be documented on a wiki page. We don't want to encourage more complex (additional attribute) publishing as a result of supporting it. [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
* [[value-class-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;
** A few things:&lt;br /&gt;
*** 1. Yes, no more subproperties. 'tel' becomes just 'p-tel'. If there is demand for a structured 'tel' value, then we can use that demand (and research into publishing in practice) to brainstorm and create an 'h-tel' structured telephone number (with perhaps fields like 'type', 'extension', some indication of it being local dialing (an extra 0 in some countries) or international dialing, etc.) Or, we address the different 'tel' types as their own flat properties (again as justified by research), e.g. perhaps 'p-tel-fax', or 'p-tel-mobile'. Something for hcard-2-brainstorming.&lt;br /&gt;
*** 2. For prices, e.g. hListing, either we're going to need to encode how to parse monetary amounts including monetary symbols, or consider creating an 'h-price' structured price. Not sure what the right answer is here, again, will need to be informed by analysis of documented actual price publication practices.&lt;br /&gt;
*** 3. We should avoid introducing a new prefix 'v-' just for value-class-pattern. As we've noted elsewhere, each new prefix adds complexity and should be avoided without substantial advantage.&lt;br /&gt;
*** 4. Using 'p-value-title' is strange, as it would be an exception to 'p-' parsing, since it would get the value from the 'title' attribute whereas 'p-' properties don't normally do that (exception: abbr).&lt;br /&gt;
*** 5. Using 'p-value' is also strange, as it wouldn't generate a 'value' property in the JSON data model.&lt;br /&gt;
*** 6. Class name 'value-title' is already sufficiently prefixed - we've found or even heard of no collisions in practice.&lt;br /&gt;
*** 7. Class name 'value' can, by its simpler naming nature, be expected to potentially collide with other web designer class name usage though we have no documentation/mention thereof. We could consider a renaming, or providing of alternative, such as 'value-string', or 'value-content', etc. However, let's keep that as a backup plan to use only if/when evidence is presented that we need to.&lt;br /&gt;
** Conclusions: for now, in microformats-2, keep using 'value' and 'value-title' as defined in the [[value-class-pattern]], and add the additional (obvious) interpretation that [[value-class-pattern#Date_and_time_parsing|value class pattern: date and time parsing]] applies to all 'dt-' properties. - [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== incorporated 2015-05-28 ==&lt;br /&gt;
The following brainstorms were incorporated 2015-05-28.&lt;br /&gt;
&lt;br /&gt;
== more information for alternates ==&lt;br /&gt;
Raised 2015-04-24 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
The existing &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; parsing is omitting &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - that should be added.  The &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; would make sense to add here too.&lt;br /&gt;
&lt;br /&gt;
Use-case: labels for presenting alternates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 Makes sense. [[User:Tantek|Tantek]] 03:41, 25 April 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== more information for rel-based formats ==&lt;br /&gt;
Raised 2015-04-18 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
Related github test suite issue: https://github.com/microformats/tests/issues/16&lt;br /&gt;
&lt;br /&gt;
Several rel-based formats have additional information that is useful beyond the link itself, which is all we capture at the moment. As I am trying to update the Universal feedparser to support mf2 based I will show examples from the [https://github.com/kevinmarks/feedparser/tree/365623a9470e99246f393a8c1f49a0db567826b8/feedparser/tests/microformats testcases] there.&lt;br /&gt;
&lt;br /&gt;
The main change is to add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; entry for more information about the attributes and text of the urls pointed to by rel's in the document&lt;br /&gt;
&lt;br /&gt;
A fork of mf2py that implements these changes is at https://github.com/kevinmarks/mf2py&lt;br /&gt;
=== rel-tag ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://del.icio.us/tag/tech&amp;quot;&amp;gt;Technology&amp;lt;/a&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;tag&amp;quot;: [&amp;quot;http://del.icio.us/tag/tech&amp;quot;]}, &amp;quot;items&amp;quot;: []} &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is useful as a label. &lt;br /&gt;
&lt;br /&gt;
We add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; element to the parsed output with this extra data that can be looked up from the rels, which doesn't break backward compatibility and works better with xfn (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://del.icio.us/tag/tech&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://del.icio.us/tag/tech&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Technology&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xfn ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;coworker&amp;quot;: [&amp;quot;http://example.com/johndoe&amp;quot;]}, &amp;quot;items&amp;quot;: []}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is the person's name. Suggested output using the urls object:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with multiple xfn values &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker friend&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
we get this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;friend&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;, &lt;br /&gt;
                &amp;quot;friend&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-enclosure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;enclosure&amp;quot; href=&amp;quot;http://example.com/movie.mp4&amp;quot; type=&amp;quot;video/mpeg&amp;quot; title=&amp;quot;real title&amp;quot;&amp;gt;my movie&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;'{&amp;quot;rels&amp;quot;: {&amp;quot;enclosure&amp;quot;: [&amp;quot;http://example.com/movie.mp4&amp;quot;]}, &amp;quot;items&amp;quot;: []}'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text,  which is the title and the attributes which give type. Suggested output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;enclosure&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/movie.mp4&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/movie.mp4&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;enclosure&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot;, &lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;video/mpeg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;real title&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This generalises to other rel's too, such as [[rel-feed]] and [[rel-alternate]] that have type, lang etc attributes.&lt;br /&gt;
&lt;br /&gt;
(updated to include changes from feedback below) [[User:Kevin Marks|Kevin Marks]] 22:13, 26 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== attributes parsed ===&lt;br /&gt;
Attributes currently parsed are:&lt;br /&gt;
* &amp;lt;code&amp;gt;hreflang&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
&lt;br /&gt;
Attributes we may consider parsing if we have a use case are &lt;br /&gt;
* &amp;lt;code&amp;gt;sizes&amp;lt;/code&amp;gt; for icon - need use-case documentation&lt;br /&gt;
* &amp;lt;code&amp;gt;coords&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
* &amp;lt;code&amp;gt;shape&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
&lt;br /&gt;
In addition there is a special attribute &amp;lt;s&amp;gt;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; &amp;lt;/s&amp;gt;&amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; which is the text contents of the link, which is useful in rel-tag rel-enclosure and xfn, and in alternate when used for feeds. It's also clarifying for rel-me links. &lt;br /&gt;
&lt;br /&gt;
Tantek [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79057 suggests] we use &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; for this instead, and make it a single string, not a list as &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is elsewhere in mf2 parsing&lt;br /&gt;
* Update: &amp;quot;text&amp;quot; is good enough, and &amp;quot;textContent&amp;quot; is ugly camelCase. [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== feedback on more rel info ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;quot;name&amp;quot; is bad because it misleadingly conflates with use of &amp;quot;name&amp;quot; elsewhere in microformats2.&lt;br /&gt;
#* Suggested alternative: [https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent textContent] - since that's literally what is being returned there. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** as all other mf2 keys are lowercase-with-hyphens, [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79101 Tantek suggests] 'text' as that isn't going to be an html [[User:Kevin Marks|Kevin Marks]] 07:28, 25 April 2015 (UTC)&lt;br /&gt;
# no need for array for &amp;quot;name&amp;quot;/textContent - since there is always only one at most&lt;br /&gt;
#* E.g. should be &amp;quot;textContent&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#* Update: &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
# &amp;quot;urls&amp;quot; key is misleading - implies all URLs in the document, which is neither true, nor desired (takes much more parsing time and work and code)&lt;br /&gt;
#* Suggested alternative: &amp;quot;rel-urls&amp;quot;. And open to better alternatives too. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** If we are trying to extend the number of properties retuned from a rel without breaking the old structure why don't we call the new structure something like &amp;quot;rels-extended&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#*** Extension is not the point, but rather to use them complementary. One structure for look-up of any rel value, hence &amp;quot;rels&amp;quot;, which returns you a list of URLs. Then you can lookup those URLs in the new mapping, by URL, hence it is called &amp;quot;rel-urls&amp;quot; - that's the point to use them in conjunction and that's why rel-urls is named what it is. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
# Why is the structure of  &amp;quot;rel-urls&amp;quot; different to the &amp;quot;alternates&amp;quot; structure. Should the &amp;quot;url&amp;quot; not just be added as a property and not as a key. Creating two data structures for one type of object seems inconsistent. It adds cognitive load to anyone trying to understand the JSON structure [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* I was trying to avoid breaking the existing &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; structure and use of it - I did implement a variant that put the structure inside rels, and it became cumbersome and repetitive where there were multiple rels on a url (xfn cases). Denormalising as properties of the URL made more sense. It also dedupes if there is repetitive linking to the same URL, eg a series of posts with rel-author on each. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
# If the rel is a &amp;quot;tag&amp;quot; then the main value we need to return should be the last path component of the URL, not the link text? Should we add another output property ie &amp;quot;tag&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* No need to return last path segment of the URL, because the URL is already there - and that's just a library/framework utility function to get the last path segment of a URL. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
# As currently described, the URL from &amp;lt;code&amp;gt;alternates&amp;lt;/code&amp;gt; is repeated in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; structure. If we are doing this, surely &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; should be in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; too? I assumed a mapping between them. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
## edit showing this variant: http://microformats.org/wiki/index.php?title=microformats2-parsing&amp;amp;oldid=65021#parse_a_hyperlink_element_for_rel_microformats&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
#* Yes it makes sense to drop &amp;quot;alternates&amp;quot; assuming the backcompat impact is low, put alternates in &amp;quot;rels&amp;quot; along with everything else, and direct people to use rels and rel-urls for alternates functionality. Evidence this is an acceptable even preferable approach.[http://indiewebcamp.com/irc/2015-06-01/line/1433195247005] Will add an issue accordingly. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Incorporated 2015-06-06 ==&lt;br /&gt;
&lt;br /&gt;
== Nested h-* objects' &amp;quot;value&amp;quot; property ==&lt;br /&gt;
Status: resolved, resolution iterated, one real world implementation proven implementability, incorporated&lt;br /&gt;
* 2015-06-06 incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
Raised 2015-01-06 by [[User:Kylewm]];&lt;br /&gt;
&lt;br /&gt;
If a child element has a microformat (h-*) and is a property element (p-*, u-*, dt-*, e-*), the parser will add a &amp;quot;value&amp;quot; property to the resulting object. The value should attempt to be a useful representation of the object for consumers that do not have semantic knowledge of the particular h-* type. Ref: [[microformats2-parsing#parse_an_element_for_class_microformats]].&lt;br /&gt;
&lt;br /&gt;
To determine the &amp;quot;value&amp;quot;, we parse the property element simply (as if it did not have a h-* class), which works well for simple h-* objects, e.g. &amp;lt;code&amp;gt;&amp;lt;a class=&amp;quot;u-like-of h-cite&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* To handle more complex microformats, I propose that &amp;quot;value&amp;quot; for a p-* property element take on the first explicit &amp;quot;name&amp;quot; property of the nested microformat, and for a u-* property, the first explicit &amp;quot;url&amp;quot; property. Parsing will fall back on the current rules if an explicit property does not exist.&lt;br /&gt;
** This makes sense to me, and fits with the use-cases and examples I've seen. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** A similar (possibly simpler?) formulation would use the implied name and url rules to determine the &amp;quot;value&amp;quot; for p-* and u-* properties respectively&lt;br /&gt;
*** I don't think that's needed, as there are already implied rules on a property that should handle that. I'd start with just the &amp;quot;first explicit&amp;quot; scoping to be more conservative, and then see if we find any use-cases that (and existing implied rules) don't/doesn't catch. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
**** Agreement at [[2015-01-20]] meetup.&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;u-in-reply-to h-cite&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Example Author&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/post&amp;quot;&amp;gt;Example Post&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nested u-in-reply-to object would parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;in-reply-to&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-cite&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;Example Post&amp;quot;],&lt;br /&gt;
    &amp;quot;url&amp;quot;: [&amp;quot;http://example.com/post&amp;quot;],&lt;br /&gt;
    &amp;quot;author&amp;quot;: [{&lt;br /&gt;
      &amp;quot;type&amp;quot;:[&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;http://example.com&amp;quot;], &lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Example Author&amp;quot;]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;Example Author&amp;quot;&lt;br /&gt;
    }],&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;value&amp;quot;: &amp;quot;http://example.com/post&amp;quot;&lt;br /&gt;
}]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the outer &amp;quot;value&amp;quot; gets the in-reply-to h-cite's u-url property, and the inner &amp;quot;value&amp;quot; gets the author's p-name property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Because there are no implied properties of the dt-* and e-* types, and no obvious defaults, the value rules for these types would not change.&lt;br /&gt;
** A possibility for dt-* h-*: The dt-* could take either the first dt-* of the h-*, or (perhaps if no dt-* in the h-*,) the first &amp;lt;code&amp;gt;&amp;amp;lt;time&amp;amp;gt;&amp;lt;/code&amp;gt; element inside. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** First dt-* seems reasonable, predictable, and usable. Consensus at [[2015-01-20]] meetup.&lt;br /&gt;
** Update 2015-05-29: no known use-cases for first dt-* or first e-*, and implementing that &amp;quot;would require some refactoring&amp;quot; (in mf2py at least per kylewm), thus until there's a use-case for first dt-*/e-* inside, let's treat &amp;quot;dt-* h-*&amp;quot; and &amp;quot;e-* h-*&amp;quot; as before. [[User:Tantek|Tantek]] . In particular:&lt;br /&gt;
*** p-* h-* - value from first &amp;quot;name&amp;quot; as proposed above&lt;br /&gt;
*** u-* h-* - value from first &amp;quot;url&amp;quot; as proposed above&lt;br /&gt;
*** e-* h-* - value is already defined for e-* parsing, nothing special here&lt;br /&gt;
*** dt-* h-* - value from normal dt-* parsing - nothing special.&lt;br /&gt;
*** +1 totally agree, let's wait for use cases of e-* dt-* [[User:Kylewm|Kylewm]] 19:44, 29 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Implemented in mf2py 2015-06-01 https://github.com/tommorris/mf2py/commit/edc895ef5a780bcee654e6644a688688934517b0&lt;br /&gt;
* Added to microformats test suite (experimental) 2015-06-01 https://github.com/microformats/tests/commit/90c8a7d8e96c7160036a298e13f16d9ddaec218e&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-brainstorming]]&lt;br /&gt;
* [[microformats2-prefixes]]&lt;br /&gt;
* [[microformats2-faq]]&lt;br /&gt;
* [[microformats2-issues]]&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>VoxPelli</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=65138</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=65138"/>
		<updated>2015-07-23T18:04:56Z</updated>

		<summary type="html">&lt;p&gt;VoxPelli: add brainstorm about parsing language of content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats2 parsing brainstorming&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is for brainstorming, discussion, and other questions and explorations about [[microformats2]] parsing.&lt;br /&gt;
&lt;br /&gt;
For the microformats2 parsing algorithm, see:&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
For filing issues / problems with microformats2-parsing, see:&lt;br /&gt;
* [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Parse language information ==&lt;br /&gt;
&lt;br /&gt;
Raised by [[User:VoxPelli|VoxPelli]] 18:04, 23 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Currently there’s no way to tell the language of parsed microformats even if those microformats has been marked up with HTML &amp;quot;lang&amp;quot;-attributes.&lt;br /&gt;
&lt;br /&gt;
There are examples in the wild of people marking up pages in such a way:&lt;br /&gt;
&lt;br /&gt;
* [http://voxpelli.com/ VoxPelli.com] has a &amp;quot;lang&amp;quot;-attribute on the h-entry of his [http://voxpelli.com/2011/03/sista-dagen-p-good-old/ swedish articles] to signify that the article is swedish even though the rest of the site is english.&lt;br /&gt;
* Stephanie [http://climbtothestars.org/archives/2013/09/17/basic-bilingual-1-0-plugin-for-wordpress-blog-in-more-than-one-language/ uses a WordPress plugin] that adds summaries of other languages at the start of her content.&lt;br /&gt;
&lt;br /&gt;
Proposal is to add a new &amp;quot;lang&amp;quot; keyword to h-* and e-* objects so that the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;se&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;A title&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;Abc123&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Xyz789&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;se&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;A title&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Abc123&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Abc123&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Xyz789&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Xyz789&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was [http://indiewebcamp.com/irc/2015-07-23#t1437667712078 brainstormed on the IndieWebCamp IRC-channel] where the mentioned example came up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Canonicalization of datetime output ==&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
It would be useful to choose a (more) uniform output format for datetimes to make it easier for users of the parser to consume datetimes. Microformats2 parsers already do sophisticated pattern matching to recognize date vs. time vs. datetimes, so converting this to any specific format should not add overhead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Specifically: &lt;br /&gt;
* Choose either 'T' or space as the date/time separator.&lt;br /&gt;
** Prefer space as it is more human friendly/readable, which matters even for syntaxes/formats, as human still develop, debug them. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* Choose either +XXYY or +XX:YY as the timezone specification (and convert 'Z' to +0000).&lt;br /&gt;
** Would appreciate some study / input here as to which timezone offset syntax is more human friendly. I lean slightly toward +/-NNNN (without the colon) because in the context of seeing a time, leaving out the colon makes it less likely the offset will be confused for a time. E.g. &amp;quot;07:00-08:00&amp;quot; looks like 7-8am, even if it meant 07:00 in PST. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** Space is fine - consensus [[2015-01-20]] meetup.&lt;br /&gt;
* Parsers should ''not'' attempt make datetimes more exact than specified. They should not add time, seconds, or timezone if omitted in the original. [[User:Kylewm|Kylewm]] 04:02, 14 May 2014 (UTC)&lt;br /&gt;
** Agreed. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** or month, day per Tom Morris&lt;br /&gt;
** consensus [[2015-01-20]] meetup&lt;br /&gt;
&lt;br /&gt;
* Counterpoint: PHP's builtin date parsing does not require strict formatting. And the equivalent functionality for Python is provided by the widely used python-dateutil library. [[User:Kylewm|Kylewm]] 19:02, 14 May 2014 (UTC)&lt;br /&gt;
** However we cannot (must not) depend on either PHP or Python's &amp;quot;smart&amp;quot; &amp;quot;fixing&amp;quot; or Postelian &amp;quot;liberal handling&amp;quot;, or any other language/framework's for that matter, as they all differ in how &amp;quot;intelligent&amp;quot; they are. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhaps just provide a guideline for these based on the above consensus.&lt;br /&gt;
&lt;br /&gt;
== Add meta http-equiv to microformats2 parsing model ==&lt;br /&gt;
Status: disagreement, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
Similar to document level parsing of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, it makes sense simultaneously to parse &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv&amp;amp;gt;&amp;lt;/code&amp;gt; elements, perhaps treating &amp;quot;Status&amp;quot; in a special way (only using first number (sequence of digits) for its &amp;quot;value&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Use case: IndieWeb &amp;quot;deleted&amp;quot; indication inline in content for static file services that don't support HTTP return codes.&lt;br /&gt;
* http://indiewebcamp.com/deleted#HTML_meta_http-equiv_for_status&lt;br /&gt;
&lt;br /&gt;
HTTP Header example:&lt;br /&gt;
* &amp;lt;samp&amp;gt;Content-Type: text/html; charset=utf-8&amp;lt;/samp&amp;gt;&lt;br /&gt;
HTML equivalent: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related:&lt;br /&gt;
* https://www.w3.org/International/O-HTTP-charset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Interesting thought. Are you suggesting a top level &amp;quot;http-equivs:&amp;quot; collection similar to &amp;quot;rels:&amp;quot; in the parsed output? Should we consider &amp;quot;metas:&amp;quot; instead or in addition? [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* What's the use case for this? Also, http-equiv on its own is useless. http-equiv is only a supplement to the data stored in headers. And headers aren't always there: what happens in the context of someone debugging a page who pastes the source into the textarea of an mf2 parser? Without a compelling use case for including headers (and then over-riding some of them with http-equivs), I'm not sure why an implementor want to do this. —[[User:TomMorris|Tom Morris]] 00:25, 8 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. from https://gist.github.com/aaronpk/10297489&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Status&amp;quot; content=&amp;quot;410 GONE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [],&lt;br /&gt;
 &amp;quot;rels&amp;quot;: {},&lt;br /&gt;
 &amp;quot;http&amp;quot;: {&lt;br /&gt;
 &amp;quot;status&amp;quot;: 410&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Maybe make this an optional pass in the parser? - Tom Morris [[2015-01-20]]&lt;br /&gt;
* For now, don't bother with metas until someone provides a use-case. Tom Morris&lt;br /&gt;
* Agreed on both counts. [[User:Tantek|Tantek]] 06:56, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MIME type==&lt;br /&gt;
See [[microformats2-mime-type]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation Parsing Notes==&lt;br /&gt;
Note: most of these need to be written up as separate [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&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;
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;
** *If* there is even some reasonable data on actual use of the &amp;quot;pubdate&amp;quot; attribute (I don't think there is, frankly, especially with the removal of the algorithm to produce Atom from HTML5), then we could consider parsing &amp;quot;pubdate&amp;quot; as backwards compatible option for &amp;quot;dt-published&amp;quot;. As a general rule, however, it is bad (demonstrably/experienced) design to depend on additional attributes (c.f. RDFa confusion over &amp;quot;property&amp;quot; vs. &amp;quot;rel&amp;quot;), especially for an instance where no additional attribute is necessary. I would leave this out for now until there is non-trivial (more than just test pages or folks who've written HTML5 books, ahem) use in the wild. When there is such use in the wild, it should be documented on a wiki page. We don't want to encourage more complex (additional attribute) publishing as a result of supporting it. [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
* [[value-class-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;
** A few things:&lt;br /&gt;
*** 1. Yes, no more subproperties. 'tel' becomes just 'p-tel'. If there is demand for a structured 'tel' value, then we can use that demand (and research into publishing in practice) to brainstorm and create an 'h-tel' structured telephone number (with perhaps fields like 'type', 'extension', some indication of it being local dialing (an extra 0 in some countries) or international dialing, etc.) Or, we address the different 'tel' types as their own flat properties (again as justified by research), e.g. perhaps 'p-tel-fax', or 'p-tel-mobile'. Something for hcard-2-brainstorming.&lt;br /&gt;
*** 2. For prices, e.g. hListing, either we're going to need to encode how to parse monetary amounts including monetary symbols, or consider creating an 'h-price' structured price. Not sure what the right answer is here, again, will need to be informed by analysis of documented actual price publication practices.&lt;br /&gt;
*** 3. We should avoid introducing a new prefix 'v-' just for value-class-pattern. As we've noted elsewhere, each new prefix adds complexity and should be avoided without substantial advantage.&lt;br /&gt;
*** 4. Using 'p-value-title' is strange, as it would be an exception to 'p-' parsing, since it would get the value from the 'title' attribute whereas 'p-' properties don't normally do that (exception: abbr).&lt;br /&gt;
*** 5. Using 'p-value' is also strange, as it wouldn't generate a 'value' property in the JSON data model.&lt;br /&gt;
*** 6. Class name 'value-title' is already sufficiently prefixed - we've found or even heard of no collisions in practice.&lt;br /&gt;
*** 7. Class name 'value' can, by its simpler naming nature, be expected to potentially collide with other web designer class name usage though we have no documentation/mention thereof. We could consider a renaming, or providing of alternative, such as 'value-string', or 'value-content', etc. However, let's keep that as a backup plan to use only if/when evidence is presented that we need to.&lt;br /&gt;
** Conclusions: for now, in microformats-2, keep using 'value' and 'value-title' as defined in the [[value-class-pattern]], and add the additional (obvious) interpretation that [[value-class-pattern#Date_and_time_parsing|value class pattern: date and time parsing]] applies to all 'dt-' properties. - [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== incorporated 2015-05-28 ==&lt;br /&gt;
The following brainstorms were incorporated 2015-05-28.&lt;br /&gt;
&lt;br /&gt;
== more information for alternates ==&lt;br /&gt;
Raised 2015-04-24 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
The existing &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; parsing is omitting &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - that should be added.  The &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; would make sense to add here too.&lt;br /&gt;
&lt;br /&gt;
Use-case: labels for presenting alternates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 Makes sense. [[User:Tantek|Tantek]] 03:41, 25 April 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== more information for rel-based formats ==&lt;br /&gt;
Raised 2015-04-18 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
Related github test suite issue: https://github.com/microformats/tests/issues/16&lt;br /&gt;
&lt;br /&gt;
Several rel-based formats have additional information that is useful beyond the link itself, which is all we capture at the moment. As I am trying to update the Universal feedparser to support mf2 based I will show examples from the [https://github.com/kevinmarks/feedparser/tree/365623a9470e99246f393a8c1f49a0db567826b8/feedparser/tests/microformats testcases] there.&lt;br /&gt;
&lt;br /&gt;
The main change is to add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; entry for more information about the attributes and text of the urls pointed to by rel's in the document&lt;br /&gt;
&lt;br /&gt;
A fork of mf2py that implements these changes is at https://github.com/kevinmarks/mf2py&lt;br /&gt;
=== rel-tag ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://del.icio.us/tag/tech&amp;quot;&amp;gt;Technology&amp;lt;/a&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;tag&amp;quot;: [&amp;quot;http://del.icio.us/tag/tech&amp;quot;]}, &amp;quot;items&amp;quot;: []} &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is useful as a label. &lt;br /&gt;
&lt;br /&gt;
We add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; element to the parsed output with this extra data that can be looked up from the rels, which doesn't break backward compatibility and works better with xfn (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://del.icio.us/tag/tech&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://del.icio.us/tag/tech&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Technology&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== xfn ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;coworker&amp;quot;: [&amp;quot;http://example.com/johndoe&amp;quot;]}, &amp;quot;items&amp;quot;: []}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is the person's name. Suggested output using the urls object:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with multiple xfn values &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker friend&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
we get this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;friend&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;, &lt;br /&gt;
                &amp;quot;friend&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-enclosure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;enclosure&amp;quot; href=&amp;quot;http://example.com/movie.mp4&amp;quot; type=&amp;quot;video/mpeg&amp;quot; title=&amp;quot;real title&amp;quot;&amp;gt;my movie&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;'{&amp;quot;rels&amp;quot;: {&amp;quot;enclosure&amp;quot;: [&amp;quot;http://example.com/movie.mp4&amp;quot;]}, &amp;quot;items&amp;quot;: []}'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text,  which is the title and the attributes which give type. Suggested output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;enclosure&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/movie.mp4&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/movie.mp4&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;enclosure&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot;, &lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;video/mpeg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;real title&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This generalises to other rel's too, such as [[rel-feed]] and [[rel-alternate]] that have type, lang etc attributes.&lt;br /&gt;
&lt;br /&gt;
(updated to include changes from feedback below) [[User:Kevin Marks|Kevin Marks]] 22:13, 26 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== attributes parsed ===&lt;br /&gt;
Attributes currently parsed are:&lt;br /&gt;
* &amp;lt;code&amp;gt;hreflang&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
&lt;br /&gt;
Attributes we may consider parsing if we have a use case are &lt;br /&gt;
* &amp;lt;code&amp;gt;sizes&amp;lt;/code&amp;gt; for icon - need use-case documentation&lt;br /&gt;
* &amp;lt;code&amp;gt;coords&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
* &amp;lt;code&amp;gt;shape&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
&lt;br /&gt;
In addition there is a special attribute &amp;lt;s&amp;gt;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; &amp;lt;/s&amp;gt;&amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; which is the text contents of the link, which is useful in rel-tag rel-enclosure and xfn, and in alternate when used for feeds. It's also clarifying for rel-me links. &lt;br /&gt;
&lt;br /&gt;
Tantek [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79057 suggests] we use &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; for this instead, and make it a single string, not a list as &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is elsewhere in mf2 parsing&lt;br /&gt;
* Update: &amp;quot;text&amp;quot; is good enough, and &amp;quot;textContent&amp;quot; is ugly camelCase. [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== feedback on more rel info ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;quot;name&amp;quot; is bad because it misleadingly conflates with use of &amp;quot;name&amp;quot; elsewhere in microformats2.&lt;br /&gt;
#* Suggested alternative: [https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent textContent] - since that's literally what is being returned there. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** as all other mf2 keys are lowercase-with-hyphens, [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79101 Tantek suggests] 'text' as that isn't going to be an html [[User:Kevin Marks|Kevin Marks]] 07:28, 25 April 2015 (UTC)&lt;br /&gt;
# no need for array for &amp;quot;name&amp;quot;/textContent - since there is always only one at most&lt;br /&gt;
#* E.g. should be &amp;quot;textContent&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#* Update: &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
# &amp;quot;urls&amp;quot; key is misleading - implies all URLs in the document, which is neither true, nor desired (takes much more parsing time and work and code)&lt;br /&gt;
#* Suggested alternative: &amp;quot;rel-urls&amp;quot;. And open to better alternatives too. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** If we are trying to extend the number of properties retuned from a rel without breaking the old structure why don't we call the new structure something like &amp;quot;rels-extended&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#*** Extension is not the point, but rather to use them complementary. One structure for look-up of any rel value, hence &amp;quot;rels&amp;quot;, which returns you a list of URLs. Then you can lookup those URLs in the new mapping, by URL, hence it is called &amp;quot;rel-urls&amp;quot; - that's the point to use them in conjunction and that's why rel-urls is named what it is. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
# Why is the structure of  &amp;quot;rel-urls&amp;quot; different to the &amp;quot;alternates&amp;quot; structure. Should the &amp;quot;url&amp;quot; not just be added as a property and not as a key. Creating two data structures for one type of object seems inconsistent. It adds cognitive load to anyone trying to understand the JSON structure [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* I was trying to avoid breaking the existing &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; structure and use of it - I did implement a variant that put the structure inside rels, and it became cumbersome and repetitive where there were multiple rels on a url (xfn cases). Denormalising as properties of the URL made more sense. It also dedupes if there is repetitive linking to the same URL, eg a series of posts with rel-author on each. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
# If the rel is a &amp;quot;tag&amp;quot; then the main value we need to return should be the last path component of the URL, not the link text? Should we add another output property ie &amp;quot;tag&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* No need to return last path segment of the URL, because the URL is already there - and that's just a library/framework utility function to get the last path segment of a URL. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
# As currently described, the URL from &amp;lt;code&amp;gt;alternates&amp;lt;/code&amp;gt; is repeated in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; structure. If we are doing this, surely &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; should be in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; too? I assumed a mapping between them. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
## edit showing this variant: http://microformats.org/wiki/index.php?title=microformats2-parsing&amp;amp;oldid=65021#parse_a_hyperlink_element_for_rel_microformats&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
#* Yes it makes sense to drop &amp;quot;alternates&amp;quot; assuming the backcompat impact is low, put alternates in &amp;quot;rels&amp;quot; along with everything else, and direct people to use rels and rel-urls for alternates functionality. Evidence this is an acceptable even preferable approach.[http://indiewebcamp.com/irc/2015-06-01/line/1433195247005] Will add an issue accordingly. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Incorporated 2015-06-06 ==&lt;br /&gt;
&lt;br /&gt;
== Nested h-* objects' &amp;quot;value&amp;quot; property ==&lt;br /&gt;
Status: resolved, resolution iterated, one real world implementation proven implementability, incorporated&lt;br /&gt;
* 2015-06-06 incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
Raised 2015-01-06 by [[User:Kylewm]];&lt;br /&gt;
&lt;br /&gt;
If a child element has a microformat (h-*) and is a property element (p-*, u-*, dt-*, e-*), the parser will add a &amp;quot;value&amp;quot; property to the resulting object. The value should attempt to be a useful representation of the object for consumers that do not have semantic knowledge of the particular h-* type. Ref: [[microformats2-parsing#parse_an_element_for_class_microformats]].&lt;br /&gt;
&lt;br /&gt;
To determine the &amp;quot;value&amp;quot;, we parse the property element simply (as if it did not have a h-* class), which works well for simple h-* objects, e.g. &amp;lt;code&amp;gt;&amp;lt;a class=&amp;quot;u-like-of h-cite&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* To handle more complex microformats, I propose that &amp;quot;value&amp;quot; for a p-* property element take on the first explicit &amp;quot;name&amp;quot; property of the nested microformat, and for a u-* property, the first explicit &amp;quot;url&amp;quot; property. Parsing will fall back on the current rules if an explicit property does not exist.&lt;br /&gt;
** This makes sense to me, and fits with the use-cases and examples I've seen. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** A similar (possibly simpler?) formulation would use the implied name and url rules to determine the &amp;quot;value&amp;quot; for p-* and u-* properties respectively&lt;br /&gt;
*** I don't think that's needed, as there are already implied rules on a property that should handle that. I'd start with just the &amp;quot;first explicit&amp;quot; scoping to be more conservative, and then see if we find any use-cases that (and existing implied rules) don't/doesn't catch. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
**** Agreement at [[2015-01-20]] meetup.&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;u-in-reply-to h-cite&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Example Author&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/post&amp;quot;&amp;gt;Example Post&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nested u-in-reply-to object would parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;in-reply-to&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-cite&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;Example Post&amp;quot;],&lt;br /&gt;
    &amp;quot;url&amp;quot;: [&amp;quot;http://example.com/post&amp;quot;],&lt;br /&gt;
    &amp;quot;author&amp;quot;: [{&lt;br /&gt;
      &amp;quot;type&amp;quot;:[&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;http://example.com&amp;quot;], &lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Example Author&amp;quot;]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;Example Author&amp;quot;&lt;br /&gt;
    }],&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;value&amp;quot;: &amp;quot;http://example.com/post&amp;quot;&lt;br /&gt;
}]&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the outer &amp;quot;value&amp;quot; gets the in-reply-to h-cite's u-url property, and the inner &amp;quot;value&amp;quot; gets the author's p-name property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Because there are no implied properties of the dt-* and e-* types, and no obvious defaults, the value rules for these types would not change.&lt;br /&gt;
** A possibility for dt-* h-*: The dt-* could take either the first dt-* of the h-*, or (perhaps if no dt-* in the h-*,) the first &amp;lt;code&amp;gt;&amp;amp;lt;time&amp;amp;gt;&amp;lt;/code&amp;gt; element inside. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** First dt-* seems reasonable, predictable, and usable. Consensus at [[2015-01-20]] meetup.&lt;br /&gt;
** Update 2015-05-29: no known use-cases for first dt-* or first e-*, and implementing that &amp;quot;would require some refactoring&amp;quot; (in mf2py at least per kylewm), thus until there's a use-case for first dt-*/e-* inside, let's treat &amp;quot;dt-* h-*&amp;quot; and &amp;quot;e-* h-*&amp;quot; as before. [[User:Tantek|Tantek]] . In particular:&lt;br /&gt;
*** p-* h-* - value from first &amp;quot;name&amp;quot; as proposed above&lt;br /&gt;
*** u-* h-* - value from first &amp;quot;url&amp;quot; as proposed above&lt;br /&gt;
*** e-* h-* - value is already defined for e-* parsing, nothing special here&lt;br /&gt;
*** dt-* h-* - value from normal dt-* parsing - nothing special.&lt;br /&gt;
*** +1 totally agree, let's wait for use cases of e-* dt-* [[User:Kylewm|Kylewm]] 19:44, 29 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Implemented in mf2py 2015-06-01 https://github.com/tommorris/mf2py/commit/edc895ef5a780bcee654e6644a688688934517b0&lt;br /&gt;
* Added to microformats test suite (experimental) 2015-06-01 https://github.com/microformats/tests/commit/90c8a7d8e96c7160036a298e13f16d9ddaec218e&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-brainstorming]]&lt;br /&gt;
* [[microformats2-prefixes]]&lt;br /&gt;
* [[microformats2-faq]]&lt;br /&gt;
* [[microformats2-issues]]&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>VoxPelli</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hatom-examples-in-wild&amp;diff=45116</id>
		<title>hatom-examples-in-wild</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hatom-examples-in-wild&amp;diff=45116"/>
		<updated>2011-12-15T09:36:56Z</updated>

		<summary type="html">&lt;p&gt;VoxPelli: Added Flattr.com as an example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;hAtom Examples in the Wild&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;height:7.5em;text-align:center;font-weight:bold;font-size:larger&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;padding:3em 0;float:left;width:33%&amp;quot;&amp;gt;[[hatom-examples-in-wild#examples_by_category|Want hAtom]]&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;padding:3em 0;float:left;width:33%&amp;quot;&amp;gt;[[hatom-examples-in-wild#new_and_uncategorized_examples|Have hAtom]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is an '''informative''' section of the [[hatom|hAtom draft specification]].&lt;br /&gt;
&lt;br /&gt;
The following sites have published [[hAtom|hAtom]], and thus are a great place to start for anyone looking for examples &amp;quot;in the wild&amp;quot; for inspiration, or to try parsing and indexing.&lt;br /&gt;
&lt;br /&gt;
== new and uncategorized examples ==&lt;br /&gt;
'''Have hAtom?''' If you have a site with hAtom, add it to the top of this list. Include at least one URL to a page that includes actual [[hatom|hAtom]] markup. Examples without direct links to pages with hAtom markup will be removed. Check back after a few days, to see if anyone has found any problems with the examples supplied. Note that examples may be categorized and moved to the grouped section below.&lt;br /&gt;
&lt;br /&gt;
You may want to use these buttons on your pages with hAtom. See [[buttons#hAtom]] for any recent additions.&lt;br /&gt;
http://www.davidjanes.com/images/mf_hatom.png http://www.boogdesign.com/images/buttons/microformat_hatom.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    Please add examples to the top of this list. Write in the third person (&amp;quot;Acme has...&amp;quot; not &amp;quot;we have...&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [https://flattr.com/ flattr.com] uses hAtom for the activity streams on its [https://flattr.com/profile/pthulin profiles]. Uses experimental [http://activitystrea.ms/ Activity Streams] classes in it.&lt;br /&gt;
* [http://www.gulfdine.com/Restaurant.aspx?Name=Aalishan+-+Al+Muntazah&amp;amp;Restaurant=6497 gulfdine.com] uses hAtom, hReviews for contact information, restaurant information (company address, etc.) and admin reviews.&lt;br /&gt;
* [http://brannfan.com/ brannfan.com] uses hAtom for the news entries on its home page and single entry pages.&lt;br /&gt;
* [http://www.chipwreck.de/blog/posts/ chipwreck.de] uses hAtom for the (wordpress) blog entries.&lt;br /&gt;
* [http://www.zybez.net/ Zybez] uses hAtom for the news entries on its home page.&lt;br /&gt;
* The [http://greenvoice.com Greenvoice] Blog, as well as all of the individual campaign blogs on the site ([http://greenvoice.com/campaigns/303-saving-scottish-seals/blogs/595/posts example]), have their posts marked up with hAtom.&lt;br /&gt;
* [http://huffduffer.com/ Huffduffer] uses hAtom for the [http://huffduffer.com/new newest] and the most [http://huffduffer.com/popular popular] additions as well as on every user profile and on tag places.&lt;br /&gt;
* [http://fairvote.ca/en/WaterlooRegion Waterloo Region Chapter Fair Vote Canada] hAtom enabled until the site enables RSS/Atom in Drupal.  Self-referentially linked with Luke Arno's [http://www.lukearno.com/projects/hatom2atom/ hatom2atom service]. &lt;br /&gt;
* [http://www.aduk.org/ ADUK] use hAtom to mark up news on their home page.&lt;br /&gt;
* [http://thetyee.ca/Blogs/TheHook/ The Hook] a Canadian political blog, uses hAtom for blog posts and list of blog posts, however also offers a feedburner RSS feed.&lt;br /&gt;
* [http://www.plaintxt.org/experiments/blog-summary/ Blog Summary] is a [[wordpress|WordPress]] plugin from plaintxt.org that generates a semantic list of recent entries in hAtom. By [[implementors#Scott_Allan_Wallick|Scott Allan Wallick]].&lt;br /&gt;
* [http://www.yigg.de YiGG (a german social-news community)] Marks up all there Pages with stories using hAtom.&lt;br /&gt;
* [http://www.dancefederation.co.uk Dance Federation Salsa Dancing &amp;amp; Jive Dancing Lessons and Events ] Directory for classes, lessons and events users hatom for its news page and generating rss.&lt;br /&gt;
* [http://blog.kakkoi.net/ Kakkoi] - combine hAtom (i.e., xFolk RC1, hreview, hAtom) for blog posts and comments.&lt;br /&gt;
* [http://www.vibereview.com/ VibeReview] uses hAtom for sex toy reviews and articles (no nudity, but still maybe NSFW).  Two feeds can be found on the homepage.&lt;br /&gt;
* [http://www.linuxinfusion.com/ Linux Infusion] uses hAtom for blog posts and comments.&lt;br /&gt;
*  Joseph Bergantine has used hAtom to mark up [http://bergantinedesign.us/blog/my-microwave-has-a-button-that-says-record blog posts], [http://bergantinedesign.us/blog/ article lists], and [http://bergantinedesign.us/blog/doneish#comment000068 comments] &lt;br /&gt;
* [http://microrevie.ws/ MicroReviews] marks up each review with [[hAtom]] so that every page can be a feed. See [http://microrevie.ws/ the home page] or [http://microrevie.ws/????? 5-Star Reviews]&lt;br /&gt;
* LocalHero (localhero dot biz) A local search which returns it search results in hatom (as well as other microformats).&lt;br /&gt;
* [http://blog.livedoor.jp/forestk/ forestk's blog] uses hAtom (note it is Japanese!)&lt;br /&gt;
* [http://www.niallkennedy.com/blog/ Niall Kennedy's Weblog] features hAtom on every page. includes comments.&lt;br /&gt;
* [http://weborganics.co.uk/ WebOrganics] - Has hAtom feeds on every page.&lt;br /&gt;
* [http://journal.redflavor.com/ Reprise] - A [http://redflavor.com/reprise.rb minimal blog] application which uses hAtom out of the box.&lt;br /&gt;
* [http://www.bbc.co.uk/worldservice/bangladeshboat BBC World Service Bangladesh River Journey] a social network mashup, with hAtom entries &amp;amp; other microformats. See [http://dharmafly.com/blog/bangladeshboat Dharmafly blog discussion].&lt;br /&gt;
* [http://www.people.com/people/news/ People Magazine] uses hAtom to markup the latest news stories.&lt;br /&gt;
* [http://www.tamundo.de/ Tamundo] Online auction platform that uses hAtom&lt;br /&gt;
* [http://www.bo.ingv.it/italiano/News.html Istituto Nazionale Geofisica e Vulcanologia, Bologna] implemented hAtom entries with embedded rel-tags for categories in its news-page (custom template for [http://www.modxcms.com MODx CMS]).&lt;br /&gt;
* [http://v1.itvp.pl/blog/przebojowanoc/i.tvp/idb/24/ ITVP] uses hAtom for entries. See [http://twitter.com/Wojtek/statuses/299700082 Wojtek's announcement 2007-09-28].&lt;br /&gt;
* [http://shiftingpixel.com Shifting Pixel] uses hAtom for blog posts and comments.&lt;br /&gt;
* [http://lazylibrary.com LazyLibrary] uses hAtom on book results pages.&lt;br /&gt;
* [http://findsubstance.com Find Substance Blog] uses hAtom for blog posts.&lt;br /&gt;
* [http://www.blogger.com Blogger]&lt;br /&gt;
** [http://groups.google.com/group/bloggerDev/browse_thread/thread/69344c5cc35b472e Announcement] on Blogger Dev that all new blogs will have hAtom classes&lt;br /&gt;
* AOL&lt;br /&gt;
**[http://news.aol.com AOL News], AOL News has implemented hAtom into their center column. This display will be used on other AOL channels as well&lt;br /&gt;
**[http://sports.aol.com AOL Sports], AOL Sports is the second AOL channel to use the hAtom display for its center column data&lt;br /&gt;
* [http://www.creation.uk.com Creation design &amp;amp; marketing] uses hAtom for a lot of the content as well as [http://www.creation.uk.com/news/2007/06/06/easy-money/ comments on articles].&lt;br /&gt;
* [http://www.sndbx.org/ The Sandbox Designs Competition] uses hAtom for all content, hCard for participant (the competition designers) and sponsor information, hCalendar for the competition schedule, XFN for links, and rel-license for licensing information. It's all GNU GPL.&lt;br /&gt;
* [http://guyleech.net guyleech.net] uses hCard for contact information.&lt;br /&gt;
* [http://kpumuk.info/ Dmytro Shteflyuk] uses hAtom for all blog posts.&lt;br /&gt;
* [http://blog.no-panic.at Florian Beer] uses hAtom to mark up all the blog posts. There is also a [http://blog.no-panic.at/2006/11/16/hatom-and-wordpress/ tutorial] on how to convert [[wordpress|WordPress]] themes to include hAtom.&lt;br /&gt;
* [http://ficlets.com/ Ficlets] uses hAtom on the [http://ficlets.com/stories main stories page] and on [http://ficlets.com/stories/12 individual story pages].&lt;br /&gt;
* [http://www.international.unt.edu UNT International] uses hAtom combined with hCard on news/announcement pages (e.g., [http://www.international.unt.edu/quick/news the main news page]) in addition to providing traditional Atom feeds&lt;br /&gt;
* [http://www.absalom.net.au Absalom Media] uses hAtom combined with hCard for articles.&lt;br /&gt;
* [http://www.joomlamug.com Joomla! Melbourne User Group] uses hAtom combined with hCard for articles.&lt;br /&gt;
* [http://www.volume.co.uk Volume] - Main news page is marked up as hAtom 0.1 &lt;br /&gt;
* [http://yedda.com Yedda] - Yedda support hAtom on exploration of questions where there is also support for Atom and RSS feeds. ([http://yedda.com/questions/recent/ example])&lt;br /&gt;
* The [http://www.westmidlandbirdclub.com/ West Midland Bird Club's] frequently-updated [http://www.westmidlandbirdclub.com/new.htm What's New] page,  [http://www.westmidlandbirdclub.com/ladywalk/latest.htm news from its Ladywalk Reserve] and [http://www.westmidlandbirdclub.com/worcs/grimley/latest.htm news from Grimley Pits] &amp;amp;mdash;  comments welcome on my talk page [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
* [http://pixelsebi.com pixelsebi's repository] uses hAtom 0.1 for blog posts (and hCard, hCalendar, XFN, xFolk and many more) based on manual [[wordpress|WordPress]] template modifications&lt;br /&gt;
* [http://www.qmpeople.com/ qmpeople] uses hAtom combined with hCard for [http://www.qmpeople.com/blog/ blog].&lt;br /&gt;
* [http://www.geekinthepark.co.uk Geek in the Park] uses hAtom for the comments. -- by [[User:Trovster|trovster]]&lt;br /&gt;
* [http://www.csarven.ca Sarven Capadisli] uses hAtom for the articles and comments -- by [[User:Csarven|csarven]]&lt;br /&gt;
* [http://www.capital.edu Capital University] uses hAtom 0.1 to mark up the feed of latest posts by student bloggers on its home page.&lt;br /&gt;
* [http://blog.davidjanes.com Ranting and Roaring] (David Janes)&lt;br /&gt;
* [http://ChunkySoup.net/ ChunkySoup.net] has redesigned using hAtom 0.1 and hCards on the entire site &amp;amp;mdash; by [[User:ChrisCasciano|Chris Casciano]]&lt;br /&gt;
* [http://sedna.spip.org/sedna/ Sedna RSS] (a feed aggregator based on SPIP, by Fil, IZO and others; GPLd sources are available at [http://zone.spip.org/trac/spip-zone/browser/_squelettes_/sedna SPIP-Zone])&lt;br /&gt;
* [http://quotedprintable.com/pages/scribbish Scribbish] is a Typo theme which uses hAtom.&lt;br /&gt;
* [http://rbach.priv.at/hAtom2Atom/Changelog/ hAtom2Atom.xsl's Changelog] is published as hAtom and Atom.&lt;br /&gt;
* [http://federali.st/ federali.st]'s webbed Federalist Papers are each marked up in hAtom.&lt;br /&gt;
* [http://www.plaintxt.org/themes/sandbox/ Sandbox] is a theme for [[wordpress|WordPress]] that uses hAtom. By [[implementors#Scott_Allan_Wallick|Scott Allan Wallick]].&lt;br /&gt;
** The theme is also available to accounts on the [http://wordpress.com/ &amp;lt;username&amp;gt;.wordpress.com] hosting service. The [http://blog.coworking.info Coworking] and [http://barcamp.wordpress.com BarCamp] blogs are examples of custom Sandbox themes.&lt;br /&gt;
** Over 40 designs available for the Sandbox at the [http://www.sndbx.org/ Sandbox Designs Competition], which also uses hAtom&lt;br /&gt;
* [http://www.whump.com/dropbox/Strangelove.zip Strangelove] is a modification of the default WordPress theme (Kubrick) with hAtom support. &lt;br /&gt;
** It points to the hAtom2Atom proxy service as the link for syndication feeds.&lt;br /&gt;
* All [http://www.plaintxt.org/themes/ plaintxt.org themes] for [[wordpress|WordPress]] now use hAtom. The themes are also coded for hCard compliance. The themes, by name, are:&lt;br /&gt;
** [http://www.plaintxt.org/themes/barthelme/ Barthelme] (two-column, fluid), [http://www.plaintxt.org/themes/blogtxt/ blog.txt] (two- or three-column, elastic), [http://www.plaintxt.org/themes/plaintxtblog/ plaintxtBlog] (three-column, fluid), [http://www.plaintxt.org/themes/simplr/ Simplr] (one column, elastic), [http://www.plaintxt.org/themes/veryplaintxt/ veryplaintxt] (two column, fluid)&lt;br /&gt;
** By [[implementors#Scott_Allan_Wallick|Scott Allan Wallick]].&lt;br /&gt;
* [http://www.pats.ua.ac.be/courses PATS Courses], the PATS Research Group uses hAtom to mark up the latest course documents for some of their courses&lt;br /&gt;
* [http://mix.excite.co.uk Excite MIX], the Ajax Start Page from Excite Europe, uses hAtom 0.1 and hCard in the Feed Viewer to mark up feed entries and authors.&lt;br /&gt;
* [http://last.fm Last.FM], a social music sharing platform, uses hAtom markup for [http://blog.last.fm/2007/05/30/rss-your-shoutbox-and-you shoutbox], and recommends using [http://tools.microformatic.com microformatic]'s transcode tool&lt;br /&gt;
* [http://vlograzor.com/ Vlog Razor] - Contains multiple hAtom feeds on the same page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
     Please do NOT add new examples here - add them to the TOP of this list. Thank you.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples by category ==&lt;br /&gt;
&amp;lt;em&amp;gt;This section is a stub.&amp;lt;/em&amp;gt;This list is very incomplete - please see the above uncategorized list and add to existing category(ies) or add new categories accordingly!&lt;br /&gt;
&lt;br /&gt;
'''Want hAtom?''' Use examples from the spec to start with, [[validators|validate]] and publish it, or following the [[hatom-authoring|hAtom authoring tips]] to add hAtom markup to your current site.  Check out this section for similar examples of types of pages that benefit from hAtom markup.&lt;br /&gt;
&lt;br /&gt;
=== status updates ===&lt;br /&gt;
* [http://twitter.com/ Twitter] publishes hAtom for status updates and short notes  [http://twitter.com/al3x/statuses/53982402 since 2007-05-07].&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples with some problems==&lt;br /&gt;
Entries may be moved here if there's a problem with the way hAtom is used on the page concerned. If the page is yours, and you want to improve it, see the [[hatom-faq|hAtom FAQ]], or raise any queries on [[hatom-issues|hAtom Issues]] or [[mailing-lists#microformats-discuss|the mailing list]], where people will be happy to help you. &lt;br /&gt;
&lt;br /&gt;
=== Pre 0.1 hAtom examples===&lt;br /&gt;
These pages conform to an older draft standard and need to be updated.&lt;br /&gt;
&lt;br /&gt;
* [http://www.myelin.co.nz/post/ Second p0st] (Phil Pearson)&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{hatom-related-pages}}&lt;/div&gt;</summary>
		<author><name>VoxPelli</name></author>
	</entry>
</feed>