<?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=Btrem</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=Btrem"/>
	<link rel="alternate" type="text/html" href="https://microformats.org/wiki/Special:Contributions/Btrem"/>
	<updated>2026-04-30T08:05:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=testimonials&amp;diff=70603</id>
		<title>testimonials</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=testimonials&amp;diff=70603"/>
		<updated>2022-12-07T00:28:40Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Asiabizsetup */ Spelling correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE: Testimonals }}&lt;br /&gt;
&lt;br /&gt;
== [https://twitter.com/jgmac1106/status/1020254211043463168 Greg McVerry] ==&lt;br /&gt;
… JSON-LD and &amp;lt;nowiki&amp;gt;http://schema.org&amp;lt;/nowiki&amp;gt; . Looked impossible to implement. Found [[mf2]] said, “I can do that.”&lt;br /&gt;
&lt;br /&gt;
== [https://indiewebcamp.com/irc/2014-06-21/line/1403415993000 Kartik Prabhu] ==&lt;br /&gt;
I have found that microformats are easier to write than [[RDF]] or [[microdata]].[https://indiewebcamp.com/irc/2014-06-21/line/1403415993000]&lt;br /&gt;
&lt;br /&gt;
== [http://www.asiabizsetup.net Asiabizsetup] ==&lt;br /&gt;
I love how microformats do its job. It helps my site be more organized and structure. Without proper structure, it's kind of hard to do things. I hope that adding microformats to the site will also make it easier for reader as it will be more user friendly. Apart from that, I would like to Thanks a team of microformats.org that make things easy for all of us to use. If anyone who don't know or not good in html, There is a tools for us to use and make good code. I'm appreciated for what you do here and please don't stop, let's keep it rolling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These are stories from the [http://microformats.org/discuss/mail/microformats-discuss microformats-discuss mailing list], where users characterize why exactly they find microformats so useful and compelling.&lt;br /&gt;
&lt;br /&gt;
== [http://gravit.as Scott Rozic] ==&lt;br /&gt;
I'm jazzed about microformats, and right now i just made an ultra-micro posting system with it, I've created a new blog that's deeply microformatted, and will be rolling microformats into 5 or so new applications by the end of this year!  Still in the experimentation phase but lots can be done here to standardize the cross-web, cross-app experience for users and make life easier for app and site builders.&lt;br /&gt;
&lt;br /&gt;
== [http://www.lizcoworldwide.com/wordpress/index.php?p=92 Liz Dunn] ==&lt;br /&gt;
I wrote a little essay on my personal blog about why I like, nay, LOVE, microformats. The goal of this essay was to get my friends, who aren't super extra into web formats, excited about the possibilities of microformats. I'm not sure it worked, since one friend commented that she didn't think she was the audience for my blog anymore. But I'm not going to stop writing about microformats!&lt;br /&gt;
 &lt;br /&gt;
== [http://microformats.org/discuss/mail/microformats-discuss/2005-October/001253.html Kevin Lawver] ==&lt;br /&gt;
&lt;br /&gt;
My personal interest in microformats stems from my general laziness and love of conformity.  I don't want to have to think about how to mark something up all the time.  I think Microformats can go a long way towards standardizing how we mark up particular pieces of data... I work at a company that has a huge collection of developers spread all over the world.  If I can tell all of them, &amp;quot;Hey, you should mark a review or search result or list of blog posts this way, and heres' the documentation,&amp;quot; they'll be more likely to do that, and we'll have an easier time maintaining and &amp;quot;discovering&amp;quot; that content.&lt;br /&gt;
&lt;br /&gt;
== [http://jamierumbelow.net/ Jamie Rumbelow] ==&lt;br /&gt;
I don't think anything this exciting, productive or helpful has hit the web in a very long time. The ever-expanding library of semantic yet resourceful Microformats are constantly amazing me with their intuition, and ability to get the job done then get out of my way.&lt;br /&gt;
&lt;br /&gt;
== [http://microformats.org/discuss/mail/microformats-discuss/2005-October/001181.html Ernest Prabhakar] ==&lt;br /&gt;
&lt;br /&gt;
===  Organization web page ===&lt;br /&gt;
&lt;br /&gt;
I'm responsible for the website for an informal group at work. The  &lt;br /&gt;
HTML I inherited was a horrible mess, and painful to maintain.  I  &lt;br /&gt;
realized that it was pretty much just a list of events, people, and  &lt;br /&gt;
resources.   So, just to avoid having to think about HTML design, I  &lt;br /&gt;
turned the whole thing into a bunch of XOXO, hCards, and hEvents.    &lt;br /&gt;
Then, in order to make it look the way I wanted, I just added (or  &lt;br /&gt;
often, stole:-) appropriate style declarations.&lt;br /&gt;
&lt;br /&gt;
Could I have done this without microformats? Actually, no.  ''You''  &lt;br /&gt;
might, but '''I''' couldn't.  Microformat was the crutch to help me think  &lt;br /&gt;
intelligently about CSS.  As a bonus, I can now use all these funky  &lt;br /&gt;
tools to extract vCards -- and show the entire site as a  &lt;br /&gt;
presentation. Cool!&lt;br /&gt;
&lt;br /&gt;
=== Custom application format ===&lt;br /&gt;
&lt;br /&gt;
One of my side projects is working on a program to display lyrics for  &lt;br /&gt;
sing-a-longs (i.e., church worship services).   I was experimenting  &lt;br /&gt;
with a bunch of different XML schemas, but a) I wasn't sure I had it  &lt;br /&gt;
right, and b) there was no way I could imagine getting a lot of  &lt;br /&gt;
people to adopt it.&lt;br /&gt;
&lt;br /&gt;
Then I discovered [http://www.meyerweb.com/eric/tools/s5  S5].&lt;br /&gt;
I suddenly realized that XOXO was the perfect  format for encoding lyrics (stanzas, lines, etc.). &lt;br /&gt;
It is so obviously *right* that it is trivial to evangelize, rather  &lt;br /&gt;
than arguing over every last tag.   It is flexible, so people can add  &lt;br /&gt;
their own metadata if needed, and socialize them informally rather  &lt;br /&gt;
than having to push them through a central standard (which I'd have  &lt;br /&gt;
to maintain, ugh). It is also non-intimidating, so people who know  &lt;br /&gt;
HTML but not XML (believe me, there's a lot of them) are comfortable  &lt;br /&gt;
adopting it.&lt;br /&gt;
&lt;br /&gt;
Not bad.  But wait, there's more!  This also means:&lt;br /&gt;
# There's a trivial way to view every file (browser), even without  my app&lt;br /&gt;
# Design can be done using CSS, meanings trivial to customize -- I  don't need to provide a tool&lt;br /&gt;
# I can reuse the existing HTML viewing tools on my platform&lt;br /&gt;
&lt;br /&gt;
At this point, I literally cannot imagine tackling any web site or  &lt;br /&gt;
application format problem withOUT leveraging existing  &lt;br /&gt;
microformats.   It is the shortest route to success for the kinds of  &lt;br /&gt;
things *I* care about.  Where getting an 80% solution out - now- is  &lt;br /&gt;
the most important thing. If you slice the 80/20 correctly, it is  &lt;br /&gt;
actually only the top 5% of customers who ever actually run into the  &lt;br /&gt;
tough edge cases.  The long tail rarely cares -- certainly not enough  &lt;br /&gt;
to pay the added cost.&lt;br /&gt;
&lt;br /&gt;
Its kinda like optimizing source code.  Its better to write it first  &lt;br /&gt;
then optimize the hotspots, than try to pre-optimized what you *think* &lt;br /&gt;
the problems will be.&lt;br /&gt;
&lt;br /&gt;
== [https://jamesg.blog James Gallagher] ==&lt;br /&gt;
&lt;br /&gt;
Microformats are easy to use. Unlike other methods of markup, they do not require creating a new JavaScript object or a separate document in which data is placed. My microformats are in the HTML code that browsers render. I can easily read my HTML code and see the relationship between my code and the data I want to mark up. Microformats and are extensively supported with services that I would like to use, from [https://indieauth.net IndieAuth] to [https://brid.gy brid.gy]. As a bonus, microformats makes my content easier for Google search to interpret.&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=why-using-existing-matters&amp;diff=70602</id>
		<title>why-using-existing-matters</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=why-using-existing-matters&amp;diff=70602"/>
		<updated>2022-12-05T20:28:17Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Removes self-reference.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;Why using existing microformats matters&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When many folks first hear of [[microformats]], they are quite inspired by the possibilities and potential that microformats present.&lt;br /&gt;
&lt;br /&gt;
Nearly everyone seems to have a problem in the back of their minds, or specific to their application, site, or service which could benefit from a microformat to represent the information.&lt;br /&gt;
&lt;br /&gt;
Thus immediately there is a desire to jump to creating a new such microformat, perhaps seduced by the ease of use of existing microformats.  It's easy to misconclude from the simplicity of existing microformats that it is also simple to create microformats. Ironically, the opposite is true.  As with many things, it's actually quite challenging and difficult to make simple, easy to use things.  This is a known axiom in [[user-interface]] design circles. It's no different with formats.  See [[why-are-content-standards-hard]] for some general thoughts on why good and simple formats are actually quite difficult to create.&lt;br /&gt;
&lt;br /&gt;
The motivation to create a new microformat might lead some here, to the microformats [[Main_Page|wiki]] or perhaps even the [[process]] page before proceeding.&lt;br /&gt;
&lt;br /&gt;
Thus the process page encourages the reader to:&lt;br /&gt;
&lt;br /&gt;
* Add &amp;lt;em&amp;gt;existing&amp;lt;/em&amp;gt; microformats to your sites like [[hcard|hCard]] for your contact info etc., [[hcalendar|hCalendar]] for your events, [[hatom|hAtom]] for your episodic content (e.g. blogs).  See [[get-started]] for more specific examples of adding microformats to your sites.&lt;br /&gt;
* This will help familiarize you with how [[POSH]] and [[microformats]] currently work. Such &amp;quot;real world&amp;quot; experience will greatly help you with the development a new microformat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Success in developing microformats requires both creation but more importantly adoption; any effort to create new schema depends upon your prior support for and implementation of existing formats.&lt;br /&gt;
&lt;br /&gt;
One rhetorical question to consider about using existing microformats vs. creating a new one: ''How can you have a chance of convincing others to use a ''new'' microformat (that you would develop) on their sites, if you can't convince yourself to use ''existing'' microformats on your sites?''&lt;br /&gt;
&lt;br /&gt;
Or put in a more positive light: ''If you adopt microformats and develop your own with the microformats process, you have a greater chance of being successful, whereas, if you develop your own format without implementing prior formats, you are more likely to fail.''  &lt;br /&gt;
&lt;br /&gt;
Failures may even take strange forms that are hard to recognize until it is too late.  I.e. if you don't first familiarize yourself with existing microformats (most of all, by using them in actual production sites), you're likely to make lots of mistakes while developing your own format.  It's likely to take a lot longer for you to develop your microformat. It's likely your microformat will be needlessly complicated. And because you won't be familiar with both whole existing microformats and their vocabularies, you will more than likely re-invent chunks of microformats and terms, rather than re-use from existing microformats.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[get-started]]&lt;br /&gt;
* [[why-are-content-standards-hard]]&lt;br /&gt;
* [[principles]]&lt;br /&gt;
* [[process]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70601</id>
		<title>menu-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70601"/>
		<updated>2022-12-05T19:21:25Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Break Restaurant */ Grammar correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Per [[process]] this page is for collecting real world [[examples]] of restaurant [[menu]] publishing, publishing information about menu items ([[food]]) intended for human consumption in an organized manner, towards the development of a menu microformat.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Menus on the web have many of the same features as printed menus used in restaurants. They are a list of products organized by type. On the web, some menus include items on one page, with sections for different categories, e.g., appetizers, salads, main dishes, desserts, etc. On other sites, different menu sections are on different pages, e.g. /menu/salads, /menu/soups, etc. Some web site menus contain cocktails, either in a separate page or in its own section. Wine lists are quite common too, usually on a separate page.&lt;br /&gt;
&lt;br /&gt;
There is no uniform set of category names. Some restaurants use &amp;quot;main dish&amp;quot;, others denote main dish with &amp;quot;entree&amp;quot;. Some use &amp;quot;starter&amp;quot;, others &amp;quot;appetizer&amp;quot;, to denote a first course. Also, larger menus often break up main dishes into categories, e.g., &amp;quot;pasta&amp;quot;, &amp;quot;steak&amp;quot;, etc. There are of course language differences, e.g., in French one finds &amp;quot;entrée&amp;quot; for first course and &amp;quot;plat principal&amp;quot; for the main dish.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Example menus are organized by location.&lt;br /&gt;
&lt;br /&gt;
=== France ===&lt;br /&gt;
French menus are sometimes organized by course instead of category, i.e., entrée (first course), plat principal (main course), and dessert. Many French restaurants offer à la carte and prix fixe menus. À la carte are structured like American menus, with individually priced items. Prix fixe menus are priced per person, with sections for each course that offer a limited number of choices.&lt;br /&gt;
&lt;br /&gt;
==== Break Restaurant ====&lt;br /&gt;
Each item on [https://www.break-paris.fr/menus-cartes Break's menu] has a name, description, and price. Some also include tags like &amp;quot;&amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;Végétalien&amp;lt;/span&amp;gt;&amp;quot; (vegan) and &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;épicé&amp;lt;/span&amp;gt; (spicy). The categories are simplified: &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;plats&amp;lt;/span&amp;gt; (plates), sides, and desserts. There is also a sections for drinks, broken up into several subsections: cocktails, wine, beer, aperitifs, etc. On some of the drink sections, each item has its own price. On several -- alcool, cocktails classiques, and cocktails création -- there is only one price printed below the heading, with that price applying to all the items beneath it.&lt;br /&gt;
&lt;br /&gt;
==== Benoit ====&lt;br /&gt;
Benoit has two different menus. One is a [https://www.benoit-paris.com/sites/default/files/menus/2020_03_06_benoit_menu_dejeuner_fr.pdf prix fixe lunch menu] with three unnamed, implicit sections for first course, main course, and dessert. Each section offers three choices. The [https://www.benoit-paris.com/sites/default/files/menus/2020_01_16_benoit_paris_-_carte_food_truffe_fr.pdf à la carte menu] has sections like &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;hors d'œuvre froids&amp;lt;/span&amp;gt; (cold appetizers), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;poissons&amp;lt;/span&amp;gt; (fish), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;viandes&amp;lt;/span&amp;gt; (meat), etc.&lt;br /&gt;
&lt;br /&gt;
=== Italy ===&lt;br /&gt;
As in France, some Italian menus are organized by course, e.g., primo for first course, secondo for second course. Some menu sections, however, are based on a food cagegory, e.g. carne for meat, pesce for fish.&lt;br /&gt;
&lt;br /&gt;
==== 'A Taverna Do' Re ====&lt;br /&gt;
[https://atavernadore.com/menu 'A Taverna Do' Re's menu] has 3 sections: &amp;quot;Antipasti&amp;quot;, &amp;quot;I primi&amp;quot;, and &amp;quot;La carne alla brace&amp;quot;. The items have a long name that functions as a name-and-description, and a price.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== United States ===&lt;br /&gt;
&lt;br /&gt;
==== T.S. McHugh's Irish Pub ====&lt;br /&gt;
[https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf This pub menu]'s food items have a name, description, and price. Some items have two sizes (small and large) with a price for each. Also, some items contain a base price, and one or more &amp;quot;upsell&amp;quot; options with an upcharge price, e.g., nachos $8.75, add guacamole $2.00.&lt;br /&gt;
&lt;br /&gt;
The draughts on the menu are organized into four categories. Each listing includes a name. The microbrew draughts include two additional pieces of information: &amp;lt;abbr title=&amp;quot;international bitterness units&amp;quot;&amp;gt;ibus&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;alcohol by volume&amp;quot;&amp;gt;abv&amp;lt;/abbr&amp;gt;. There are also two prices (one for pint, one for pitcher) for each draught category. Those prices are listed in the heading for each category, rather than repeated in each individual listing.&lt;br /&gt;
&lt;br /&gt;
==== Sal Y Limon ====&lt;br /&gt;
[https://www.salylimonseattle.com/menu Sal Y Limon's menu] is one page that changes when you click different categories. Each item has only a name and description, no price.&lt;br /&gt;
&lt;br /&gt;
==== Canlis  ====&lt;br /&gt;
The [https://canlis.com/menu menu at Canlis] has only name and description for each item.&lt;br /&gt;
&lt;br /&gt;
==== Tavolata ====&lt;br /&gt;
[https://www.ethanstowellrestaurants.com/locations/tavolata-capitol-hill/takeout-menu/ Tavolata's menu] items each have a name, price, and description.&lt;br /&gt;
&lt;br /&gt;
==== 99 Restaurant ====&lt;br /&gt;
Their menu is spread out over several pages. The menu for [https://www.99restaurants.com/menu/steak/ steaks] is a good example. Each menu item includes a name, a description, and calories. Photos of the items are linked, but not part of the initial view of the page. Also, there are no prices, presumably because the price changes by location. There are also options for many items, like adding a salad or ordering a larger portion.&lt;br /&gt;
&lt;br /&gt;
==== Bertucci's ====&lt;br /&gt;
[https://www.bertuccis.com/menu/ Bertucci's menu] is on one page, with sections for salads, soups, entrees, etc. Each section has a picture, but individual items do not. They contain only a name, description, and price.&lt;br /&gt;
&lt;br /&gt;
=== international restaurant chains  ===&lt;br /&gt;
Large restaurants/chains must supply nutritional information on their menus in the United States. All the entries in this section show calories for each menu item.&lt;br /&gt;
&lt;br /&gt;
==== Applebee's ====&lt;br /&gt;
They use one page, where the url changes as you scroll. Each part works the same. The [https://www.applebees.com/en/menu/sandwiches-and-more sandwiches section] to take one example has a list of items with name, picture, price, and calories, and, when you hover a mouse pointer over it, order buttons.&lt;br /&gt;
&lt;br /&gt;
==== Olive Garden ====&lt;br /&gt;
The Olive Garden's [https://www.olivegarden.com/menu-listing/classic-entrees dinner entrees] menu (N.B. you may have to supply a location before they'll show you a menu) has a name, photo, price, and calories for each item, along with an order button, a bookmark-like &amp;quot;mark this as a favorite&amp;quot; button, and a tag if the item is &amp;quot;new&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== third party services ===&lt;br /&gt;
&lt;br /&gt;
==== Open Table ====&lt;br /&gt;
Open Table is a third party reservation site that publishes information about each restaurant that uses their service. To take one example, here's [https://www.opentable.com/ts-mchughs?originId=2&amp;amp;corrid=ce749341-1486-4d6c-96b4-2c4311ac6fb5&amp;amp;avt=eyJ2IjoyLCJtIjowLCJwIjowLCJzIjowLCJuIjowfQ&amp;amp;p=2020-12-03T00%3A00%3A00 T.S. McHugh's Pub on Open Table]. The menu is duplicated from [https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf their web site].&lt;br /&gt;
&lt;br /&gt;
==== Grub Hub ====&lt;br /&gt;
Grub Hub is a delivery service. Like Open Table, it publishes menus for restaurants that they provide delivery for. For example, here's [https://www.grubhub.com/restaurant/sal-y-limon-10-mercer-street-seattle/1579529 Grub Hub's Sal Y Limon menu]. It has the same items as the [https://www.salylimonseattle.com/menu restaurant's own website], though the Grub Hub version includes prices.&lt;br /&gt;
&lt;br /&gt;
==== Toast Tab ====&lt;br /&gt;
Toast Tab is a restaurant &amp;lt;abbr title=&amp;quot;point of sales&amp;gt;P.O.S.&amp;lt;/abbr&amp;gt; system. It offers an online ordering for pickup service that publishes the restaurant's menu. Since Toast Tab is publishing from the restaurant's POS system -- i.e., the same system that employees use to enter an order for patrons in the restaurant -- their menus are likely to be accurate.&lt;br /&gt;
&lt;br /&gt;
=== menu duplication ===&lt;br /&gt;
Many restaurants publish their menu on more than one site, usually because they subscribe to a third party service which copies their menu for the convenience of that service's customers. At minimum, this entails reentering data. Often, the menus are out of sync.&lt;br /&gt;
&lt;br /&gt;
==== The Sitting Room ====&lt;br /&gt;
The Sitting Room is a wine bar in Seattle, Washington, United States.&lt;br /&gt;
* [https://www.the-sitting-room.com/food restaurant website menu]&lt;br /&gt;
* [https://www.yelp.com/biz_photos/the-sitting-room-seattle?select=dRxYnz9hzLQ4o-VZ1yTPSg photo of menu on Yelp]&lt;br /&gt;
* [https://www.toasttab.com/thesittingroom/v3 Toast Tab menu]&lt;br /&gt;
* [https://www.opentable.com/restaurant/profile/206647 Open Table menu]&lt;br /&gt;
* [https://www.tripadvisor.com/Restaurant_Review-g60878-d432572-Reviews-The_Sitting_Room-Seattle_Washington.html Trip Advisor menu]&lt;br /&gt;
These five urls appear to contain three different menus:&lt;br /&gt;
# Trip Advisor and Open Table&lt;br /&gt;
# Sitting Room (i.e. their own website) and Toast Tab&lt;br /&gt;
# Yelp&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
* [[menu-brainstorming]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=svg&amp;diff=70600</id>
		<title>svg</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=svg&amp;diff=70600"/>
		<updated>2022-12-01T15:55:38Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Examples */ Removes unneeded rect element&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
The [https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/class class attribute is allowed on SVG elements]. As such, there are rich possibilities for embedding microformats with or in them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Here are a couple of examples.&lt;br /&gt;
&lt;br /&gt;
* a simple [[h-card]] using [[microformats2-implied-properties | implied properties]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;svg class=&amp;quot;h-card&amp;quot; viewBox=&amp;quot;0 0 200 200&amp;quot; height=&amp;quot;200&amp;quot; width=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;50%&amp;quot; cy=&amp;quot;50%&amp;quot; r=&amp;quot;100&amp;quot; fill=&amp;quot;gold&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;25&amp;quot; y=&amp;quot;110&amp;quot; font-size=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        Example Co.&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;type&amp;quot;: [&lt;br /&gt;
    &amp;quot;h-card&amp;quot;&lt;br /&gt;
   ], &lt;br /&gt;
   &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&lt;br /&gt;
     &amp;quot;Example Co.&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;br /&gt;
 ], &lt;br /&gt;
 &amp;quot;rels&amp;quot;: {}, &lt;br /&gt;
 &amp;quot;rel-urls&amp;quot;: {}&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* a slightly more complex example of an [[h-card]] with several specified properties and an embedded [[h-adr]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;svg class=&amp;quot;h-card&amp;quot; viewBox=&amp;quot;0 0 300 300&amp;quot; height=&amp;quot;300&amp;quot; width=&amp;quot;300&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;100&amp;quot; cy=&amp;quot;100&amp;quot; r=&amp;quot;100&amp;quot; fill=&amp;quot;gold&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text class=&amp;quot;p-name&amp;quot; x=&amp;quot;25&amp;quot; y=&amp;quot;110&amp;quot; font-size=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        Example Co.&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;g class=&amp;quot;p-adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text class=&amp;quot;p-street-address&amp;quot; x=&amp;quot;25&amp;quot; y=&amp;quot;220&amp;quot; font-size=&amp;quot;18&amp;quot;&amp;gt;&lt;br /&gt;
            123 Main St.&lt;br /&gt;
        &amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;text x=&amp;quot;25&amp;quot; y=&amp;quot;240&amp;quot; font-size=&amp;quot;18&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tspan class=&amp;quot;p-locality&amp;quot;&amp;gt;Pleasantville&amp;lt;/tspan&amp;gt;,&lt;br /&gt;
            &amp;lt;tspan class=&amp;quot;p-region&amp;quot;&amp;gt;California&amp;lt;/tspan&amp;gt;&lt;br /&gt;
            &amp;lt;tspan class=&amp;quot;p-postal-code&amp;quot;&amp;gt;90091&amp;lt;/tspan&amp;gt;&lt;br /&gt;
        &amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/g&amp;gt;&lt;br /&gt;
    &amp;lt;text class=&amp;quot;p-tel&amp;quot; x=&amp;quot;25&amp;quot; y=&amp;quot;260&amp;quot; font-size=&amp;quot;18&amp;quot;&amp;gt;&lt;br /&gt;
        +1-323-555-0100&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;type&amp;quot;: [&lt;br /&gt;
    &amp;quot;h-card&amp;quot;&lt;br /&gt;
   ], &lt;br /&gt;
   &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&lt;br /&gt;
     &amp;quot;Example Co.&amp;quot;&lt;br /&gt;
    ], &lt;br /&gt;
    &amp;quot;adr&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&lt;br /&gt;
       &amp;quot;h-adr&amp;quot;&lt;br /&gt;
      ], &lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
       &amp;quot;street-address&amp;quot;: [&lt;br /&gt;
        &amp;quot;123 Main St.&amp;quot;&lt;br /&gt;
       ], &lt;br /&gt;
       &amp;quot;locality&amp;quot;: [&lt;br /&gt;
        &amp;quot;Pleasantville&amp;quot;&lt;br /&gt;
       ], &lt;br /&gt;
       &amp;quot;region&amp;quot;: [&lt;br /&gt;
        &amp;quot;California&amp;quot;&lt;br /&gt;
       ], &lt;br /&gt;
       &amp;quot;postal-code&amp;quot;: [&lt;br /&gt;
        &amp;quot;90091&amp;quot;&lt;br /&gt;
       ]&lt;br /&gt;
      }, &lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;123 Main St.  Pleasantville, California 90091&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
    ], &lt;br /&gt;
    &amp;quot;tel&amp;quot;: [&lt;br /&gt;
     &amp;quot;+1-323-555-0100&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;br /&gt;
 ], &lt;br /&gt;
 &amp;quot;rels&amp;quot;: {}, &lt;br /&gt;
 &amp;quot;rel-urls&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* https://btrem.com/2021/04-svg-microformats&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=svg&amp;diff=70599</id>
		<title>svg</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=svg&amp;diff=70599"/>
		<updated>2022-12-01T01:12:53Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Example */ Adds second example of svg with h-card markup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
The [https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/class class attribute is allowed on SVG elements]. As such, there are rich possibilities for embedding microformats with or in them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Here are a couple of examples.&lt;br /&gt;
&lt;br /&gt;
* a simple [[h-card]] using [[microformats2-implied-properties | implied properties]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;svg class=&amp;quot;h-card&amp;quot; viewBox=&amp;quot;0 0 200 200&amp;quot; height=&amp;quot;200&amp;quot; width=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;50%&amp;quot; cy=&amp;quot;50%&amp;quot; r=&amp;quot;100&amp;quot; fill=&amp;quot;gold&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;25&amp;quot; y=&amp;quot;110&amp;quot; font-size=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        Example Co.&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;type&amp;quot;: [&lt;br /&gt;
    &amp;quot;h-card&amp;quot;&lt;br /&gt;
   ], &lt;br /&gt;
   &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&lt;br /&gt;
     &amp;quot;Example Co.&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;br /&gt;
 ], &lt;br /&gt;
 &amp;quot;rels&amp;quot;: {}, &lt;br /&gt;
 &amp;quot;rel-urls&amp;quot;: {}&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* a slightly more complex example of an [[h-card]] with several specified properties and an embedded [[h-adr]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;svg class=&amp;quot;h-card&amp;quot; viewBox=&amp;quot;0 0 300 300&amp;quot; height=&amp;quot;300&amp;quot; width=&amp;quot;300&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;rect width=&amp;quot;100%&amp;quot; height=&amp;quot;100%&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;red&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;100&amp;quot; cy=&amp;quot;100&amp;quot; r=&amp;quot;100&amp;quot; fill=&amp;quot;gold&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text class=&amp;quot;p-name&amp;quot; x=&amp;quot;25&amp;quot; y=&amp;quot;110&amp;quot; font-size=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        Example Co.&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;g class=&amp;quot;p-adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text class=&amp;quot;p-street-address&amp;quot; x=&amp;quot;25&amp;quot; y=&amp;quot;220&amp;quot; font-size=&amp;quot;18&amp;quot;&amp;gt;&lt;br /&gt;
            123 Main St.&lt;br /&gt;
        &amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;text x=&amp;quot;25&amp;quot; y=&amp;quot;240&amp;quot; font-size=&amp;quot;18&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tspan class=&amp;quot;p-locality&amp;quot;&amp;gt;Pleasantville&amp;lt;/tspan&amp;gt;,&lt;br /&gt;
            &amp;lt;tspan class=&amp;quot;p-region&amp;quot;&amp;gt;California&amp;lt;/tspan&amp;gt;&lt;br /&gt;
            &amp;lt;tspan class=&amp;quot;p-postal-code&amp;quot;&amp;gt;90091&amp;lt;/tspan&amp;gt;&lt;br /&gt;
        &amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/g&amp;gt;&lt;br /&gt;
    &amp;lt;text class=&amp;quot;p-tel&amp;quot; x=&amp;quot;25&amp;quot; y=&amp;quot;260&amp;quot; font-size=&amp;quot;18&amp;quot;&amp;gt;&lt;br /&gt;
        +1-323-555-0100&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;type&amp;quot;: [&lt;br /&gt;
    &amp;quot;h-card&amp;quot;&lt;br /&gt;
   ], &lt;br /&gt;
   &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&lt;br /&gt;
     &amp;quot;Example Co.&amp;quot;&lt;br /&gt;
    ], &lt;br /&gt;
    &amp;quot;adr&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&lt;br /&gt;
       &amp;quot;h-adr&amp;quot;&lt;br /&gt;
      ], &lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
       &amp;quot;street-address&amp;quot;: [&lt;br /&gt;
        &amp;quot;123 Main St.&amp;quot;&lt;br /&gt;
       ], &lt;br /&gt;
       &amp;quot;locality&amp;quot;: [&lt;br /&gt;
        &amp;quot;Pleasantville&amp;quot;&lt;br /&gt;
       ], &lt;br /&gt;
       &amp;quot;region&amp;quot;: [&lt;br /&gt;
        &amp;quot;California&amp;quot;&lt;br /&gt;
       ], &lt;br /&gt;
       &amp;quot;postal-code&amp;quot;: [&lt;br /&gt;
        &amp;quot;90091&amp;quot;&lt;br /&gt;
       ]&lt;br /&gt;
      }, &lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;123 Main St.  Pleasantville, California 90091&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
    ], &lt;br /&gt;
    &amp;quot;tel&amp;quot;: [&lt;br /&gt;
     &amp;quot;+1-323-555-0100&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;br /&gt;
 ], &lt;br /&gt;
 &amp;quot;rels&amp;quot;: {}, &lt;br /&gt;
 &amp;quot;rel-urls&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* https://btrem.com/2021/04-svg-microformats&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=svg&amp;diff=70598</id>
		<title>svg</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=svg&amp;diff=70598"/>
		<updated>2022-12-01T00:29:25Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Adds parsed json resulting from simple example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
The [https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/class class attribute is allowed on SVG elements]. As such, there are rich possibilities for embedding microformats with or in them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;svg class=&amp;quot;h-card&amp;quot; viewBox=&amp;quot;0 0 200 200&amp;quot; height=&amp;quot;200&amp;quot; width=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;50%&amp;quot; cy=&amp;quot;50%&amp;quot; r=&amp;quot;100&amp;quot; fill=&amp;quot;gold&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;25&amp;quot; y=&amp;quot;110&amp;quot; font-size=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        Example Co.&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
   &amp;quot;type&amp;quot;: [&lt;br /&gt;
    &amp;quot;h-card&amp;quot;&lt;br /&gt;
   ], &lt;br /&gt;
   &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&lt;br /&gt;
     &amp;quot;Example Co.&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;br /&gt;
 ], &lt;br /&gt;
 &amp;quot;rels&amp;quot;: {}, &lt;br /&gt;
 &amp;quot;rel-urls&amp;quot;: {}&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* https://btrem.com/2021/04-svg-microformats&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=svg&amp;diff=70597</id>
		<title>svg</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=svg&amp;diff=70597"/>
		<updated>2022-12-01T00:26:05Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Changes simple example to use implied name property of h-card&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
The [https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/class class attribute is allowed on SVG elements]. As such, there are rich possibilities for embedding microformats with or in them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;svg class=&amp;quot;h-card&amp;quot; viewBox=&amp;quot;0 0 200 200&amp;quot; height=&amp;quot;200&amp;quot; width=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;50%&amp;quot; cy=&amp;quot;50%&amp;quot; r=&amp;quot;100&amp;quot; fill=&amp;quot;gold&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;25&amp;quot; y=&amp;quot;110&amp;quot; font-size=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        Example Co.&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* https://btrem.com/2021/04-svg-microformats&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=svg&amp;diff=70596</id>
		<title>svg</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=svg&amp;diff=70596"/>
		<updated>2022-11-30T23:59:25Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Fix: corrects syntaxhightlight lang attribute&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
The [https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/class class attribute is allowed on SVG elements]. As such, there are rich possibilities for embedding microformats with or in them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;svg class=&amp;quot;h-card&amp;quot; viewBox=&amp;quot;0 0 200 200&amp;quot; height=&amp;quot;200&amp;quot; width=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;50%&amp;quot; cy=&amp;quot;50%&amp;quot; r=&amp;quot;100&amp;quot; fill=&amp;quot;gold&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text class=&amp;quot;p-name&amp;quot; x=&amp;quot;25&amp;quot; y=&amp;quot;110&amp;quot; font-size=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        Example Co.&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* https://btrem.com/2021/04-svg-microformats&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=existing-rel-values&amp;diff=70595</id>
		<title>existing-rel-values</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=existing-rel-values&amp;diff=70595"/>
		<updated>2022-11-30T23:54:55Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Fix: replaces deprecated &amp;lt;source&amp;gt; tag with &amp;lt;syntaxhighlight&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE: existing rel values }}&lt;br /&gt;
&lt;br /&gt;
This page contains tables of known HTML rel values from specifications, formats, proposals, brainstorms, and non-trivial [[POSH]] usage in the wild.  In addition, dropped and rejected values are listed at the end for comprehensiveness.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;usage&amp;quot;&amp;gt;usage&amp;lt;/span&amp;gt;: see [[rel-faq#How_is_rel_used|how is 'rel' used]].  Regarding &amp;lt;span id=&amp;quot;rev&amp;quot;&amp;gt;rev&amp;lt;/span&amp;gt;, see: [[rel-faq#Should_rev_even_be_used|should 'rev' even be used]].&lt;br /&gt;
&lt;br /&gt;
This page is also the official rel registry ([https://html.spec.whatwg.org/multipage/links.html#other-link-types WHATWG HTML] ([http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#other-link-types original link]), [http://www.w3.org/TR/html5/links.html#other-link-types W3C HTML5]). Add new and proposed rel values to the following section:&lt;br /&gt;
* [[existing-rel-values#HTML5_link_type_extensions|HTML5 link type extension]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== formats ==&lt;br /&gt;
These rel values are defined formats from specifications (HTML 4, microformats) are thus are &amp;lt;strong&amp;gt;recommended for general use&amp;lt;/strong&amp;gt;.  Alphabetically ordered by value.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* &amp;lt;strong&amp;gt;Do not&amp;lt;/strong&amp;gt; add proposed rel values for HTML5 here, add them to the [[#HTML5_link_type_extensions|HTML5 link type extensions]] table.&lt;br /&gt;
* &amp;lt;strong&amp;gt;Do not&amp;lt;/strong&amp;gt; add rel values you find in the wild to this table of rel formats, instead add them to the table in the [[existing-rel-values#POSH_usage|POSH section]].&lt;br /&gt;
* &amp;lt;strong&amp;gt;Do not&amp;lt;/strong&amp;gt; add non-HTML rel values you find to this table of rel formats, instead add them to the table in the [[existing-rel-values#non_HTML_rel_values|non HTML rel values section]].&lt;br /&gt;
* &amp;lt;strong&amp;gt;Do not&amp;lt;/strong&amp;gt; add rel values from obsolete/superceded proposals or drafts, instead add them to the table in the &amp;quot;dropped&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
* W3C Recommendations: &lt;br /&gt;
** [http://www.w3.org/TR/html401/types.html#h-6.12 HTML 4.01 section 6.12 Link types] (HTML4 Link types)&lt;br /&gt;
** [http://www.w3.org/TR/grddl/ Gleaning Resource Descriptions from Dialects of Languages] (GRDDL)&lt;br /&gt;
* [[microformats]] specifications&lt;br /&gt;
** [[xfn]]&lt;br /&gt;
** [[rel-license]]&lt;br /&gt;
** [[rel-nofollow]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Keyword&lt;br /&gt;
! Effect on &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;&lt;br /&gt;
! Effect on &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;&lt;br /&gt;
! Brief description &amp;lt;br /&amp;gt;(from the relevant specification where possible)&lt;br /&gt;
! Link to defining specification&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-acquaintance|acquaintance]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the person represented by the current document considers the person represented by the referenced document to be an acquaintance&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-alternate|alternate]]&lt;br /&gt;
| external resource&lt;br /&gt;
| external relation&lt;br /&gt;
| Designates substitute versions for the document in which the link occurs. When used together with the &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute, it implies a translated version of the document. When used together with the &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt; attribute, it implies a version designed for a different medium (or media). &lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-appendix|appendix]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document serving as an appendix in a collection of documents. &lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-bookmark|bookmark]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a bookmark. A bookmark is a link to a key entry point within an extended document. The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute may be used, for example, to label the bookmark. Note that several bookmarks may be defined in each document. &lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-chapter|chapter]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document serving as a chapter in a collection of documents.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-child|child]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| The referenced person is a child of the person represented by the current document. It may also indicate that the target document is a hierarchical child, or subdocument, of the current document.&lt;br /&gt;
| [[XFN]], [https://www.w3.org/TR/relations.html HTML 4.0 Specification]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-colleague|colleague]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a colleague of the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-contact|contact]] &lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the person represented by the current document considers the person represented by the referenced document to be a contact&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-contents|contents]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document serving as a table of contents. Some user agents also support the synonym ToC (from &amp;quot;Table of Contents&amp;quot;).&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-copyright|copyright]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a copyright statement for the current document.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-co-resident|co-resident]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person lives in the same residence as the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-co-worker|co-worker]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a co-worker of the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-crush|crush]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| this person considers the referenced person to be a crush (i.e. has a crush on the referenced person)&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-date|date]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| this person considers the referenced person to be a date (i.e. is dating the referenced person)&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-friend|friend]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the person represented by the current document considers the person represented by the referenced document to be a friend&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-glossary|glossary]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document providing a list of terms and their definitions that pertain to the current document.||[http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-help|help]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document offering help (more information, links to other sources information, etc.)&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-its-rules|its-rules]]&lt;br /&gt;
| allowed&lt;br /&gt;
| not allowed&lt;br /&gt;
| Refers to a document with external ITS rules.&lt;br /&gt;
| [http://www.w3.org/TR/its20/#selection-global-html5 Internationalization Tag Set (ITS) Version 2.0]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-kin|kin]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is part of the extended family of the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-license|license]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| &amp;amp;hellip;indicates that the &amp;lt;nowiki&amp;gt;[referenced document]&amp;lt;/nowiki&amp;gt; is a license for the current page.&lt;br /&gt;
| [[rel-license]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-me|me]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced document represents the same person as does the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-met|met]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| this person has met the referenced person&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-muse|muse]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person inspires the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-neighbor|neighbor]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person lives nearby the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-next|next]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| Refers to the next document in a linear sequence of documents. User agents may choose to preload the &amp;quot;next&amp;quot; document, to reduce the perceived load time.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-nofollow|nofollow]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| indicates that the destination of that hyperlink {{should-not}} be afforded any additional weight or ranking by user agents which perform link analysis upon web pages (e.g. search engines).&lt;br /&gt;
| [[rel-nofollow]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-parent|parent]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| The referenced person is a parent of the person represented by the current document. It may also indicate that the target document is the hierarchical parent, or container, of the current document.&lt;br /&gt;
| [[XFN]], [https://www.w3.org/TR/relations.html HTML 4.0 Specification]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prev|prev]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| Refers to the previous document in an ordered series of documents. Some user agents also support the synonym &amp;quot;Previous&amp;quot;.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-previous|previous]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| Synonym of &amp;lt;code&amp;gt;prev&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-section|section]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document serving as a section in a collection of documents.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sibling|sibling]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a sibling of the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-spouse|spouse]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a spouse of the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-start|start]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to the first document in a collection of documents. This link type tells search engines which document is considered by the author to be the starting point of the collection.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-stylesheet|stylesheet]]&lt;br /&gt;
| external resource&lt;br /&gt;
| not allowed&lt;br /&gt;
| a style sheet for the current document&amp;lt;br /&amp;gt; used with the invisible &amp;lt;link href&amp;gt; element which is not ideal for content relationships. Content relationships should be user visible and thus uses with &amp;lt;a href&amp;gt; are strongly preferred. Unfortunately the use of stylesheet in user visible content like &amp;lt;a href&amp;gt; appears to be strictly theoretical.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-subsection|subsection]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document serving as a subsection in a collection of documents.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sweetheart|sweetheart]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| this person considers the referenced person to be their sweetheart&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-tag|tag]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| &amp;amp;hellip;indicates that the &amp;lt;nowiki&amp;gt;[referenced document]&amp;lt;/nowiki&amp;gt; is an author-designated &amp;quot;tag&amp;quot; (or keyword/subject) for the current page.&lt;br /&gt;
| [[rel-tag]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-toc|toc]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Synonym of &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; (from &amp;quot;Table Of Contents&amp;quot;)&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-transformation|transformation]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Relates a source document to a transformation, usually represented in XSLT, that relates the source document syntax to the RDF graph syntax. Used in [[grddl|GRDDL]]&lt;br /&gt;
| [http://www.w3.org/TR/grddl/#transformation GRDDL] &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== notes ===&lt;br /&gt;
*&amp;lt;code&amp;gt;rel=&amp;quot;alternate&amp;quot;&amp;lt;/code&amp;gt; can take further meaning from additional attributes, such as &lt;br /&gt;
** &amp;lt;code&amp;gt;rel=&amp;quot;alternate&amp;quot; lang=&amp;quot;fr&amp;quot;&amp;lt;/code&amp;gt; (French language version of this page)&lt;br /&gt;
** &amp;lt;code&amp;gt;rel=&amp;quot;alternate&amp;quot; media=&amp;quot;print&amp;quot;&amp;lt;/code&amp;gt; (printable version of this page)&lt;br /&gt;
** &amp;lt;code&amp;gt;rel=&amp;quot;alternate&amp;quot; media=&amp;quot;handheld&amp;quot;&amp;lt;/code&amp;gt; (version of the page intended or better for handheld/portable devices like PDAs, cell phones, etc.)&lt;br /&gt;
&lt;br /&gt;
*Synonyms such as &amp;quot;previous&amp;quot;, &amp;quot;toc&amp;quot; are not as widely supported as the main term.&lt;br /&gt;
&lt;br /&gt;
== proposals ==&lt;br /&gt;
A few rel values have been developed as drafts as a result of going through most of the microformats [[process]], and are thus listed here for your serious consideration. You &amp;lt;strong&amp;gt;may use these values&amp;lt;/strong&amp;gt;, and if you find any problems with them please point them out on the respective &amp;quot;issues&amp;quot; page for the rel value.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary !! proposed in !! external spec (if any)&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pronunciation|pronunciation]] || &amp;amp;hellip;indicates that the destination of the 'link' element is a document providing a pronunciation lexicon for speech-synthesis purposes. || [[rel-pronunciation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-directory|directory]] || &amp;amp;hellip;indicates that the destination of the hyperlink is a directory listing containing an entry for the current page. || [[rel-directory]]&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-enclosure|enclosure]] || &amp;amp;hellip;indicates that the destination of that hyperlink is intended to be downloaded and cached. || [[rel-enclosure]] || [http://www.apps.ietf.org/rfc/rfc4287.html RFC4287]&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-home|home]] || &amp;amp;hellip;indicates that the &amp;lt;nowiki&amp;gt;[referenced document]&amp;lt;/nowiki&amp;gt; is the homepage of the site in which the current page appears. || [[rel-home]]&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-payment|payment]] || &amp;amp;hellip;indicates that the destination of the hyperlink provides a way to show or give support (e.g. financial) for the current page|| [[rel-payment]]&lt;br /&gt;
|-&lt;br /&gt;
| vcs-* || &amp;amp;hellip;indicates that the destination of the hyperlink is the location of a Version Control System repository related to that page.|| || [https://joeyh.name/rfc/rel-vcs/ rel=vcs-*]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== HTML5 link type extensions ==&lt;br /&gt;
&lt;br /&gt;
The following values are registered as link type extensions per the [http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#other-link-types requirements in the WHATWG HTML spec] and the [http://www.w3.org/TR/html5/links.html#other-link-types requirements in the W3C HTML5 spec]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before you register a new value:&lt;br /&gt;
* '''Please check the [[#formats|Formats table]] and DO NOT re-register''' rel values that are already there. Please note that the W3C HTML WG has made a [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Decision] to drop &amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;up&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;first&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;last&amp;lt;/code&amp;gt; from the HTML5 spec itself.&lt;br /&gt;
* '''Please check the [[#dropped|Dropped table]] and DO NOT register''' values that are already there. If you believe a rel value was dropped from another specification without prejudice, please provide link/cite to explicit text/decision stating as such, e.g. the value was merely postponed, or perhaps expected to be spun-out into its own spec from the group developing that specification.&lt;br /&gt;
&lt;br /&gt;
Note that entries in the [[#formats|Formats table]] and entries that are already in HTML5 as built-in keywords are also considered extensions with the &amp;quot;Ratified&amp;quot; status.&lt;br /&gt;
&lt;br /&gt;
Please make sure that registrations added here have all the required data filled in ''including'':&lt;br /&gt;
* &amp;quot;Effect on link&amp;quot;&lt;br /&gt;
* &amp;quot;Effect on a and area&amp;quot; and &lt;br /&gt;
* a link to a spec that documents the keyword ''as an HTML &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; keyword''. (A spec that merely defines the file format of the link target but does not define the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; keyword for use in HTML is not the kind of spec that is being required here.)&lt;br /&gt;
&lt;br /&gt;
Entries lacking any of the above required data will likely be removed. &lt;br /&gt;
&lt;br /&gt;
Changes to this registry will not be reflected in validators in real time. But validators will typically get automatically updated with the changes within one week or so&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Keyword&lt;br /&gt;
! Effect on &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;&lt;br /&gt;
! Effect on &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;&lt;br /&gt;
! Brief description&lt;br /&gt;
! Link to specification&lt;br /&gt;
! Synonyms&lt;br /&gt;
! Status&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-about|about]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| The resource linked to contains information about the current page.&lt;br /&gt;
| [https://www.rfc-editor.org/rfc/rfc6903.html#section-2 RFC6903]&lt;br /&gt;
| It might combine with [[rel-me]] or [[rel-author]] in links to an &amp;quot;about&amp;quot; section focused on an author&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-amphtml|amphtml]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Specify an alternate version of the document written in AMP HTML&lt;br /&gt;
| [https://github.com/ampproject/amphtml AMP HTML documentation]&lt;br /&gt;
| could be combined with rel=alternate&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-apple-touch-icon|apple-touch-icon]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a Webpage Icon for a “Web Clip”, or “touch icon”, for mobile devices (not limited to Apple devices).&lt;br /&gt;
| [http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/configuringwebapplications/configuringwebapplications.html Apple's Safari Web Content Guide]&lt;br /&gt;
| probably redundant with rel=icon&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-apple-touch-icon-precomposed|apple-touch-icon-precomposed]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a Webpage Icon for a “Web Clip”, or “touch icon”, for mobile devices (not limited to Apple devices).&lt;br /&gt;
| [http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/configuringwebapplications/configuringwebapplications.html Apple's Safari Web Content Guide]&lt;br /&gt;
| probably redundant with rel=icon&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-apple-touch-startup-image|apple-touch-startup-image]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a splashscreen for Web apps on iOS Safari &lt;br /&gt;
| [http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/configuringwebapplications/configuringwebapplications.html Apple's Safari Web Content Guide]&lt;br /&gt;
| maybe redundant with rel=icon with the sizes attribute?&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-archived|archived]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Hyperlink Annotation&lt;br /&gt;
| The target resource is archived and kept largely or solely for historical purposes.&lt;br /&gt;
| [https://sitemorse.com/rel-archived/ rel=&amp;quot;archived&amp;quot; description]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-attachment|attachment]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| The resource linked to is &amp;quot;attached&amp;quot; to this document, similar to email attachments. Used in WordPress.&lt;br /&gt;
| No formal specification&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-authorization_endpoint|authorization_endpoint]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a hosted authorization server&lt;br /&gt;
| [https://www.w3.org/TR/indieauth/ IndieAuth spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-canonical|canonical]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Specifies the canonical URL for the current document in order to help avoid duplicate content.&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Canonical_meta_tag Canonical meta tag] [http://www.Google.com/support/webmasters/bin/answer.py?answer=139066#2 Canonicalization at Google Webmaster Central] [http://www.Bing.com/community/site_blogs/b/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx Microsoft Webmaster Center] [http://www.YSearchBlog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ Yahoo! Search Blog]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-category|category]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to a category assigned to the current document or post. Implemented by WordPress for indicating a relation between a blog post and a category.&lt;br /&gt;
| [[rel-category]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-code-repository|code-repository]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| indicates a code repository location. For link, it specifically indicates, in the case of server-generated content, the location of source code responsible for the generation of the current page, or, in the case of static files, where copies of the current page are housed). If the specific data/content built up at the page is stored separately from the generator (e.g., the code for a CMS vs. the specific CMS instance's SQL tables or JSON data files), this only refers to the generator and [[rel-content-repository|content-repository]] should be used to indicate the location for the storage of content. Otherwise, the code repository can be considered as also including the content. While the repository should contain its own license file, the [[rel-code-license|code-license]] rel-value is proposed as a direct pointer to the license (see also [[rel-content-license|content-license]]).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-code-license|code-license]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| indicates a license for code (a proposed broader replacement for [[rel-jslicense|jslicense]]). For link, it specifically indicates, in the case of server-generated content, the location of the license for all source code responsible for the generation of the current page, or, in the case of static files, the location of the license for all of these files). If the specific data/content built up at the page is stored separately from the generator (e.g., the code for a CMS vs. the specific CMS instance's SQL tables or JSON data files), this only refers to the generator and [[rel-content-license|content-license]] should be used to indication the license for the content. Otherwise, code-license can be considered as also covering the license of the content. Pointing to the repository containing the static or generator code files should be done with [[rel-code-repository|code-repository]] (and [[rel-content-repository|content-repository]] for any separate content).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-component|component]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify an HTML document that is treated as a component of this document.&lt;br /&gt;
| [https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/components/index.html Web Components]&lt;br /&gt;
| &lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-chrome-webstore-item|chrome-webstore-item]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Link tag to declare for app and extensions inline installations hosted in the Chrome Web Store.&lt;br /&gt;
| [https://developers.google.com/chrome/web-store/docs/inline_installation Using Inline Installation]&lt;br /&gt;
| &lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-content-repository|content-repository]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| indicates a repository housing data content. For link, it specifically indicates, in the case of server-generated content, the location where separately housed data files used to populate the current page are stored (otherwise &amp;quot;code-repository&amp;quot; is sufficient to include content as well as code). If the specific data/content built up at the page is stored separately from the generator (e.g., the code for a CMS vs. the specific CMS instance's SQL tables or JSON data files), this only refers to the data/content files and [[rel-code-repository|code-repository]] should be used to indicate the location for the storage of the generator source files. Otherwise, [[rel-code-repository|code-repository]] can be considered as also including the content instead. While the repository should contain its own license file, the [[rel-content-license|content-license]] rel-value is proposed as a direct pointer to the license (see also [[rel-code-license|code-license]]).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-content-license|content-license]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| indicates a license for data content. For link, it specifically indicates, in the case of server-generated content, the location of the license for all separately housed data files used to populate the current page are stored, (otherwise &amp;quot;code-license&amp;quot; is sufficient to cover the license of content as well as code)). If the specific data/content built up at the page is stored separately from the generator (e.g., the code for a CMS vs. the specific CMS instance's SQL tables or JSON data files), this only refers to the data/content files and [[rel-code-license|code-license]] should be used to indication the license for the generator source files. Otherwise, code-license can be considered as also covering the license of the content. Pointing to the repository containing the data files should be done with [[rel-content-repository|content-repository]] (and [[rel-code-repository|code-repository]] for the static or generator code files).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#conformsTo|DCTERMS.conformsTo]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An established standard to which the described resource conforms. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.conformsTo&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#contributor|DCTERMS.contributor]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An entity responsible for making contributions to the resource. Examples include a person, an organization, or a service. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.contributor&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#creator|DCTERMS.creator]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An entity primarily responsible for making the resource. Examples include a person, an organization, or a service. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.creator&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#description|DCTERMS.description]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An account of the resource. Description may include but is not limited to: an abstract, a table of contents, a graphical representation, or a free-text account of the resource.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.description&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#hasFormat|DCTERMS.hasFormat]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is substantially the same as the pre-existing described resource, but in another format.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#hasPart|DCTERMS.hasPart]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is included either physically or logically in the described resource.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#hasVersion|DCTERMS.hasVersion]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is a version, edition, or adaptation of the described resource.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isFormatOf|DCTERMS.isFormatOf]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is substantially the same as the described resource, but in another format.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isPartOf|DCTERMS.isPartOf]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource in which the described resource is physically or logically included.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isReferencedBy|DCTERMS.isReferencedBy]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that references, cites, or otherwise points to the described resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isReplacedBy|DCTERMS.isReplacedBy]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that supplants, displaces, or supersedes the described resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isRequiredBy|DCTERMS.isRequiredBy]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that requires the described resource to support its function, delivery, or coherence. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isVersionOf|DCTERMS.isVersionOf]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource of which the described resource is a version, edition, or adaptation.	&amp;lt;br /&amp;gt;Changes in version imply substantive changes in content rather than differences in format. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#license|DCTERMS.license]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A legal document giving official permission to do something with the resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.license&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#mediator|DCTERMS.mediator]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An entity that mediates access to the resource and for whom the resource is intended or useful. In an educational context, a mediator might be a parent, teacher, teaching assistant, or care-giver. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.mediator&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#publisher|DCTERMS.publisher]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An entity responsible for making the resource available. Examples include a person, an organization, or a service. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.publisher&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#references|DCTERMS.references]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is referenced, cited, or otherwise pointed to by the described resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#relation|DCTERMS.relation]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#replaces|DCTERMS.replaces]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is supplanted, displaced, or superseded by the described resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#requires|DCTERMS.requires]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is required by the described resource to support its function, delivery, or coherence. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#rightsHolder|DCTERMS.rightsHolder]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A person or organization owning or managing rights over the resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.rightsHolder&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#source|DCTERMS.source]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource from which the described resource is derived. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#subject|DCTERMS.subject]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| The topic of the resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-disclosure|disclosure]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| External Resource&lt;br /&gt;
| The 'disclosure' Link Relation Type designates a list of patent disclosures or a particular patent disclosure itself made with respect to material for which such relation type is specified.&lt;br /&gt;
| [http://tools.ietf.org/html/draft-yevstifeyev-disclosure-relation The 'disclosure' Link Relation Type]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-discussion|discussion]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to discussion of the current document or post.&lt;br /&gt;
| [[rel-discussion]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-donation|donation]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Indicates that the destination of the hyperlink provides a way to show or give support (e.g. financial) for the current page on a voluntary basis&lt;br /&gt;
| No formal specification&lt;br /&gt;
| Closely related to [[rel-payment]]&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dns-prefetch|dns-prefetch]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Tells the browser to perform dns lookup for host names ahead of use.&lt;br /&gt;
| [https://developer.mozilla.org/En/Controlling_DNS_prefetching Mozilla documentation] [http://dev.chromium.org/developers/design-documents/dns-prefetching Google documentation]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-edit|edit]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Tells the browser where the current page can be edited&lt;br /&gt;
| [http://universaleditbutton.org/Registered_MIME_type#Alternate_Linking_Scheme Universal Edit Button Alternate Linking Scheme].  Implemented in at least [http://mediawiki.org MediaWiki].&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-edituri|EditURI]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A blogging auto discovery value, commonly used by WordPress&lt;br /&gt;
| [http://bitworking.org/projects/atom/draft-gregorio-09.html#Edit AtomAPI]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-enclosure|enclosure]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource&lt;br /&gt;
| Indicates that the referred resource is intended to be downloaded and cached.&lt;br /&gt;
| [[rel-enclosure]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-entry-content|entry-content]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| External Resource&lt;br /&gt;
| Indicates that the referenced document is an alternative display source for an Internet Explorer Web Slice.&lt;br /&gt;
| [http://msdn.microsoft.com/en-us/library/cc304073(VS.85).aspx#_alternative Web Slice format specification 0.9]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-external|external]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Indicates that the referenced document is not part of the same site as the current document.&lt;br /&gt;
| [[rel-external]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-first|first]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Indicates that the document is part of a sequence, and that the link is leading to the document that is the first logical document in the sequence.&lt;br /&gt;
| [https://www.w3.org/TR/2011/WD-html5-20110113/links.html#link-type-first W3C Working Draft 13 January 2011]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-gbfs|gbfs]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| The location of the gbfs auto-discovery file&lt;br /&gt;
| [https://github.com/NABSA/gbfs/blob/master/gbfs.md General Bikeshare Feed Specification]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-gtfs-static|gtfs-static]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Indicates the associated GTFS Static file&lt;br /&gt;
| [https://developers.google.com/transit/gtfs/reference General Transit Feed Specification Reference]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-gtfs-realtime|gtfs-realtime]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Indicates the associated GTFS-Realtime file&lt;br /&gt;
| [https://developers.google.com/transit/gtfs-realtime/reference GTFS-realtime Reference]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-home|home]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to the top level document for the current document. It can be combined with 'alternate' to indicate a feed for the site of the current page.&lt;br /&gt;
| [[rel-home]]&lt;br /&gt;
| [[rel-root]]&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-hub|hub]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to a hub that enables registration for notification of updates to the current page.&lt;br /&gt;
| [http://pubsubhubbub.googlecode.com/svn/trunk/pubsubhubbub-core-0.3.html#discovery PubSubHubbub Spec] [https://www.w3.org/TR/websub/ WebSub spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-import|import]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| HTML Imports are a way to include and reuse HTML documents in other HTML documents.&lt;br /&gt;
| [http://www.w3.org/TR/html-imports HTML Imports]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-in-reply-to|in-reply-to]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to an original post that the current page is a comment on or reply to.&lt;br /&gt;
| [[rel-in-reply-to]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-root|root]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| The target document is the root node of the hierarchical tree structure that hosts the current document&lt;br /&gt;
| No formal specification&lt;br /&gt;
| [[rel-home]]&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-index|index]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to a document providing a list of topics with pointers that pertain to the current document.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-issues|issues]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to issues regarding the current document or specification.&lt;br /&gt;
| [[rel-discussion]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-jslicense|jslicense]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to a document with JavaScript source code and license information (also called a [http://www.gnu.org/licenses/javascript-labels.html JavaScript License Web Labels] page). We might want choose a keyword for this that is more general -- there are many situations besides JavaScript in which it is desirable or required by license agreements (e.g., GNU GPL) to make an offer of both the source code and a copy of a license when distributing object code versions of a given work.&lt;br /&gt;
| [[rel-jslicense]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-last|last]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Indicates that the document is part of a sequence, and that the link is leading to the document that is the last logical document in the sequence.&lt;br /&gt;
| [https://www.w3.org/TR/2011/WD-html5-20110113/links.html#link-type-last W3C Working Draft 13 January 2011]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-lightbox|lightbox]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Img Pop-Up&lt;br /&gt;
| Images with this attribute are displayed in a larger way than embedded in a website (or how you specified it) when clicked (e.g. with installed &amp;quot;Lightbox 2&amp;quot;-Plugin). When adding [group] to rel=&amp;quot;lightbox&amp;quot; all images get a clickable button for next/prev; insert into &amp;lt;code&amp;gt;&amp;amp;lt;a rel=&amp;quot;lightbox[group]&amp;quot;&amp;gt;&amp;amp;lt;img src=&amp;quot;http:example.com/img.jpg&amp;quot;&amp;gt;&amp;amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://lokeshdhakar.com/projects/lightbox2/ Lightbox 2] (needs actual specification to be kept in this list, this link is just documentation of one implementation)&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-lightvideo|lightvideo]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Video Pop-Up&lt;br /&gt;
| Loads the video in a lightbox effect&lt;br /&gt;
| [https://www.drupal.org/node/252276 Lightbox2 - How to display video content]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-main|main]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| The current page is a subsection or a less important page than the target resource &lt;br /&gt;
| No formal specification&lt;br /&gt;
| It can be a synonym of [[rel-parent]] when the latter refers to a document and not a person. It differs however from [[rel-home]] and [[rel-root]], as the latter refer only to the topmost resource in the hierarchical tree structure (and in this case they may be combined with [[rel-main|main]]). Note that [[rel-main]] does not necessarily refer to a higher node in a tree structure, as the target resource can simply be a more important sibling node.&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-manifest|manifest]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Imports or links to a manifest&lt;br /&gt;
| [http://w3c.github.io/manifest/#linking W3C Manifest for web application]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-mask-icon|mask-icon]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a Webpage Icon for a “Pinned Tabs” on Safari 9.&lt;br /&gt;
| probably redundant with rel-icon&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-meta|meta]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| External metadata about the HTML document&lt;br /&gt;
| [http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/#section-rdf-in-HTML W3C's RDF/XML Syntax Specification]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-micropub|micropub]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| the micropub endpoint for creating new posts&lt;br /&gt;
| [https://www.w3.org/TR/micropub/  Micropub scecification]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-noopener|noopener]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Annotation&lt;br /&gt;
| Requires that any browsing context created by following the hyperlink must not have an opener browsing context.&lt;br /&gt;
| [https://html.spec.whatwg.org/multipage/semantics.html#link-type-noopener 4.6.6.11 Link type ”noopener&amp;quot;]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid.delegate|openid.delegate]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| When the page that contains the link is used as an OpenID indentifier, the relying party perform sOpenID 1.1 authentication with the link target as the identifier instead. &lt;br /&gt;
| [http://openid.net/specs/openid-authentication-1_1.html#delegating_authentication OpenID Authentication 1.1]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid.server|openid.server]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| The OpenID server for the relying party to contact for OpenID 1.1 authentication&lt;br /&gt;
| [http://openid.net/specs/openid-authentication-1_1.html#anchor4 OpenID Authentication 1.1]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid2.local_id|openid2.local_id]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| When the page that contains the link is used as an OpenID indentifier, the relying party perform sOpenID 2.0 authentication with the link target as the identifier instead. &lt;br /&gt;
| [http://openid.net/specs/openid-authentication-2_0.html#rfc.section.7.3.3 OpenID Authentication 2.0]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid2.provider|openid2.provider]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| The OpenID server for the relying party to contact for OpenID 2.0 authentication&lt;br /&gt;
| [http://openid.net/specs/openid-authentication-2_0.html#rfc.section.7.3.3 OpenID Authentication 2.0]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-p3pv1|p3pv1]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| References a machine-readable privacy policy description in the P3P format&lt;br /&gt;
| [http://www.w3.org/TR/P3P/#syntax_link P3P spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pgpkey|pgpkey]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Associates a PGP key with a Web page so that the Web page URL can be used as the commenter's URL in PGP-signed blog comments and the blogging system receiving the comment can fetch the key and verify the signature as belonging to the owner of the URL.&lt;br /&gt;
| [http://golem.ph.utexas.edu/~distler/blog/archives/000320.html PGP-Signed Comments]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pingback|pingback]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| gives the address of the pingback server that handles pingbacks to the current document&lt;br /&gt;
| [http://www.hixie.ch/specs/pingback/pingback Pingback]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-preconnect|preconnect]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Indicates an origin that will be used to fetch required resources. Initiating an early connection, which includes the DNS lookup, TCP handshake, and optional TLS negotiation, allows the user agent to mask the high costs of connection establishment latency.&lt;br /&gt;
| [http://www.w3.org/TR/resource-hints/ Resource Hints Working Draft]&lt;br /&gt;
| &lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prerender|prerender]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource&lt;br /&gt;
| Prerenders the Web page targeted by the link including running it scripts.&lt;br /&gt;
| [[rel-prerender]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
| [[rel-profile|profile]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Contextual External Resource &lt;br /&gt;
| indicate[s] that the destination of that hyperlink is a metadata profile (e.g. an [[XMDP]] profile) for the current page or portion thereof. See also [[xmdp-brainstorming]].&lt;br /&gt;
| [http://microformats.org/wiki/rel-profile rel-profile]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-publisher|publisher]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource &lt;br /&gt;
| Indicates that the referenced document is a metadata profile (e.g., a social-media/real-name profile such as a Google+ profile) for the publisher of the current page, or some portion of the current page.&lt;br /&gt;
| [https://support.google.com/plus/answer/1713826?hl=en Google help page]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-radioepg|radioepg]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource &lt;br /&gt;
| Indicates that the referenced document is a RadioDNS Service Information document (ETSI TS 102 818 s10.2.3) containing information on the radio station that publishes the current page&lt;br /&gt;
| [https://radiodns.org/developers/documentation RadioDNS Documentation]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-rendition|rendition]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource&lt;br /&gt;
| Indicates some example rendering, interpretation, or depiction of the source. User agents may choose to execute, display, or render the target in-place; or navigate to the target.&lt;br /&gt;
| [http://www.globalmentor.com/specs/html-rel-rendition/ HTML rel rendition]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-reply-to|reply-to]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| indicates any mailbox(es) (i.e. email addresses) to which responses are to be sent. ''Note: this is distinct from the 'in-reply-to' value which refers to the originating document, not to the address where comments should be sent.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc2822 RFC2822] (originally [http://tools.ietf.org/html/rfc822#section-4.4.3 RFC822])&lt;br /&gt;
|&lt;br /&gt;
| ratified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-schema.DCTERMS|schema.DCTERMS]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Maps the prefix &amp;quot;DCTERMS&amp;quot; for use in other Dublin-Core related link relations (such as DCTERMS.creator) and meta keywords&lt;br /&gt;
| [http://dublincore.org/documents/dc-html/#sect-4.2 Section 4.2 of &amp;quot;Expressing Dublin Core metadata using HTML/XHTML meta and link elements&amp;quot;]&lt;br /&gt;
| see also [https://wiki.whatwg.org/wiki/MetaExtensions &amp;quot;WhatWG MetaExtensions Wiki] for usage examples in meta keywords&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-service|service]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Atom Publishing Protocol editing service autodiscovery.&lt;br /&gt;
| [http://wiki.whatwg.org/wiki/ServiceRelExtension Documentation on the WHATWG wiki]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-shortlink|shortlink]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specifies the preferred shortened URL for the page.&lt;br /&gt;
| [http://code.google.com/p/shortlink/wiki/Specification shortlink spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sidebar|sidebar]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Indicates that the referenced document is intended to be shown in a secondary browsing context.&lt;br /&gt;
| [[rel-sidebar]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sitemap|sitemap]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Provides a link to an XML document describing the layout of the site.&lt;br /&gt;
| [[rel-sitemap]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-subresource|subresource]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An external resource intended for use within the current page.&lt;br /&gt;
| [http://www.chromium.org/spdy/link-headers-and-server-hint/link-rel-subresource Chromium documentation]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sword|sword]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Not allowed&lt;br /&gt;
| SWORD is a lightweight protocol for remotely depositing content into repositories. .[http://swordapp.org/ The SWORD project]&lt;br /&gt;
| [[rel-sword]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-syndication|syndication]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to a page which is a syndicated copy of the current page.&lt;br /&gt;
| [[rel-syndication]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-timesheet|timesheet]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Applies a timesheet to the document.&lt;br /&gt;
| [http://www.w3.org/TR/timesheets/#smilTimesheetsNS-Elements-Timesheet non-normative section in the Timesheet spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-token_endpoint|token_endpoint]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify an HTTP endpoint that Micropub clients can use to obtain an access token given an authorization code&lt;br /&gt;
| [https://www.w3.org/TR/indieauth/ IndieAuth spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-webmention|webmention]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| gives the address of the webmention endpoint that handles webmentions to the current document&lt;br /&gt;
| [https://www.w3.org/TR/webmention/ Webmention specification]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-widget|widget]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource&lt;br /&gt;
| Autodiscovery for W3C widgets&lt;br /&gt;
| [http://dev.w3.org/2006/waf/widgets/Overview.html#linking-to-a-widget-package-from-a-html- non-normative section in the Widget packaging spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-wlwmanifest|wlwmanifest]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Windows Live Writer manifest autodiscovery&lt;br /&gt;
| [http://msdn.microsoft.com/en-us/library/bb463263.aspx documentation on MSDN]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-image_src|image_src]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a Webpage Icon for use by Facebook, Yahoo, Digg, etc.&lt;br /&gt;
| Unknown, but see for instance [http://www.niallkennedy.com/blog/2009/03/enhanced-social-share.html this]&lt;br /&gt;
| probably redundant with rel=icon&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-cmis-acl|http://docs.oasis-open.org/ns/cmis/link/200908/acl]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource&lt;br /&gt;
| Identifies the resource containing a CMIS ACL document for the link context&lt;br /&gt;
| [http://docs.oasis-open.org/cmis/CMIS/v1.0/cs01/cmis-spec-v1.0.html#_Toc243905525 CMIS 1.0, Section 3.4.3.4]&lt;br /&gt;
| &lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-stylesheet/less|stylesheet/less]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Less CSS framework stylesheets.&lt;br /&gt;
| [http://lesscss.org/#-client-side-usage Less CSS usage]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-yandex-tableau-widget|yandex-tableau-widget]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Lets webmasters configure the appearance of their own site widgets in Yandex.Browser&lt;br /&gt;
| [https://api.yandex.com/tableau/ Yandex's Tableau API]&lt;br /&gt;
| &lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== brainstorming ==&lt;br /&gt;
Several rel values are being brainstormed as potential microformats and are thus listed here. If you find you have a use for such semantics in real world examples, &amp;lt;strong&amp;gt;consider trying out&amp;lt;/strong&amp;gt; these values and provide feedback on the respective brainstorming page(s) with your results and experiences.&lt;br /&gt;
&lt;br /&gt;
You may list new proposed rel values here, and even better if you can list and link to POSH uses in the wild.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary !! brainstormed in and usage in the wild&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-accessibility|accessibility]] || indicate[s] that the destination of that hyperlink contains accessibility information for the current page. || [http://www.brucelawson.co.uk/2009/rel-accessibility/ blog post] which itself uses the rel value in a &amp;amp;lt;link&amp;amp;gt; tag in the head of the document.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-author|author]] || indicate[s] that the destination of that hyperlink represents the author of the current page. Combines with [[rel-me|rel-me]] to chain authorship information. || Google has said it will index rel-Author in this [http://googlewebmastercentral.blogspot.com/2011/06/authorship-markup-and-web-search.html blog post], with further [http://www.google.com/support/webmasters/bin/answer.py?answer=1229920 discussion of the rel-me connection] See also [http://dev.w3.org/html5/spec/Overview.html#link-type-author the HTML5 spec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-bibliography|bibliography]] || indicate[s] that the destination of that hyperlink is a bibliography for the current page. || [http://microformats.org/discuss/mail/microformats-discuss/2007-October/010863.html mailing list post, 2007-10-15]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-cite|cite]] || indicate[s] that the destination of that hyperlink is an authoritative source or a precedent to the current page. || [[distributed-conversation-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-group|group]] || the referenced document represents a group to which the person represented by the current document belongs || [[group-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span id=&amp;quot;longdesc&amp;quot;&amp;gt;[[rel-longdesc|longdesc]]&amp;lt;/span&amp;gt; || Alternative to the img longdesc attribute, for use on visible links || [http://www.google.com/search?q=rel%3D%22longdesc%22 Google search for rel=longdesc in the wild] shows many sources of proposals. Please edit this to list the earliest and perhaps most recent/comprehensive proposal. No known real world POSH usage in the wild yet.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-map|map]] || Link to a map. Possibly embedded within an adr, hCard, geo or hCalendar. Parsers {{may}} attempt to parse the URL if it is a link to a known map site (e.g. Geohash, Google Maps, Multimap) and extract co-ordinates and other useful data. || (to [[User:TobyInk|TobyInk]] by email)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-member|member]] || the referenced document represents a member of the group represented by the current document || [[group-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-m_PageScroll2id|m_PageScroll2id]] || JS to scroll to a defined ID || [[group-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prefetch|prefetch]] || indicates the URL and content-type of a resource that is likely to be a required resource when the next action or navigation is triggered. Initiating an early fetch allows the user agent to mask the request latency of the resource and make it available sooner to the application.|| [https://igrigorik.github.io/resource-hints/#prefetch resource hints draft]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-preload|preload]] || indicates the URL and content-type of a resource that should be fetched as early as possible by the user agent. Initiating an early fetch allows the user agent to mask the request latency of the resource and make it available sooner to the application.|| [https://igrigorik.github.io/resource-hints/#preload resource hints draft]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prerender|prerender]] || indicates the URL of the next navigation target. Initiating a prerender allows the user agent to deliver an instant navigation experience: the user agent downloads the top-level resource and its assets, and performs all of the processing steps required to show the page without actually showing it to the user.|| [https://igrigorik.github.io/resource-hints/#prerender resource hints draft]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-profile|profile]] || indicate[s] that the destination of that hyperlink is a metadata profile (e.g. an [[XMDP]] profile) for the current page or portion thereof || [[xmdp-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-shortlink|shortlink]] || the referenced document represents the current document but with a shorter URL || [http://samj.net/2009/04/introducing-relshort-better-alternative.html blog post]&lt;br /&gt;
|-&lt;br /&gt;
| source || the referenced document represents the source code for the current document or project || [[source-brainstorming]] [http://adactio.com/journal/6667/ blog post]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| vcalendar-parent || link from an event to a containing event || [[User:TobyInk/hcalendar-1.1|hCalendar 1.1 draft]]&lt;br /&gt;
|-&lt;br /&gt;
| vcalendar-child || link from an event to a contained event || [[User:TobyInk/hcalendar-1.1|hCalendar 1.1 draft]]&lt;br /&gt;
|-&lt;br /&gt;
| vcalendar-sibling || link from an event to a related event with the same container || [[User:TobyInk/hcalendar-1.1|hCalendar 1.1 draft]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-status|status]] || the referenced document represents the status (or source of status updates) for the author of this document || [http://monkinetic.com/2009/11/24/status-autodiscovery-relstatus.html blog post]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| https://api.w.org/ || Link to Wordpress API || [https://wordpress.org/themes/twentysixteen/ Official Wordpress theme]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== more brainstorming ===&lt;br /&gt;
See also:&lt;br /&gt;
* [[genealogy-brainstorming]] for some thoughts on possible additional values for family relationships (use existing [[XFN]] [[rel-parent|parent]], [[rel-child|child]], [[rel-sibling|sibling]], [[rel-spouse|spouse]], [[rel-kin|kin]] values first though)&lt;br /&gt;
* [[xpn-brainstorming]] for some thoughts on possible additional values for professional relationships (use existing [[XFN]] [[rel-co-worker|co-worker]], [[rel-colleague|colleague]] values first though)&lt;br /&gt;
&lt;br /&gt;
== POSH usage ==&lt;br /&gt;
There are numerous rel values used as [[POSH]], both in the wild, whose origins are not necessarily known, nor are their meanings consistent.  There are also numerous rel values from external proposals of varying degrees of merit.  It is useful to document their existence and summarize their implied meanings/usage intent as research that may be used to perhaps take one or more of them thru the microformats [[process]] if there is both sufficient interest and sufficient in the wild usage.&lt;br /&gt;
&lt;br /&gt;
Note: If a value is missing from this table, it may have either already been promoted by writing it up as a proposal, or demoted by being explicitly dropped. Please check the other tables first before adding to this table.&lt;br /&gt;
&lt;br /&gt;
Note: this list is incomplete, please help complete it from the following sources:&lt;br /&gt;
&lt;br /&gt;
External sources: &lt;br /&gt;
* [http://developer.mozilla.org/about/meta Meta Information in DevMo Docs] (DevMo)&lt;br /&gt;
* [http://wiki.mozilla.org/Microsummaries Microsummary]&lt;br /&gt;
* [http://lachy.id.au/dev/markup/specs/wclr/ Web Communication Link Relationships] (WCLR)&lt;br /&gt;
* [http://www.w3.org/MarkUp/Relationships.html W3C Link Relationship values draft] (LRdraft) - from a draft of the HTML spec circa 1991. &lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/section-links.html#linkTypes HTML5 draft] '''Liable to change'''&lt;br /&gt;
* [http://wiki.foaf-project.org/Autodiscovery FOAF Project Wiki: Autodiscovery] (FOAF)&lt;br /&gt;
* [http://www.apps.ietf.org/rfc/rfc4685.html RFC4685]&lt;br /&gt;
* [http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html Google Blog]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary !! origin !! proposal(s)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-archive|archive]] || index of archived entries || unknown, perhaps Wordpress open source blogging software || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-archives|archives]] || Provides a link to a collection of records, documents, or other materials of historical interest. ||  || HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[rel-author|author]]||see brainstorming above for suggested use by google||unknown || DevMo / HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-canonical|canonical]] || To help search engines disambiguate the same page with multiple representations || Google || [http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html Google]/[http://www.bing.com/community/blogs/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx Microsoft]/[http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ Yahoo!], [http://blog.ask.com/2009/02/ask-is-going-canonical.html Ask Jeeves]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-comment|comment]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-contribution|contribution]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-edituri|EditURI]] &lt;br /&gt;
| Location of the xml-rpc gateway for a Wordpress install that allows external programs to add, edit and delete posts. Used by &amp;quot;[http://codex.wordpress.org/Weblog_Client WordPress blog client]&amp;quot; software for automating posting and updating blog content from your desktop. || Seen in [http://www.wordpress.org/ WordPress], e.g. [http://www.tom-watson.co.uk/].  || Description stubbed in [[rel-edituri]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-endorsed|endorsed]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-fan|fan]] || xxxx. || &amp;amp;hellip; || [[hcard-user-profile-authoring]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-feed|feed]] || Gives the address of a syndication feed for the current document. || &amp;amp;hellip; || WCLR/ HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-footnote|footnote]] || Location of the footnote on a link to a footnote. || Markdown preprocessors such as [http://maruku.rubyforge.org/ Maruku] || HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-icon|icon]] || Imports an icon to represent the current document. (Allowed in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; only) || [http://dev.w3.org/html5/spec-LC/links.html#rel-icon HTML5] || WCLR/HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-kinetic-stylesheet|kinetic-stylesheet]] || Imports a [http://kssproject.org/ KSS] 'kinetic stylesheet' to bind dynamic behavior to elements || Used in the [http://plone.org Plone] Content Management System || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-lightbox|lightbox]] || Hook - Indicates that following the link will trigger a &amp;quot;lightbox&amp;quot; script (Allowed in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; only) || ([http://www.google.co.uk/search?q=rel%3D%22lightbox%22 Google search for rel=lightbox in the wild]) Use &amp;quot;lightbox&amp;quot; instead of &amp;quot;clearbox&amp;quot; or &amp;quot;prettyPhoto&amp;quot; || &amp;amp;hellip; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-made|made]] || &amp;amp;hellip; || &amp;amp;hellip; || LRdraft&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-meta|meta]] || &amp;amp;hellip; ||  [http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/#transport 1999 W3C RDF syntax REC] || FOAF&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-microsummary|microsummary]]|| &amp;amp;hellip; || &amp;amp;hellip; ||[http://wiki.mozilla.org/Microsummaries Microsummary], be aware of: [[page-summary-formats#Issues_2|microsummary issues]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-noreferrer|noreferrer]] || indicates that no referrer information is to be leaked when following the link. || [http://dev.w3.org/html5/spec-LC/links.html#rel-noreferrer HTML5] || HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid-delegate|openid.delegate]] || &amp;amp;hellip; || ([http://www.google.co.uk/search?q=%22rel%3Dopenid%22 Google search for rel=openid.* in the wild]) || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid-server|openid.server]] || &amp;amp;hellip; || ([http://www.google.co.uk/search?q=%22rel%3Dopenid%22 Google search for rel=openid.* in the wild]) || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-permalink|permalink]] || indicate a permanent link for some, or all, content within the document. obsolete; use &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt; instead. || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pgpkey|pgpkey]] || (see also rel-publickey) || &amp;amp;hellip; || [http://golem.ph.utexas.edu/~distler/blog/archives/000320.html], [http://golem.ph.utexas.edu/~distler/blog/archives/000325.html]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pingback|pingback]] || Gives the address of the pingback server that handles pingbacks to the current document. (Allowed in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; only) || &amp;amp;hellip; || WCLR/ HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-popover|popover]] || Used by a JS widget to display a large, descriptive tooltip. || [http://twitter.github.com/bootstrap Twitter's Bootstrap] [http://twitter.github.com/bootstrap/javascript.html#popovers Popover.js] || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prefetch|prefetch]] || Specifies that the target resource should be pre-emptively cached. (Allowed in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; only) || &amp;amp;hellip; || HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-privacy|privacy]] || Specifies that the target resource is the privacy policy. || &amp;amp;hellip; || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-publickey|publickey]] || (see also rel-pgpkey) || &amp;amp;hellip; || [http://rasterweb.net/raster/2002/12/12/20021212072812/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-referral|referral]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-related|related]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-replies|replies]] || indicates a continued thread || unknown || [http://www.apps.ietf.org/rfc/rfc4685.html RFC4685]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-respond-proxy|respond-proxy]] || Working with respond.js - proxy on external server || [https://github.com/scottjehl/Respond] || [https://github.com/scottjehl/Respond]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-respond-redirect|respond-redirect]] || Working with respond.js - redirect location on local server || [https://github.com/scottjehl/Respond] || [https://github.com/scottjehl/Respond]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-resource|resource]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-search|search]] || &amp;amp;hellip; || unknown || unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sitemap|sitemap]] || Links to a site map document. || &amp;amp;hellip; || http://www.sitemaps.org/&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sponsor|sponsor]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-tooltip|tooltip]] || Used by a JS widget to display a tooltip similar (though more customizable) to what is shown by browsers if the 'title' attribute is present. || [http://twitter.github.com/bootstrap Twitter's Bootstrap] [http://twitter.github.com/bootstrap/javascript.html#tooltips Tooltip.js] (and likely other JS tools) || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-trackback|trackback]] || &amp;amp;hellip; || unknown, perhaps open source Movable Type blogging software || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-unendorsed|unendorsed]] || (probably redundant to [[rel-nofollow|nofollow]]) || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-user|user]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-wlwmanifest|wlwmanifest]] || Used by &amp;quot;[http://explore.live.com/windows-live-writer Windows Live Writer],&amp;quot; a Microsoft [http://codex.wordpress.org/Weblog_Client blog client] for automating posting and updating blog content from your desktop. || Seen in [http://www.wordpress.org/ WordPress], e.g. [http://www.tom-watson.co.uk/]. Similar values are probably used by other blog content management systems as well. || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WCLR ===&lt;br /&gt;
&lt;br /&gt;
The WCLR proposal is described by its author (in e-mail, 2007-09-25) as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;hellip;now effectively obsolete, since HTML5 and Microformats cover all the worthwhile relationships in that already.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are [http://www.whatwg.org/specs/web-apps/current-work/multipage/section-links.html#linkTypes covered by HTML5 already]:&lt;br /&gt;
&lt;br /&gt;
* permalink -&amp;gt; bookmark&lt;br /&gt;
* archive -&amp;gt; archives&lt;br /&gt;
* feed&lt;br /&gt;
* pingback&lt;br /&gt;
* unendorsed -&amp;gt; nofollow&lt;br /&gt;
&lt;br /&gt;
The rest now seem unnecessary.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nonetheless, there may be some mileage in using them in microformats, at least until HTML5 is widely available.&lt;br /&gt;
&lt;br /&gt;
== Dublin Core ==&lt;br /&gt;
In the past, Dublin Core values have been added to this page in the table about HTML5 features, but no examples, nor an actual specification explicitly stating how the value(s) should be used in HTML could be found. The linked specifications below have been updated so we should start considering Dublin Core values accordingly.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary !! source&lt;br /&gt;
|-&lt;br /&gt;
| schema.DC || a specification of all metadata terms maintained by the Dublin Core Metadata Initiative, with regard to the fifteen terms of the Dublin Core Metadata Element Set already published || [http://www.dublincore.org/documents/dcq-html/ Dublin Core]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| schema.DCTERMS || a specification of all metadata terms maintained by the Dublin Core Metadata Initiative, reflecting the changes described more fully in the 2012 document &amp;quot;Maintenance changes to DCMI Metadata Terms&amp;quot; [http://dublincore.org/usage/decisions/2012/dcterms-changes/] || [http://www.dublincore.org/documents/dcq-html/ Dublin Core]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Issues need updating given new information from linked resources.'''&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* Dublin Core. This search may help: [http://www.google.co.uk/search?as_q=rel%3Dschema.*&amp;amp;hl=en&amp;amp;num=10&amp;amp;btnG=Google+Search&amp;amp;as_epq=&amp;amp;as_oq=&amp;amp;as_eq=&amp;amp;lr=&amp;amp;as_ft=i&amp;amp;as_filetype=&amp;amp;as_qdr=all&amp;amp;as_occt=any&amp;amp;as_dt=i&amp;amp;as_sitesearch=http%3A%2F%2Fdublincore.org&amp;amp;as_rights=&amp;amp;safe=images]. &lt;br /&gt;
** '''examples from that search only use invisible &amp;lt;code&amp;gt;&amp;amp;lt;link href&amp;amp;gt;&amp;lt;/code&amp;gt; element'''. At first glance it appears the results from the search show only uses with the invisible &amp;lt;code&amp;gt;&amp;amp;lt;link href&amp;amp;gt;&amp;lt;/code&amp;gt; element which is not ideal for content relationships.  Content relationships should be user visible and thus uses with &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; are strongly preferred.  &lt;br /&gt;
*** [http://www.ietf.org/rfc/rfc2731.txt RFC2731] defines &amp;lt;code&amp;gt;rel=&amp;quot;schema.AC&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rel=&amp;quot;schema.RC&amp;quot;&amp;lt;/code&amp;gt; with the pattern &amp;lt;code&amp;gt;rel=&amp;quot;schema.PREFIX&amp;quot;&amp;lt;/code&amp;gt; as a syntax for defining namespaces for use in meta[@name], *[@rel], *[@rev] and (as per eRDF) *[@class] attributes. A link to a Dublin Core metadata schema is generally not suitable for end users, so &amp;lt;code&amp;gt;&amp;amp;lt;link href&amp;amp;gt;&amp;lt;/code&amp;gt; appears to be more appropriate than &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; for those that use Dublin Core metadata schemas.&lt;br /&gt;
*** The scheme proposed above provides metadata namespace declarations. As described by DCMI specifications, such indications '''cannot''' be provided w/o a suitable namespace. In order to give complete pieces of information, the correct description set must be: &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;http://purl.org/dc/terms/&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; (for the namespace declaration, followed by) &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.&amp;lt;nowiki&amp;gt;[element]&amp;lt;/nowiki&amp;gt;&amp;quot; content=&amp;quot;&amp;lt;nowiki&amp;gt;[element.value]&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; for related elements. &lt;br /&gt;
**** Note: [http://purl.org/dc/terms/ schema.DCTERMS] is conventionally related to an upgraded elements list than [http://purl.org/dc/elements/1.1/ schema.DC] and should be preferred as rel values. Both are discussed here for subject completeness) &lt;br /&gt;
** '''proposal to use in content currently only theoretical'''. Thus unfortunately the use of Dublin Core in user visible content like &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; appears to be strictly theoretical. See [http://microformats.org/discuss/mail/microformats-discuss/2008-January/011445.html microformats-discuss/2008-January/011445.html] for a proposal to use Dublin Core in user visible content.&lt;br /&gt;
*** '''recent improvements'''. DCMI solves some trouble concerning metadata through the ''description set model''. Some of these informations cannot currently be provided in any standard ways other than DC, namely dates, validity and periodicity. Following this public bug report ([https://www.w3.org/Bugs/Public/show_bug.cgi?format=multiple&amp;amp;id=22520]), the correct namespace declaration for DC and DCTERMS metadata are now considered valid HTML code. We '''must''' encourage this practice both for internal usefulness and for shared practices. &lt;br /&gt;
&lt;br /&gt;
* The Dublin Core document [http://dublincore.org/documents/dc-html/ &amp;quot;Expressing Dublin Core metadata using HTML/XHTML meta and link elements&amp;quot;] is a specification for, and gives examples of, both &amp;lt;link rel=&amp;quot;schema.DC&amp;quot; href=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot;&amp;gt; and &amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;http://purl.org/dc/terms/&amp;quot;&amp;gt;. Note that Dublin Core encourages the use of DCTERMS elements over DC. A list of projects which use Dublin Core metadata is maintained [http://dublincore.org/projects/ here].&lt;br /&gt;
* [http://dublincore.org/documents/dc-html/ &amp;quot;Expressing Dublin Core metadata using HTML/XHTML meta and link elements&amp;quot;] also includes examples of &amp;lt;link rel=&amp;quot;DCTERMS.[element]&amp;quot; href=&amp;quot;&amp;quot;&amp;gt;, where [element] = subject, isReferencedBy, creator, and publisher. The &amp;lt;link&amp;gt; tag is used instead of the &amp;lt;meta&amp;gt; tag whenever the content is a URL. (Note that this use is different from, but related to, &amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;quot;&amp;gt;.) Potentially, ''any'' of the 55 DCTERMS elements could be used in this way, and this could include use in HTML 5.&lt;br /&gt;
** As said before, HTML5 validators now allow the use of &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;http://purl.org/dc/terms/&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; for namespace declarations.&lt;br /&gt;
&lt;br /&gt;
* According to DCMI specification linked above, as well as [http://dublincore.org/documents/dc-html/ &amp;quot;Expressing Dublin Core metadata using HTML/XHTML meta and link elements&amp;quot;] documentation, HTML5 @rel attribute proposed values table has been updated. It now includes a subset of DCMI ''/terms/'' namespace properties, more specifically those whose value can (or must) be logically expressed by a resource, so that the &amp;quot;href&amp;quot; attribute value becomes a non-literal value surrogate referring to the resource itself.&lt;br /&gt;
** Elements from ''/elements/1.1/'' namespace have not been included on purpose. According to [http://wiki.dublincore.org/index.php/FAQ/DC_and_DCTERMS_Namespaces &amp;quot;FAQ/DC and DCTERMS Namespaces&amp;quot;], the old namespace is maintained for legacy purposes only and it is not as suitable for non-literal values as the ones denoted by &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;gt;&amp;lt;/code&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
== Use with HTTP Link Header ==&lt;br /&gt;
You can also use any of the rel values (that are allowed for link elements) with HTTP Link Headers, &lt;br /&gt;
&lt;br /&gt;
Example: returning a Javascript file with a license (since JS itself has no way to indicate a license)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=text&amp;gt;&lt;br /&gt;
Link: &amp;lt;http://creativecommons.org/publicdomain/zero/1.0/&amp;gt;; rel=&amp;quot;license&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For multiple licenses (e.g. CC-SA and GPL), simply use multiple &amp;lt;code&amp;gt;Link:&amp;lt;/code&amp;gt; headers.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=text&amp;gt;&lt;br /&gt;
Link: &amp;lt;http://creativecommons.org/licenses/by-sa/3.0/&amp;gt;; rel=&amp;quot;license&amp;quot;&lt;br /&gt;
Link: &amp;lt;http://www.gnu.org/licenses/gpl.html&amp;gt;; rel=&amp;quot;license&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: similarly, linking to a copyright statement for an image:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=text&amp;gt;&lt;br /&gt;
Link: &amp;lt;http://example.org/copyright.html&amp;gt;; rel=&amp;quot;copyright&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
or providing a brief inline copyright statement:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=text&amp;gt;&lt;br /&gt;
Link: &amp;lt;data:text/plain;charset=utf-8,Copyright 2013 ExampleCo, All Rights Reserved.&amp;gt;; rel=&amp;quot;copyright&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== unspecified ==&lt;br /&gt;
Some rel values have been added to this page perhaps in one of the tables above, but no examples, nor an actual specification explicitly stating that the value(s) should be used in the HTML 'rel' attribute could be found. They are listed here in the hopes someone can discover more specific/precise URLs to examples or specifications about them (preferably both).  Until such precise URLs to examples/specs are provided, the values can be treated as they are purely theoretical and thus of little interest.&lt;br /&gt;
&lt;br /&gt;
A simple list here is sufficient.&lt;br /&gt;
&lt;br /&gt;
== non HTML rel values ==&lt;br /&gt;
There are markup languages other than HTML that also have a rel attribute, often based upon the HTML rel attribute.&lt;br /&gt;
It is useful to document some of these other languages and their rel values for both reference purposes, and to provide  background research for the possible development and re-use of these values in HTML, as [[poshformats]] or [[microformats]]&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
* [[Atom]] [[RFC4287]] specification. &lt;br /&gt;
* See http://www.iana.org/assignments/link-relations.html for more.&lt;br /&gt;
* See [http://amundsen.com/media-types/maze/format/#link-relations Maze+XML]&lt;br /&gt;
* See [http://amundsen.com/media-types/collection/format/#link-relations Collection+JSON]&lt;br /&gt;
* See [http://www.opensearch.org/Specifications/OpenSearch/1.1#Url_rel_values OpenSearch]&lt;br /&gt;
* See [http://tools.ietf.org/html/rfc6861 The Create-Form and Edit-Form Link Relations (RFC6861)]&lt;br /&gt;
* See [http://rels.messages.io Workflow-Related Link Relations at Messages.io]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary&amp;lt;br /&amp;gt;(from the relevant specification where possible)) !! defining specification&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| self&lt;br /&gt;
| From http://www.ietf.org/rfc/rfc4287.txt : &amp;lt;blockquote&amp;gt;The value &amp;quot;self&amp;quot; signifies that the IRI in the value of the href attribute identifies a resource equivalent to the containing element.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
| [[Atom]] http://www.ietf.org/rfc/rfc4287.txt&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| http://gdata.youtube.com/schemas/2007#in-reply-to || See http://code.google.com/apis/youtube/2.0/developers_guide_protocol_comments.html || YouTube extension to Atom&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| collection || Refers to a resource which represents a collection of which the current resource is a member.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI returns the available collection of mazes.&lt;br /&gt;
  || Maze+XML, Collection+JSON, OpenSearch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| compensatingtx || Link to a resource representing information about a compensating transaction for each member transaction of a [http://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf Long-Lived Compensating Transaction] || See [http://rels.messages.io/#compensatingtx Compensating Transaction Link Relation]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| east || Refers to a resource to the &amp;quot;east&amp;quot; of the current resource.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI points to a neighboring cell resource to the east in the active maze.&lt;br /&gt;
&lt;br /&gt;
 || Maze+XML&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| events || Link to a collection resource representing a list of subscribe-able events. || See [http://rels.messages.io/#events Events Link Relation]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| exit || Refers to a resource that represents the exit or end of the current client actvity or process.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI points to the final exit resource of the active maze.&lt;br /&gt;
&lt;br /&gt;
 || Maze+XML&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| north || Refers to a resource that is &amp;quot;north&amp;quot; of the current resource.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI points to a neighboring cell resource to the north in the active maze.&lt;br /&gt;
&lt;br /&gt;
 || Maze+XML&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| south || Refers to a resource that is &amp;quot;south&amp;quot; of the current resource.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI points to a neighboring cell resource to the south in the active maze.&lt;br /&gt;
&lt;br /&gt;
 || Maze+XML&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-via|via]] || Identifies a resource that is the source of the information in the context. ||  Atom 1.0 Syndication format (RFC 4287)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| west || Refers to a resource that is &amp;quot;west&amp;quot; of the current resource.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI points to a neighboring cell resource to the west in the active maze.&lt;br /&gt;
&lt;br /&gt;
 || Maze+XML&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| item || The target IRI points to a resource that is a member of a collection represented by the context IRI. || Collection+JSON&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| create-form || When included in a resource, the &amp;quot;create-form&amp;quot; link relation MAY identify a target resource that represents the form to append a new member to the link context. || See [http://tools.ietf.org/html/rfc6861 The Create-Form and Edit-Form Link Relations (RFC6861)]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| edit-form || When included in a resource, the &amp;quot;edit-form&amp;quot; link relation identifies a target resource that represents the form for editing associated resource. || See [http://tools.ietf.org/html/rfc6861 The Create-Form and Edit-Form Link Relations (RFC6861)]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| lightframe || Opens the target in a lightbox. On inclusion it provides a simple target the lightframe and loads the content in a lightbox effect || Lightbox&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| superbox[image] || jQuery Superbox! is a script which allows you display windows with the lightbox effect. || superbox&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| wp-video-lightbox || wp-video-lightbox! is a rel to anchor tag script display videos with the lightbox effect. || wp-video-lightbox&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| youtube || Opens the target youtube video in using the Swipebox Plugin || Swipebox&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| shadowbox || shadowbox is a jQuery script for images displaying with the &amp;quot;lightbox&amp;quot; effects. || shadowbox&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| permission || When included in a resource, the &amp;quot;permission&amp;quot; link relation MAY identify a target resource that represents the list of entities that can access or modify the resource in the link context. || See [http://cdoc.io/spec.html#permission-link-relation Collection Document Media Type Specification]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| sub || When included in a resource representation of an event, the &amp;quot;sub&amp;quot; (subscription) link relation MAY identify a target resource that represents the ability to subscribe to the pub/sub  event-type resource in the link context. || See [http://rels.messages.io/#sub Subscription Link Relation]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| unsub || When included in a resource representation of an event, the &amp;quot;unsub&amp;quot; (subscription cancellation) link relation MAY identify a target resource that represents the ability to un-subscribe from the pub/sub  event-type resource in the link context. || See [http://rels.messages.io/#unsub Subscription Cancellation Link Relation]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| version-history&lt;br /&gt;
| When included on a versioned resource, this link points to a resource containing the version history for this resource.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| latest-version&lt;br /&gt;
| When included on a versioned resource, this link points to a resource containing the latest (e.g., current) version.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| working-copy&lt;br /&gt;
| When included on a versioned resource, this link points to a working copy for this resource.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| working-copy-of&lt;br /&gt;
| When included on a working copy, this link points to the versioned resource from which this working copy was obtained.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| predecessor-version&lt;br /&gt;
| When included on a versioned resource, this link points to a resource containing the predecessor version in the version history.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| successor-version&lt;br /&gt;
| When included on a versioned resource, this link points to a resource containing the successor version in the version history.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ... || ... || ...&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== dropped ==&lt;br /&gt;
The following rel values were in earlier version(s) of specification(s) and it is presumed by their absence from the most recent version of the respective specification(s) that they have been deprecated or obsoleted. &lt;br /&gt;
&lt;br /&gt;
In general, you {{should not}} use any dropped values.&lt;br /&gt;
&lt;br /&gt;
If any such values have been superceded by standard values (see the first table on this page), then you {{must not}} use the dropped versions.&lt;br /&gt;
&lt;br /&gt;
In particular:&lt;br /&gt;
* if a rel value was in a draft and is missing (without explanation) from the final spec, or&lt;br /&gt;
* if a rel value was in a previous version of and is missing (without explanation) from an update to the specification (even a draft update)&lt;br /&gt;
&lt;br /&gt;
Then absent any other information or explanation, it is presumed that the group/editors working on that specification decided to explicitly drop it (either in development, or in the updated version) and thus it should be obsoleted (not re-registered). &lt;br /&gt;
&lt;br /&gt;
If you wish to add them, please research &amp;lt;em&amp;gt;why&amp;lt;/em&amp;gt; such values were omitted from latter specifications before doing so. If you do discover the reasoning, please add a short statement or link to thereof into the appropriate place in the following table.&lt;br /&gt;
&lt;br /&gt;
If there is more data, e.g. a link to an email of discussion of the spec development that explains ''why'' the rel value was dropped, and it explicitly states, e.g. it was without prejudice, or merely post-poned, or perhaps expected to be spun-out into its spec (or some other explicit positive reason), then it makes to link/cite that explicit text as part of a proposal.&lt;br /&gt;
&lt;br /&gt;
Sources: &lt;br /&gt;
* [http://www.w3.org/MarkUp/html3/ HTML3] (HTML3) / has been superceded by [http://www.w3.org/MarkUp/Wilbur/ HTML 3.2] - which itself has been superceded by [http://www.w3.org/TR/REC-html40 HTML 4.0] - which itself has been updated by [http://w3.org/TR/html401 HTML 4.01], commonly referred to as &amp;quot;HTML 4&amp;quot; in this wiki and other places.)&lt;br /&gt;
* [http://www.w3.org/TR/relations.html Proposed HTML 4.0 link types] (HTML4dropped) - obsoleted/superceded by the HTML 4.0 Recommendation.  Any values that were in the &amp;quot;Proposed HTML 4.0 link types&amp;quot; document but didn't make it into the HTML 4.0 Recommendation were thus explicitly dropped and should be avoided.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary !! defining specification !! why dropped &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[rel-banner|banner]]||Was used to reference another document to be used as banner for this document (i.e. a form of &amp;quot;include&amp;quot; statement).|| HTML3 ||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-begin|begin]] || identifies the author-defined start of a sequence of documents of which the current document is a node.&lt;br /&gt;
 || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-biblioentry|biblioentry]] || identifies a bibliographic entry || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-bibliography|bibliography]] || identifies a bibliography || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-child|child]] (obsolete/superceded) || the target document is a hierarchical child, or subdocument, of the current document|| HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-citation|citation]] || the target is a bibliographic citation || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-collection|collection]] || the target document is an collection that contains the current document || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-definition|definition]] || identifies a definition of a term || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-disclaimer|disclaimer]] || identifies a hypertext link to a legal disclaimer || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-editor|editor]] || identifies a hypertext link to an editor || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-end|end]] || identifies the author-defined end of a sequence of documents of which the current document is a node. || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-footnote|footnote]] || the anchor is a footnote marker and the target is a footnote || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-navigate|navigate]] || the target document contains information such as a image map that will help users to gain a sense of how and where to found information || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-origin|origin]] || synonym for &amp;lt;code&amp;gt;top&amp;lt;/code&amp;gt; || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-parent|parent]] (obsolete/superceded) || the target document is the hierarchical parent, or container, of the current document|| HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pointer|pointer]] || the target is a pointer to the real target. This value can be used by a user agent to perform a pre-fetch of the specified target for evaluation until the real target is reached || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-publisher|publisher]] || identifies a hypertext link to a publisher || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sibling|sibling]] (obsolete/superceded) || the target document is a child of a common parent, or a hierarchical peer of the current document|| HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-top|top]] || the target document is the logical top node of the tree (see also &amp;lt;code&amp;gt;begin&amp;lt;/code&amp;gt;) || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-trademark|trademark]] || identifies a hypertext link to a trademark notice || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-translation|translation]] || the target is a translation to another language || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-urc|urc]] || identifies a Universal Resource Citation || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== dropped without prejudice ==&lt;br /&gt;
In one known instance (from HTML4 to HTML5), some rel values were in an earlier version of a specification (or a proposal) and were dropped from a latter (draft) version, and it was noted that these values were dropped with the intent that they could still be proposed in a registry and thus they explicitly were not deprecated or obsoleted. This section documents such values as separate from the [[#dropped|dropped]] section.&lt;br /&gt;
&lt;br /&gt;
In general, you {{should not}} use any dropped values.&lt;br /&gt;
&lt;br /&gt;
If any such values have been superceded by standard values (see the first table on this page), then you {{must not}} use the dropped versions.&lt;br /&gt;
&lt;br /&gt;
Rel values that were dropped without prejudice from a specification will be considered similar to new values that have never been specified.&lt;br /&gt;
&lt;br /&gt;
If you know of additional rel values that were dropped without prejudice from an update to a specification, please cite a URL and quote from the group developing the specification that officially states from that group that the dropping of the values was done without prejudice, or equivalent statement (such as explicit allowance of external registration, proposal, and/or development).&lt;br /&gt;
&lt;br /&gt;
This table serves a historical purpose. If you wish to propose a value from this table, please copy it and leave it in place.&lt;br /&gt;
&lt;br /&gt;
Sources: &lt;br /&gt;
* Several rel values were [http://www.w3.org/Bugs/Public/show_bug.cgi?id=7475#c15 explicitly dropped from HTML5]. Per: [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Issue 118 Decision] ('''emphasis''' added): &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;The final proposal argues for the removal of some relation values, to wit, it suggests removal of '''index, up, first and last'''. It was pointed out in survey comments that these relations are already registered in the IANA link relation registry. Presumably, '''these relations could also be entered in whatever other registry or registries HTML5 adopts for this purpose'''.&amp;lt;/p&amp;gt;...&amp;lt;p&amp;gt;&amp;quot;Next Steps&amp;lt;/p&amp;gt;...&amp;lt;p&amp;gt;&amp;quot;Since the relations to be removed are already registered at the IANA link relation registry, no further action is needed to include them there. WG members are '''free to register or record these relations elsehwere''' [sic], as well.&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value&lt;br /&gt;
! summary&lt;br /&gt;
! defining specification&lt;br /&gt;
! why dropped &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-first|first]]&lt;br /&gt;
| Synonym for &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt;&lt;br /&gt;
| HTML4dropped - never in an official spec&lt;br /&gt;
| [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Explicitly dropped from HTML5 interim draft yet permitted for external registry]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-index|index]]&lt;br /&gt;
| Refers to a document providing an index for the current document.&lt;br /&gt;
| was in [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4];  the token has been re-registered within the [[#HTML5_link_type_extensions|HTML5 link type extensions]] and is now valid.&lt;br /&gt;
| [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Explicitly dropped from HTML5 interim draft yet permitted for external registry]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-last|last]]&lt;br /&gt;
| Refers to the last document in a collection of documents.&lt;br /&gt;
| HTML4dropped - never in an official spec&lt;br /&gt;
| [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Explicitly dropped from HTML5 interim draft yet permitted for external registry]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-up|up]]&lt;br /&gt;
| When the document forms part of a hierarchy, this link references the immediate parent of the current document. Synonym for &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;.&lt;br /&gt;
| was in [http://www.w3.org/MarkUp/html3/dochead.html HTML3] - but [http://www.w3.org/TR/html401/types.html#type-links dropped in HTML4]&lt;br /&gt;
| [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Explicitly dropped from HTML5 interim draft yet permitted for external registry]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See related [http://dev.w3.org/html5/spec/links.html#linkTypes HTML5: Link types] for existing HTML5 specified rel values.&lt;br /&gt;
&lt;br /&gt;
== rejected ==&lt;br /&gt;
Some rel values have been proposed and rejected.  They are listed here to make that explicit.  Authors {{must not}} use rejected rel values.&lt;br /&gt;
&lt;br /&gt;
Source: [[rejected-formats]].&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! origin / proposal !! why rejected &lt;br /&gt;
|-&lt;br /&gt;
| [[rel-logo|logo]]&lt;br /&gt;
| [http://relogo.org Relogo.org]&lt;br /&gt;
| [[rejected-formats#Logo]]&lt;br /&gt;
|-&lt;br /&gt;
|[[rel-pavatar|pavatar]] || [http://pavatar.com/ pavatar] || [[rejected-formats#Pavatar]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== tools ==&lt;br /&gt;
See [[implementations]].&lt;br /&gt;
&lt;br /&gt;
== addtional external research ==&lt;br /&gt;
Here are some additional historical references to the development or rel-values which may be useful when researching values, especially why specific values may have been proposed but abandoned.&lt;br /&gt;
* 1996-06-07 [http://www.w3.org/MarkUp/draft-ietf-html-relrev-00.txt Hypertext links in HTML] (copies: [http://ftp.ics.uci.edu/pub/ietf/html/draft-ietf-html-relrev-00.txt ftp.ics.uci.edu])&lt;br /&gt;
* 1996-11-13 [http://www.w3.org/Architecture/NOTE-link Describing and Linking Web Resources] &lt;br /&gt;
* 1997-01-23 [http://lists.gnu.org/archive/html/lynx-dev/1997-01/msg00537.html LYNX-DEV Lynx and the LINK tag] &lt;br /&gt;
* 1997-01-24 [http://lists.w3.org/Archives/Public/w3c-sgml-wg/1997Jan/0357.html Taxonomy list] &lt;br /&gt;
* 1997-03-28 [http://www.w3.org/TR/WD-htmllink-970328 W3C Working Draft: Hypertext Links and Meta Information in HTML]&lt;br /&gt;
 &lt;br /&gt;
=== previous attempts at documenting ===&lt;br /&gt;
There have been previous attempts at documenting known rel values, most of which fell out of date due to being dependent on a single author maintaining them. They're listed here purely for historical reasons, and are not sufficient to be references of their own (since they're just individual curations of other references)&lt;br /&gt;
* [http://fantasai.tripod.com/qref/Appendix/LinkTypes/ltdef.html Link Type Definitions Glossary] by fantasai&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
{{rel-related-pages}}&lt;br /&gt;
* [[elemental-microformats]]&lt;br /&gt;
* [[existing-rev-values]]&lt;br /&gt;
* [[existing-class-names]]&lt;br /&gt;
&lt;br /&gt;
== copyright ==&lt;br /&gt;
&lt;br /&gt;
{{cc-pd-license}}&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-recipe&amp;diff=70594</id>
		<title>h-recipe</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-recipe&amp;diff=70594"/>
		<updated>2022-11-30T23:52:01Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Fix: corrects syntaxhightlight lang attributes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:h-recipe}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-recipe&amp;lt;/dfn&amp;gt; is a simple, open format for publishing recipes on the web. h-recipe is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-recipe is the [[microformats2]] update to [[hRecipe]].&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here is a simple minimal recipe example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-recipe&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;Bagels&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;p-ingredient&amp;quot;&amp;gt;Flour&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;p-ingredient&amp;quot;&amp;gt;Sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;p-ingredient&amp;quot;&amp;gt;Yeast&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;p&amp;gt;Takes &amp;lt;time class=&amp;quot;dt-duration&amp;quot; datetime=&amp;quot;1H&amp;quot;&amp;gt;1 hour&amp;lt;/time&amp;gt;,&lt;br /&gt;
     serves &amp;lt;data class=&amp;quot;p-yield&amp;quot; value=&amp;quot;4&amp;quot;&amp;gt;four people&amp;lt;/data&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-instructions&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Start by mixing all the ingredients together.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=json&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&lt;br /&gt;
        &amp;quot;h-recipe&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&lt;br /&gt;
          &amp;quot;Bagels&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;ingredient&amp;quot;: [&lt;br /&gt;
          &amp;quot;Flour&amp;quot;,&lt;br /&gt;
          &amp;quot;Sugar&amp;quot;,&lt;br /&gt;
          &amp;quot;Yeast&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;yield&amp;quot;: [&lt;br /&gt;
          &amp;quot;4&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;instructions&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Start by mixing all the ingredients together.&amp;quot;,&lt;br /&gt;
            &amp;quot;html&amp;quot;: &amp;quot;&amp;lt;ol&amp;gt;       &amp;lt;li&amp;gt;Start by mixing all the ingredients together.&amp;lt;/li&amp;gt;     &amp;lt;/ol&amp;gt;&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-recipe.&lt;br /&gt;
&lt;br /&gt;
'''p-name''', '''e-instructions''', '''p-ingredient''' and the other property classnames listed below define elements as ''properties'' of the h-recipe.&lt;br /&gt;
&lt;br /&gt;
See [[microformats-2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Core Properties === &lt;br /&gt;
&lt;br /&gt;
The following core h-entry properties have broad consensus and are broadly interoperably published and consumed: &lt;br /&gt;
&lt;br /&gt;
h-recipe properties, inside an element with class '''h-recipe''':&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - the name of the recipe&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-ingredient&amp;lt;/code&amp;gt;''' - describes one or more ingredients used in the recipe.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-yield&amp;lt;/code&amp;gt;''' - Specifies the quantity produced by the recipe, like how many persons it satisfies &lt;br /&gt;
* '''&amp;lt;code&amp;gt;e-instructions&amp;lt;/code&amp;gt;''' - the method of the recipe.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-duration&amp;lt;/code&amp;gt;''' - the time it takes to prepare the meal described by the recipe.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;''' - an accompanying image&lt;br /&gt;
&lt;br /&gt;
=== Experimental properties with wide adoption ===&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-summary&amp;lt;/code&amp;gt;'''  - provides a short summary or introduction &lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''' - person who wrote the recipe, optionally embedded with &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; {{main|h-card}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;''' - the date the recipe was published&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-nutrition&amp;lt;/code&amp;gt;''' - nutritional information like calories, fat, dietary fiber etc.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - recipe categories/tags&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Proposed properties ===&lt;br /&gt;
&lt;br /&gt;
The following properties are proposed additions based on various use-cases but are awaiting citations of use across multiple sites in the wild, and at least one reader / real world consuming code example:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code id=&amp;quot;u-remix-of&amp;quot;&amp;gt;u-remix-of&amp;lt;/code&amp;gt;''' - the URL which the h-entry is considered a “remix” of. Optionally an embedded [[h-cite]]. The purpose of this in an h-recipe is to identify that this recipe is a remix, or based on another recipe, and giving appropriate citation to that individual. In theory, if this was an exact copy, the u-repost-of used in h-entry would apply.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
'''h-recipe''' is a microformats.org draft specification. Public discussion on h-recipe takes place on [[h-recipe-feedback]] and the #microformats [[irc]] channel on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
h-recipe is ready to use and implemented in the wild, but for backwards compatibility you should also mark h-recipes up with classic [[hRecipe]] classnames.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
&lt;br /&gt;
(stub, add any property explanations here)&lt;br /&gt;
&lt;br /&gt;
'''dt-duration''' should be marked up using the [http://developers.whatwg.org/common-microsyntaxes.html#durations duration] microsyntax defined in HTML5. TODO: add more examples&lt;br /&gt;
&lt;br /&gt;
[[hRecipe]] has a number of experimental properties which have real world adoption due to [[Google]] recipe search support of hRecipe. These are: summary, author, published and nutrition.&lt;br /&gt;
&lt;br /&gt;
== Examples in the Wild ==&lt;br /&gt;
* [http://www.eliduke.com Eli Duke] has posted some h-[http://www.eliduke.com/recipes recipes] on his site:&lt;br /&gt;
** http://www.eliduke.com/recipes/kale-salad&lt;br /&gt;
** http://www.eliduke.com/recipes/hummus&lt;br /&gt;
** http://www.eliduke.com/recipes/wacky-cake&lt;br /&gt;
** http://www.eliduke.com/recipes/vegan-mac-and-cheese&lt;br /&gt;
&lt;br /&gt;
* [https://cleverdevil.io Jonathan LaCour] has created several h-[http://cleverdevil.io/content/recipes recipes] using his Known plugin on his site:&lt;br /&gt;
** https://cleverdevil.io/2015/kentucky-maid-cocktail&lt;br /&gt;
&lt;br /&gt;
* [https://makeitperfectly.com Perfect Company] marks up their recipes with h-recipe:&lt;br /&gt;
** https://makeitperfectly.com/drink/recipes/1a1913f6-6ba2-11e5-a3ed-f372faffcfa4&lt;br /&gt;
** https://makeitperfectly.com/bake/recipes/194a6cea-6ba2-11e5-a3ed-8367b69ac326&lt;br /&gt;
&lt;br /&gt;
* [https://aaronparecki.com/recipes Aaron Parecki] has several recipes on his website&lt;br /&gt;
** https://aaronparecki.com/2020/06/01/19/banana-bread&lt;br /&gt;
** https://aaronparecki.com/2018/12/25/8/habanero-sauce&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
This section is '''informative'''. &lt;br /&gt;
&lt;br /&gt;
Tools for generating and consuming h-recipe. When it gets too big we can move it to a separate page like [[h-recipe-implementations]].&lt;br /&gt;
&lt;br /&gt;
Consuming h-recipe (sites and tools that consume and do something with h-recipe)&lt;br /&gt;
* [https://developers.pinterest.com/docs/rich-pins/recipes/ Pinterest] supports h-recipe to create &amp;quot;rich pins&amp;quot;&lt;br /&gt;
* ... (stub)&lt;br /&gt;
&lt;br /&gt;
Generating h-recipe (sites and tools that help produce and publish h-recipe)&lt;br /&gt;
* [https://github.com/cleverdevil/Known-Recipes Recipe post generator for Known CMS] by [https://cleverdevil.io Jonathan LaCour].&lt;br /&gt;
&lt;br /&gt;
Advocacy - open source and other implementations which would benefit from h-recipe support or some degree of support has been requested - feel free to help implement these.&lt;br /&gt;
* OpenRecipes [https://github.com/fictivekin/openrecipes/issues/198 issue 198] feature request: update spider to parse for the original hRecipe microformat, and the new h-recipe microformats2 update&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
(stub)&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers {{should}} detect classic properties only if a classic root class name is found and parse them as microformats2 properties. &lt;br /&gt;
&lt;br /&gt;
If an &amp;quot;h-recipe&amp;quot; is found, don't look for an &amp;quot;hrecipe&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
compat root class name: &amp;lt;code id=&amp;quot;hrecipe&amp;quot;&amp;gt;hrecipe&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
properties: (parsed as '''p-''' plain text unless otherwise specified)&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;ingredient&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;instructions&amp;lt;/code&amp;gt; - parse as '''e-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;duration&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt;  - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;summary&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; - including compat root &amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt; in the absence of &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nutrition&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rel=tag&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;'''. While not a class name nor typical microformats property, rel=tag was the typical way to tag an hrecipe. Thus parsers should look for rel=tag hyperlinks inside an hrecipe, and take the last path segment of their &amp;quot;href&amp;quot; value as a value for a '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' property.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
h-recipe is based on the existing [[hRecipe]] specification.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[h-recipe-feedback]]&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[h-card]] can be embedded in h-recipe&lt;br /&gt;
* [[hRecipe]] is the classic microformat replaced by h-recipe&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-recipe&amp;diff=70593</id>
		<title>h-recipe</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-recipe&amp;diff=70593"/>
		<updated>2022-11-30T23:51:22Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Fix: replaces deprecated &amp;lt;source&amp;gt; tag with &amp;lt;syntaxhighlight&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:h-recipe}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-recipe&amp;lt;/dfn&amp;gt; is a simple, open format for publishing recipes on the web. h-recipe is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-recipe is the [[microformats2]] update to [[hRecipe]].&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here is a simple minimal recipe example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-recipe&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;Bagels&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;p-ingredient&amp;quot;&amp;gt;Flour&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;p-ingredient&amp;quot;&amp;gt;Sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;p-ingredient&amp;quot;&amp;gt;Yeast&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;p&amp;gt;Takes &amp;lt;time class=&amp;quot;dt-duration&amp;quot; datetime=&amp;quot;1H&amp;quot;&amp;gt;1 hour&amp;lt;/time&amp;gt;,&lt;br /&gt;
     serves &amp;lt;data class=&amp;quot;p-yield&amp;quot; value=&amp;quot;4&amp;quot;&amp;gt;four people&amp;lt;/data&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-instructions&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Start by mixing all the ingredients together.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&lt;br /&gt;
        &amp;quot;h-recipe&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&lt;br /&gt;
          &amp;quot;Bagels&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;ingredient&amp;quot;: [&lt;br /&gt;
          &amp;quot;Flour&amp;quot;,&lt;br /&gt;
          &amp;quot;Sugar&amp;quot;,&lt;br /&gt;
          &amp;quot;Yeast&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;yield&amp;quot;: [&lt;br /&gt;
          &amp;quot;4&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;instructions&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Start by mixing all the ingredients together.&amp;quot;,&lt;br /&gt;
            &amp;quot;html&amp;quot;: &amp;quot;&amp;lt;ol&amp;gt;       &amp;lt;li&amp;gt;Start by mixing all the ingredients together.&amp;lt;/li&amp;gt;     &amp;lt;/ol&amp;gt;&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-recipe.&lt;br /&gt;
&lt;br /&gt;
'''p-name''', '''e-instructions''', '''p-ingredient''' and the other property classnames listed below define elements as ''properties'' of the h-recipe.&lt;br /&gt;
&lt;br /&gt;
See [[microformats-2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Core Properties === &lt;br /&gt;
&lt;br /&gt;
The following core h-entry properties have broad consensus and are broadly interoperably published and consumed: &lt;br /&gt;
&lt;br /&gt;
h-recipe properties, inside an element with class '''h-recipe''':&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - the name of the recipe&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-ingredient&amp;lt;/code&amp;gt;''' - describes one or more ingredients used in the recipe.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-yield&amp;lt;/code&amp;gt;''' - Specifies the quantity produced by the recipe, like how many persons it satisfies &lt;br /&gt;
* '''&amp;lt;code&amp;gt;e-instructions&amp;lt;/code&amp;gt;''' - the method of the recipe.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-duration&amp;lt;/code&amp;gt;''' - the time it takes to prepare the meal described by the recipe.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;''' - an accompanying image&lt;br /&gt;
&lt;br /&gt;
=== Experimental properties with wide adoption ===&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-summary&amp;lt;/code&amp;gt;'''  - provides a short summary or introduction &lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''' - person who wrote the recipe, optionally embedded with &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; {{main|h-card}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;''' - the date the recipe was published&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-nutrition&amp;lt;/code&amp;gt;''' - nutritional information like calories, fat, dietary fiber etc.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - recipe categories/tags&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Proposed properties ===&lt;br /&gt;
&lt;br /&gt;
The following properties are proposed additions based on various use-cases but are awaiting citations of use across multiple sites in the wild, and at least one reader / real world consuming code example:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code id=&amp;quot;u-remix-of&amp;quot;&amp;gt;u-remix-of&amp;lt;/code&amp;gt;''' - the URL which the h-entry is considered a “remix” of. Optionally an embedded [[h-cite]]. The purpose of this in an h-recipe is to identify that this recipe is a remix, or based on another recipe, and giving appropriate citation to that individual. In theory, if this was an exact copy, the u-repost-of used in h-entry would apply.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
'''h-recipe''' is a microformats.org draft specification. Public discussion on h-recipe takes place on [[h-recipe-feedback]] and the #microformats [[irc]] channel on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
h-recipe is ready to use and implemented in the wild, but for backwards compatibility you should also mark h-recipes up with classic [[hRecipe]] classnames.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
&lt;br /&gt;
(stub, add any property explanations here)&lt;br /&gt;
&lt;br /&gt;
'''dt-duration''' should be marked up using the [http://developers.whatwg.org/common-microsyntaxes.html#durations duration] microsyntax defined in HTML5. TODO: add more examples&lt;br /&gt;
&lt;br /&gt;
[[hRecipe]] has a number of experimental properties which have real world adoption due to [[Google]] recipe search support of hRecipe. These are: summary, author, published and nutrition.&lt;br /&gt;
&lt;br /&gt;
== Examples in the Wild ==&lt;br /&gt;
* [http://www.eliduke.com Eli Duke] has posted some h-[http://www.eliduke.com/recipes recipes] on his site:&lt;br /&gt;
** http://www.eliduke.com/recipes/kale-salad&lt;br /&gt;
** http://www.eliduke.com/recipes/hummus&lt;br /&gt;
** http://www.eliduke.com/recipes/wacky-cake&lt;br /&gt;
** http://www.eliduke.com/recipes/vegan-mac-and-cheese&lt;br /&gt;
&lt;br /&gt;
* [https://cleverdevil.io Jonathan LaCour] has created several h-[http://cleverdevil.io/content/recipes recipes] using his Known plugin on his site:&lt;br /&gt;
** https://cleverdevil.io/2015/kentucky-maid-cocktail&lt;br /&gt;
&lt;br /&gt;
* [https://makeitperfectly.com Perfect Company] marks up their recipes with h-recipe:&lt;br /&gt;
** https://makeitperfectly.com/drink/recipes/1a1913f6-6ba2-11e5-a3ed-f372faffcfa4&lt;br /&gt;
** https://makeitperfectly.com/bake/recipes/194a6cea-6ba2-11e5-a3ed-8367b69ac326&lt;br /&gt;
&lt;br /&gt;
* [https://aaronparecki.com/recipes Aaron Parecki] has several recipes on his website&lt;br /&gt;
** https://aaronparecki.com/2020/06/01/19/banana-bread&lt;br /&gt;
** https://aaronparecki.com/2018/12/25/8/habanero-sauce&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
This section is '''informative'''. &lt;br /&gt;
&lt;br /&gt;
Tools for generating and consuming h-recipe. When it gets too big we can move it to a separate page like [[h-recipe-implementations]].&lt;br /&gt;
&lt;br /&gt;
Consuming h-recipe (sites and tools that consume and do something with h-recipe)&lt;br /&gt;
* [https://developers.pinterest.com/docs/rich-pins/recipes/ Pinterest] supports h-recipe to create &amp;quot;rich pins&amp;quot;&lt;br /&gt;
* ... (stub)&lt;br /&gt;
&lt;br /&gt;
Generating h-recipe (sites and tools that help produce and publish h-recipe)&lt;br /&gt;
* [https://github.com/cleverdevil/Known-Recipes Recipe post generator for Known CMS] by [https://cleverdevil.io Jonathan LaCour].&lt;br /&gt;
&lt;br /&gt;
Advocacy - open source and other implementations which would benefit from h-recipe support or some degree of support has been requested - feel free to help implement these.&lt;br /&gt;
* OpenRecipes [https://github.com/fictivekin/openrecipes/issues/198 issue 198] feature request: update spider to parse for the original hRecipe microformat, and the new h-recipe microformats2 update&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
(stub)&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers {{should}} detect classic properties only if a classic root class name is found and parse them as microformats2 properties. &lt;br /&gt;
&lt;br /&gt;
If an &amp;quot;h-recipe&amp;quot; is found, don't look for an &amp;quot;hrecipe&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
compat root class name: &amp;lt;code id=&amp;quot;hrecipe&amp;quot;&amp;gt;hrecipe&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
properties: (parsed as '''p-''' plain text unless otherwise specified)&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;ingredient&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;instructions&amp;lt;/code&amp;gt; - parse as '''e-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;duration&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt;  - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;summary&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; - including compat root &amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt; in the absence of &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nutrition&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rel=tag&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;'''. While not a class name nor typical microformats property, rel=tag was the typical way to tag an hrecipe. Thus parsers should look for rel=tag hyperlinks inside an hrecipe, and take the last path segment of their &amp;quot;href&amp;quot; value as a value for a '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' property.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
h-recipe is based on the existing [[hRecipe]] specification.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[h-recipe-feedback]]&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[h-card]] can be embedded in h-recipe&lt;br /&gt;
* [[hRecipe]] is the classic microformat replaced by h-recipe&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing&amp;diff=70592</id>
		<title>microformats2-parsing</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing&amp;diff=70592"/>
		<updated>2022-11-30T23:49:31Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Fix: corrects syntaxhightlight lang attributes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:microformats2 parsing specification}}&lt;br /&gt;
&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;[[microformats2]]&amp;lt;/dfn&amp;gt; is a simple, open format for marking up data in HTML. The microformats2 parsing specification describes how to [[#implementations|implement]] a microformats2 parser, independent of any specific vocabularies.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span id=&amp;quot;status&amp;quot;&amp;gt;Status&amp;lt;/span&amp;gt;&lt;br /&gt;
:This is a '''Living Specification''' with several interoperable [[#implementations|implementations]]. This specification is stable, subject to editorial changes only for improving clarity of existing meaning. While substantive changes are unexpected, it is a living specification subject to substantive change by issues and errata filed in response to implementation experience, requiring consensus among participating implementers (since 2015-01-21) as part of an explicit [[#change_control|change control]] process. There are currently no draft or proposed new features in this specification, and if any were to be added, they would be explicitly labeled as such.&amp;lt;br/&amp;gt;Note: This specification is only marked as a &amp;quot;Draft Specification&amp;quot; because of pending edits from [[microformats2-parsing-issues|resolved issues before 2016-06-20]]. Once those edits have been completed, the link to &amp;lt;nowiki&amp;gt;[[Category:Draft Specifications]]&amp;lt;/nowiki&amp;gt; at the bottom of this document should be changed to &amp;lt;nowiki&amp;gt;[[Category:Specifications]]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
;Participate&lt;br /&gt;
:&amp;lt;span id=&amp;quot;issues&amp;quot;&amp;gt;[https://github.com/microformats/microformats2-parsing/issues Open Issues]&amp;lt;/span&amp;gt;&lt;br /&gt;
:[[microformats2-parsing-issues|Resolved issues before 2016-06-20]]&lt;br /&gt;
:[[IRC]]: [irc://irc.libera.chat/microformats #microformats on Libera]&lt;br /&gt;
&amp;lt;div class=&amp;quot;p-author h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
;&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;&lt;br /&gt;
:&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;License&lt;br /&gt;
: {{cc0-owfa-license}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== algorithm ==&lt;br /&gt;
=== parse a document for microformats ===&lt;br /&gt;
To parse a document for microformats, follow the HTML parsing rules and do the following:&lt;br /&gt;
* start with an empty JSON &amp;quot;items&amp;quot; array and &amp;quot;rels&amp;quot; &amp;amp; &amp;quot;rel-urls&amp;quot; hashes: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=json&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;rel-urls&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* parse the root element for class microformats, adding to the JSON items array accordingly&lt;br /&gt;
* parse all hyperlink (&amp;lt;code&amp;gt;&amp;amp;lt;a&amp;gt; &amp;amp;lt;area&amp;gt; &amp;amp;lt;link&amp;gt;&amp;lt;/code&amp;gt;) elements for rel microformats, adding to the JSON rels &amp;amp; rel-urls hashes accordingly&lt;br /&gt;
* return the resulting JSON&lt;br /&gt;
Parsers may simultaneously parse the document for both class and rel microformats (e.g. in a single tree traversal).&lt;br /&gt;
&lt;br /&gt;
=== parse an element for class microformats ===&lt;br /&gt;
To parse an element for class microformats:&lt;br /&gt;
* parse element class for root class name(s) &amp;quot;h-*&amp;quot; and if none, backcompat root classes&lt;br /&gt;
** if none found, parse child elements for microformats (depth first, doc order)&lt;br /&gt;
** else if found, start parsing a new microformat&lt;br /&gt;
*** keep track of whether the root class name(s) was from backcompat&lt;br /&gt;
*** create a new { } structure with:&lt;br /&gt;
**** &amp;lt;code&amp;gt;type: &amp;lt;nowiki&amp;gt;[array of unique microformat &amp;quot;h-*&amp;quot; type(s) on the element sorted alphabetically]&amp;lt;/nowiki&amp;gt;,&amp;lt;/code&amp;gt;&lt;br /&gt;
**** &amp;lt;code&amp;gt;properties: { } &amp;lt;/code&amp;gt; - to be filled in when that element itself is parsed for microformats properties&lt;br /&gt;
**** if the element has a non-empty &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attribute:&lt;br /&gt;
***** &amp;lt;code&amp;gt;id:&amp;lt;/code&amp;gt; string value of element's id attribute&lt;br /&gt;
*** parse child elements (document order) by:&lt;br /&gt;
**** if parsing a backcompat root, parse child element class name(s) for backcompat properties&lt;br /&gt;
**** else parse a child element class for property class name(s) &amp;quot;p-*,u-*,dt-*,e-*&amp;quot;&lt;br /&gt;
**** if such class(es) are found, it is a property element&lt;br /&gt;
***** add properties found to current microformat's &amp;lt;code&amp;gt;properties: { } &amp;lt;/code&amp;gt; structure&lt;br /&gt;
**** parse a child element for microformats (recurse)&lt;br /&gt;
***** if that child element itself has a microformat (&amp;quot;h-*&amp;quot; or backcompat roots) and is a property element, add it into the array of values for that property as a { } structure, add to that { } structure:&lt;br /&gt;
****** &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;: &lt;br /&gt;
******* if it's a &amp;lt;code&amp;gt;p-*&amp;lt;/code&amp;gt; property element, use the first p-name of the h-* child &lt;br /&gt;
******* else if it's an &amp;lt;code&amp;gt;e-*&amp;lt;/code&amp;gt; property element, re-use its { } structure with existing &amp;lt;code&amp;gt;value:&amp;lt;/code&amp;gt; inside.&lt;br /&gt;
******* else if it's a &amp;lt;code&amp;gt;u-*&amp;lt;/code&amp;gt; property element and the h-* child has a u-url, use the first such u-url&lt;br /&gt;
******* else use the parsed property value per p-*,u-*,dt-* parsing respectively&lt;br /&gt;
***** else add found elements that are microformats to the &amp;quot;children&amp;quot; array&lt;br /&gt;
*** imply properties for the found microformat (see below)&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;*&amp;quot; for root (and property) class names consists of an optional vendor prefix (series of 1+ number or lowercase a-z characters i.e. &amp;lt;code&amp;gt;[0-9a-z]+&amp;lt;/code&amp;gt;, followed by '-'), then one or more '-' separated lowercase a-z words.&lt;br /&gt;
&lt;br /&gt;
=== parse an element for properties ===&lt;br /&gt;
&lt;br /&gt;
==== parsing a &amp;lt;code&amp;gt;p-&amp;lt;/code&amp;gt; property ====&lt;br /&gt;
&lt;br /&gt;
To parse an element for a &amp;lt;code&amp;gt;p-x&amp;lt;/code&amp;gt; property value (whether explicit &amp;lt;code&amp;gt;p-*&amp;lt;/code&amp;gt; or backcompat equivalent):&lt;br /&gt;
&lt;br /&gt;
* Parse the element for the [[value-class-pattern]]. If a value is found, return it.&lt;br /&gt;
* If &amp;lt;code&amp;gt;abbr.p-x[title]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;link.p-x[title]&amp;lt;/code&amp;gt;, return the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
* else if &amp;lt;code&amp;gt;data.p-x[value]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;input.p-x[value]&amp;lt;/code&amp;gt;, then return the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;img.p-x[alt]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area.p-x[alt]&amp;lt;/code&amp;gt;, then return the &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else return the &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; of the element after:&lt;br /&gt;
** dropping any nested &amp;lt;code&amp;gt;&amp;amp;lt;script&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;amp;amp; &amp;lt;code&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/code&amp;gt; elements;&lt;br /&gt;
** replacing any nested &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;amp;gt;&amp;lt;/code&amp;gt; elements with their &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute, if present; otherwise their &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute, if present, adding a space at the beginning and end, resolving the URL if it’s relative;&lt;br /&gt;
** removing all leading/trailing whitespace&lt;br /&gt;
&lt;br /&gt;
==== parsing a &amp;lt;code&amp;gt;u-&amp;lt;/code&amp;gt; property ====&lt;br /&gt;
&lt;br /&gt;
To parse an element for a &amp;lt;code&amp;gt;u-x&amp;lt;/code&amp;gt; property value (whether explicit &amp;lt;code&amp;gt;u-*&amp;lt;/code&amp;gt; or backcompat equivalent):&lt;br /&gt;
&lt;br /&gt;
* if &amp;lt;code&amp;gt;a.u-x[href]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area.u-x[href]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;link.u-x[href]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;img.u-x[src]&amp;lt;/code&amp;gt; return the result of &amp;quot;parse an img element for src and alt&amp;quot; (see Sec.1.5)&lt;br /&gt;
* else if &amp;lt;code&amp;gt;audio.u-x[src]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;video.u-x[src]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;source.u-x[src]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;iframe.u-x[src]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;video.u-x[poster]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;poster&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;object.u-x[data]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else parse the element for the [[value-class-pattern]]. If a value is found, get it&lt;br /&gt;
* else if &amp;lt;code&amp;gt;abbr.u-x[title]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;data.u-x[value]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;input.u-x[value]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else get the &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; of the element after removing all leading/trailing whitespace and nested &amp;lt;code&amp;gt;&amp;amp;lt;script&amp;gt;&amp;lt;/code&amp;gt; &amp;amp;amp; &amp;lt;code&amp;gt;&amp;amp;lt;style&amp;gt;&amp;lt;/code&amp;gt; elements&lt;br /&gt;
* return the normalized absolute URL of the gotten value, following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element, if any).&lt;br /&gt;
&lt;br /&gt;
==== parsing a &amp;lt;code&amp;gt;dt-&amp;lt;/code&amp;gt; property ====&lt;br /&gt;
&lt;br /&gt;
To parse an element for a &amp;lt;code&amp;gt;dt-x&amp;lt;/code&amp;gt; property value (whether explicit &amp;lt;code&amp;gt;dt-*&amp;lt;/code&amp;gt; or backcompat equivalent):&lt;br /&gt;
&lt;br /&gt;
* parse the element for the [[value-class-pattern]], including the date and time parsing rules. If a value is found, then return it.&lt;br /&gt;
* if &amp;lt;code&amp;gt;time.dt-x[datetime]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ins.dt-x[datetime]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;del.dt-x[datetime]&amp;lt;/code&amp;gt;, then return the &amp;lt;code&amp;gt;datetime&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;abbr.dt-x[title]&amp;lt;/code&amp;gt;, then return the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;data.dt-x[value]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;input.dt-x[value]&amp;lt;/code&amp;gt;, then return the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else return the &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; of the element after removing all leading/trailing whitespace and nested &amp;lt;code&amp;gt;&amp;amp;lt;script&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;amp;amp; &amp;lt;code&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/code&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
==== parsing an &amp;lt;code&amp;gt;e-&amp;lt;/code&amp;gt; property ====&lt;br /&gt;
To parse an element for a &amp;lt;code&amp;gt;e-x&amp;lt;/code&amp;gt; property value (whether explicit &amp;quot;&amp;lt;code&amp;gt;e-*&amp;quot;&amp;lt;/code&amp;gt; or backcompat equivalent):&lt;br /&gt;
&lt;br /&gt;
* return a dictionary with two keys:&lt;br /&gt;
** &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; of the element by using the [https://html.spec.whatwg.org/multipage/parsing.html#serialising-html-fragments HTML spec: Serializing HTML Fragments algorithm], with leading/trailing whitespace removed.&lt;br /&gt;
** &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;: the &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; of the element after:&lt;br /&gt;
*** dropping any nested &amp;lt;code&amp;gt;&amp;amp;lt;script&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;amp;amp; &amp;lt;code&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/code&amp;gt; elements;&lt;br /&gt;
*** replacing any nested &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;amp;gt;&amp;lt;/code&amp;gt; elements with their &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute, if present; otherwise their &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute, if present, adding a space at the beginning and end, resolving the URL if it’s relative;&lt;br /&gt;
*** removing all leading/trailing whitespace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== parsing for implied properties ====&lt;br /&gt;
&lt;br /&gt;
Imply properties only on explicit &amp;lt;code&amp;gt;h-x&amp;lt;/code&amp;gt; class name root microformat element (no backcompat roots):&lt;br /&gt;
&lt;br /&gt;
* if no explicit &amp;quot;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&amp;quot; property, and no other &amp;lt;code&amp;gt;p-*&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;e-*&amp;lt;/code&amp;gt; properties, and no nested microformats,&lt;br /&gt;
* then imply by:&lt;br /&gt;
** if &amp;lt;code&amp;gt;img.h-x&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area.h-x&amp;lt;/code&amp;gt;, then use its &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;abbr.h-x[title]&amp;lt;/code&amp;gt; then use its &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;img:only-child[alt]:not([alt=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;area:only-child[alt]:not([alt=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;abbr:only-child[title]:not([title=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;img:only-child[alt]:not([alt=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;area:only-child[alt]:not([alt=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;abbr:only-child[title]:not([title=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; use that &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else use the &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; of the &amp;lt;code&amp;gt;.h-x&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; after:&lt;br /&gt;
*** dropping any nested &amp;lt;code&amp;gt;&amp;amp;lt;script&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;amp;amp; &amp;lt;code&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/code&amp;gt; elements;&lt;br /&gt;
*** replacing any nested &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;amp;gt;&amp;lt;/code&amp;gt; elements with their &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute, if present;&lt;br /&gt;
** remove all leading/trailing whitespace&lt;br /&gt;
* if no explicit &amp;quot;&amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt;&amp;quot; property, and no other explicit &amp;lt;code&amp;gt;u-*&amp;lt;/code&amp;gt; properties, and no nested microformats,&lt;br /&gt;
* then imply by:&lt;br /&gt;
** if &amp;lt;code&amp;gt;img.h-x[src]&amp;lt;/code&amp;gt;, then use the result of &amp;quot;parse an img element for src and alt&amp;quot; (see Sec.1.5) for photo&lt;br /&gt;
** else if &amp;lt;code&amp;gt;object.h-x[data]&amp;lt;/code&amp;gt; then use &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; for photo&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;img[src]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt; then use the result of &amp;quot;parse an img element for src and alt&amp;quot; (see Sec.1.5) for photo&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;object[data]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; for photo&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;img[src]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use the result of &amp;quot;parse an img element for src and alt&amp;quot; (see Sec.1.5) for photo&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;object[data]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use that &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; for photo&lt;br /&gt;
** if there is a gotten photo value, return the normalized absolute URL of it, following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element, if any).&lt;br /&gt;
* if no explicit &amp;quot;&amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt;&amp;quot; property, and no other explicit &amp;lt;code&amp;gt;u-*&amp;lt;/code&amp;gt; properties, and no nested microformats,&lt;br /&gt;
* then imply by:&lt;br /&gt;
** if &amp;lt;code&amp;gt;a.h-x[href]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area.h-x[href]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;[href]&amp;lt;/code&amp;gt; for url&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;a[href]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use that &amp;lt;code&amp;gt;[href]&amp;lt;/code&amp;gt; for url&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;area[href]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use that &amp;lt;code&amp;gt;[href]&amp;lt;/code&amp;gt; for url&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;a[href]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use that &amp;lt;code&amp;gt;[href]&amp;lt;/code&amp;gt; for url&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;area[href]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use that &amp;lt;code&amp;gt;[href]&amp;lt;/code&amp;gt; for url&lt;br /&gt;
** if there is a gotten url value, return the normalized absolute URL of it, following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element, if any).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; The same markup for a property should not be causing that property to occur in &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; a microformat and one embedded inside - such a property should only be showing up on one of them. The parsing algorithm has details to prevent that, such as the &amp;lt;code&amp;gt;:not[.h-*]&amp;lt;/code&amp;gt; tests above.&lt;br /&gt;
&lt;br /&gt;
=== parse a hyperlink element for rel microformats ===&lt;br /&gt;
To parse a hyperlink element (e.g. a or link) for rel microformats: use the following algorithm or an algorithm that produces equivalent results:&lt;br /&gt;
* if the &amp;quot;rel&amp;quot; attribute of the element is empty then exit&lt;br /&gt;
* set url to the value of the &amp;quot;href&amp;quot; attribute of the element, normalized to be an absolute URL following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element if any).&lt;br /&gt;
* treat the &amp;quot;rel&amp;quot; attribute of the element as a space separate set of rel values&lt;br /&gt;
* for each rel value (rel-value)&lt;br /&gt;
** if there is no key rel-value in the rels hash then create it with an empty array as its value&lt;br /&gt;
** if url is not in the array of the key rel-value in the rels hash then add url to the array&lt;br /&gt;
* end for&lt;br /&gt;
* if there is no key with name url in the top-level &amp;quot;rel-urls&amp;quot; hash then add a key with name url there, with an empty hash value&lt;br /&gt;
* add keys to the hash of the key with name url for each of these attributes (if present) and key not already set:&lt;br /&gt;
** &amp;quot;hreflang&amp;quot;: the value of the &amp;quot;hreflang&amp;quot; attribute&lt;br /&gt;
** &amp;quot;media&amp;quot;: the value of the &amp;quot;media&amp;quot; attribute&lt;br /&gt;
** &amp;quot;title&amp;quot;: the value of the &amp;quot;title&amp;quot; attribute&lt;br /&gt;
** &amp;quot;type&amp;quot;: the value of the &amp;quot;type&amp;quot; attribute&lt;br /&gt;
** &amp;quot;text&amp;quot;: the text content of the element if any&lt;br /&gt;
* if there is no &amp;quot;rels&amp;quot; key in that hash, add it with an empty array value&lt;br /&gt;
* set the value of that &amp;quot;rels&amp;quot; key to an array of all unique items in the set of rel values unioned with the current array value of the &amp;quot;rels&amp;quot; key, sorted alphabetically.&lt;br /&gt;
&lt;br /&gt;
==== rel parse examples ====&lt;br /&gt;
Here are some examples to show how parsed rels may be reflected into the JSON (empty items key).&lt;br /&gt;
&lt;br /&gt;
E.g. parsing this markup:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;author&amp;quot; href=&amp;quot;http://example.com/a&amp;quot;&amp;gt;author a&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;author&amp;quot; href=&amp;quot;http://example.com/b&amp;quot;&amp;gt;author b&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;in-reply-to&amp;quot; href=&amp;quot;http://example.com/1&amp;quot;&amp;gt;post 1&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;in-reply-to&amp;quot; href=&amp;quot;http://example.com/2&amp;quot;&amp;gt;post 2&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;alternate home&amp;quot;&lt;br /&gt;
   href=&amp;quot;http://example.com/fr&amp;quot;&lt;br /&gt;
   media=&amp;quot;handheld&amp;quot;&lt;br /&gt;
   hreflang=&amp;quot;fr&amp;quot;&amp;gt;French mobile homepage&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would generate this JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=json&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;author&amp;quot;: [ &amp;quot;http://example.com/a&amp;quot;, &amp;quot;http://example.com/b&amp;quot; ],&lt;br /&gt;
    &amp;quot;in-reply-to&amp;quot;: [ &amp;quot;http://example.com/1&amp;quot;, &amp;quot;http://example.com/2&amp;quot; ],&lt;br /&gt;
    &amp;quot;alternate&amp;quot;: [ &amp;quot;http://example.com/fr&amp;quot; ], &lt;br /&gt;
    &amp;quot;home&amp;quot;: [ &amp;quot;http://example.com/fr&amp;quot; ] &lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
    &amp;quot;http://example.com/a&amp;quot;: {&lt;br /&gt;
      &amp;quot;rels&amp;quot;: [&amp;quot;author&amp;quot;], &lt;br /&gt;
      &amp;quot;text&amp;quot;: &amp;quot;author a&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;http://example.com/b&amp;quot;: {&lt;br /&gt;
      &amp;quot;rels&amp;quot;: [&amp;quot;author&amp;quot;], &lt;br /&gt;
      &amp;quot;text&amp;quot;: &amp;quot;author b&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;http://example.com/1&amp;quot;: {&lt;br /&gt;
      &amp;quot;rels&amp;quot;: [&amp;quot;in-reply-to&amp;quot;], &lt;br /&gt;
      &amp;quot;text&amp;quot;: &amp;quot;post 1&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;http://example.com/2&amp;quot;: {&lt;br /&gt;
      &amp;quot;rels&amp;quot;: [&amp;quot;in-reply-to&amp;quot;], &lt;br /&gt;
      &amp;quot;text&amp;quot;: &amp;quot;post 2&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;http://example.com/fr&amp;quot;: {&lt;br /&gt;
      &amp;quot;rels&amp;quot;: [&amp;quot;alternate&amp;quot;, &amp;quot;home&amp;quot;],&lt;br /&gt;
      &amp;quot;media&amp;quot;: &amp;quot;handheld&amp;quot;, &lt;br /&gt;
      &amp;quot;hreflang&amp;quot;: &amp;quot;fr&amp;quot;, &lt;br /&gt;
      &amp;quot;text&amp;quot;: &amp;quot;French mobile homepage&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parse an img element for src and alt ===&lt;br /&gt;
To parse an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; element for &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attributes:&lt;br /&gt;
* if &amp;lt;code&amp;gt;img[alt]&amp;lt;/code&amp;gt;&lt;br /&gt;
** return a new &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; structure with&lt;br /&gt;
*** &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;: the element's &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute as a normalized absolute URL, following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element, if any).&lt;br /&gt;
*** &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt;: the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else&lt;br /&gt;
** return the element's &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute as a normalized absolute URL, following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element, if any).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== what do the CSS selector expressions mean ==&lt;br /&gt;
''This section is non-normative.''&lt;br /&gt;
&lt;br /&gt;
Use [http://gallery.theopalgroup.com/selectoracle/ SelectORacle] to expand any of the above CSS selector expressions into longform English prose.&lt;br /&gt;
&lt;br /&gt;
Exception:&lt;br /&gt;
* ''':not[.h-*]''' is not a valid CSS selector but is used here to mean:&lt;br /&gt;
** does not have any class names that start with &amp;quot;h-&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== note HTML parsing rules ==&lt;br /&gt;
''This section is non-normative.''&lt;br /&gt;
&lt;br /&gt;
microformats2 parsers are expected to follow HTML parsing rules, which includes for example:&lt;br /&gt;
* ignore &amp;lt;code&amp;gt;&amp;amp;lt;template&amp;amp;gt;&amp;lt;/code&amp;gt; elements - stuff between &amp;lt;code&amp;gt;&amp;amp;lt;template&amp;amp;gt;&amp;lt;/code&amp;gt; tags don't end up in the DOM&lt;br /&gt;
** test-case in the wild: http://sixtwothree.org/blog/now-accepting-webmentions/&lt;br /&gt;
&lt;br /&gt;
== note backward compatibility details ==&lt;br /&gt;
The parsing algorithm and details refer to &amp;quot;backcompat root classes&amp;quot; (backcompat roots for short) and &amp;quot;backcompat properties&amp;quot;. These conditions and steps in the algorithm document how to parse pre-microformats2 microformats which all defined their own specific root class names and explicit sets of properties.&lt;br /&gt;
&lt;br /&gt;
Some details to be aware of (which are explicitly in the algorithm, this is just an informal summary)&lt;br /&gt;
* If an element has one or more microformats2 root class name(s) (&amp;lt;code&amp;gt;h-*&amp;lt;/code&amp;gt;) &lt;br /&gt;
** all backcompat root class names are ignored on that element.&lt;br /&gt;
** all backcompat properties, without an intervening root class name, are ignored inside that element&lt;br /&gt;
* If an element has only a backcompat root class name (or names)&lt;br /&gt;
** all microformats2 property class names (p-* u-* dt-* e-*), without an intervening element with root class name, are ignored inside that element&lt;br /&gt;
** there is no implied property value parsing (p-name, u-url, u-photo) for that element&lt;br /&gt;
&lt;br /&gt;
=== backward compatibility mappings ===&lt;br /&gt;
Note: several parser implementations have encoded backward compatible mappings into source and data files. Implementers of parsers may find these useful:&lt;br /&gt;
* search for &amp;quot;modules.maps[&amp;quot; in https://github.com/glennjones/microformat-shiv/blob/master/microformat-shiv.js&lt;br /&gt;
* search for &amp;quot;$classicPropertyMap&amp;quot; in https://github.com/indieweb/php-mf2/blob/master/Mf2/Parser.php&lt;br /&gt;
* https://github.com/tommorris/mf2py/blob/master/mf2py/backcompat.py&lt;br /&gt;
&lt;br /&gt;
== questions ==&lt;br /&gt;
See the FAQ:&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;br /&gt;
&lt;br /&gt;
== implementations ==&lt;br /&gt;
{{main|microformats2#Implementations}}&lt;br /&gt;
There are open source [[microformats2#Implementations|microformats2 parsers]] available for Javascript, node.js, PHP, Ruby and Python.&lt;br /&gt;
&lt;br /&gt;
== test suite ==&lt;br /&gt;
See:&lt;br /&gt;
* https://github.com/microformats/tests&lt;br /&gt;
* https://github.com/indieweb/php-mf2/tree/master/tests/Mf2&lt;br /&gt;
&lt;br /&gt;
Ports to/for other languages encouraged.&lt;br /&gt;
&lt;br /&gt;
== change control ==&lt;br /&gt;
Minor editorial changes (e.g. fixing minor typos or punctuation) that do not change and preferably clarify the structure and existing intended meaning may be done by anyone without filing issues, requiring only a sufficient &amp;quot;Summary&amp;quot; description field entry for the edit. More than minor but still purely editorial changes may be made by an editor. Anyone may question such editorial changes by undoing corresponding edits without filing an issue. Any further reversion or iteration on such an editorial change must be done by filing an issue.&lt;br /&gt;
&lt;br /&gt;
Per the stable status of this document, substantive issue filing, resolution, and edits are done with the following change control steps, which may nearly all be done asynchronously once an issue is filed to reach the required state of &amp;quot;Resolve by implementation verified rough consensus&amp;quot;. All steps should be openly documented (e.g. on this wiki or GitHub issues) such that others may later verify the history of an issue, and all steps are encouraged to be announced on #microformats [[IRC]] with a link to the issue.&lt;br /&gt;
&lt;br /&gt;
* '''File an issue.''' Anyone may file a new [[microformats2-parsing-issues|issue]] and is encouraged to do so, with the caveat that per the stable status, only issues originating as a result of implementation experience are likely to have a substantive impact on this specification.&lt;br /&gt;
* '''Propose a resolution.''' Anyone may propose resolutions to existing issues, and should encourage others in the community, especially implementers, to provide feedback. Proposed resolutions should include what specific text of the spec needs changing, preferably with replacement text, and test cases if applicable (e.g. a resolution could just document the current state more precisely without needing to provide any new test cases).&lt;br /&gt;
* '''Provide feedback on proposed resolution(s).''' Anyone may provide feedback on proposed resolutions with their name attached, in summary (e.g. +1/0/-1 opinions), and additionally with reasoning (required for objections, optional otherwise), or optionally with suggested improvements, or counter-proposals (per &amp;quot;Propose a resolution&amp;quot; above).&lt;br /&gt;
* '''Iterate to resolve objections if any.''' If there are any objections to a proposed resolution, proposer(s) and anyone agreeing should work to iterate on the proposal to resolve objections to the satisfaction (or at least withdrawal of objection) of anyone objecting. The more objections resolved the better, and incremental progress is forward progress.&lt;br /&gt;
* '''Broaden implementer consensus.''' Proposer(s) and anyone agreeing should reach out (e.g. via #microformats [[IRC]]) to multiple implementers of the specification to get their opinions and feedback on proposal(s). The more implementers providing feedback the better. Iterate to resolve any new objections per &amp;quot;Iterate to resolve objections if any&amp;quot; above.&lt;br /&gt;
* '''Encourage and get 1+ implementation(s).''' Encourage, get, and document 1+ implementation(s) of implementation affecting aspects of a proposed resolution, preferably with a test case if applicable.&lt;br /&gt;
* '''Resolve by implementation verified rough consensus.''' Once there is rough consensus on a proposal (where &amp;lt;dfn&amp;gt;rough consensus&amp;lt;/dfn&amp;gt; means &amp;lt;strong&amp;gt;either no objections, or at a minimum no objections by implementers, and explicit positive opinions by 2+ implementers&amp;lt;/strong&amp;gt;) and a proposal's feasibility is verified by at least 1 implementation of aspects of the proposal that affect implementations (none needed if there are none, e.g. purely editorial), cite those in a &amp;quot;Resolution:&amp;quot; statement on the issue (e.g. in a comment), and explicitly share this resolution statement and link to issue in the #microformats [[IRC]] channel.&lt;br /&gt;
* '''Edit specification.''' Normally the spec editor(s) will make edits per implementation verified rough consensus resolutions, however anyone (though especially issue discussion participants) may make a specification edit per a resolution if they are able to verify the citations that the resolution has achieve rough consensus, and has 1+ implementation(s) per &amp;quot;Encourage and get 1+ implementation(s)&amp;quot; above. Edits must contain a &amp;quot;Summary&amp;quot; field entry that at a minimum mention the issue by name, should provide a URL to the issue resolution, and preferably be done by a spec editor or an implementer. Once the edit is made, the issue should be closed, or at least a comment made on the issue requesting that the opener of the issue close the issue.&lt;br /&gt;
&lt;br /&gt;
These change control steps are inspired by the tradition of &amp;quot;Rough consensus and running code&amp;quot; as exhibited by example by IETF and W3C processes, and in that regard, seek to be a philosophically compatible approach to specification iteration. They have been in rough practice since 2015-01-21, increasingly strictly applied since then with consensus of issue discussion participants, and explicitly documented based on issue resolving and spec editing experience.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;br /&gt;
* [[microformats2-parsing-issues]]&lt;br /&gt;
* [[microformats2-parsing-brainstorming]] - for background, thinking, exploring possibilities&lt;br /&gt;
* [[microformats2-parsing-rdf]]&lt;br /&gt;
* [[microformats2-implied-properties]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing&amp;diff=70591</id>
		<title>microformats2-parsing</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing&amp;diff=70591"/>
		<updated>2022-11-30T23:46:07Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Fix: replaces deprecated &amp;lt;source&amp;gt; tag with &amp;lt;syntaxhighlight&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:microformats2 parsing specification}}&lt;br /&gt;
&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;[[microformats2]]&amp;lt;/dfn&amp;gt; is a simple, open format for marking up data in HTML. The microformats2 parsing specification describes how to [[#implementations|implement]] a microformats2 parser, independent of any specific vocabularies.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span id=&amp;quot;status&amp;quot;&amp;gt;Status&amp;lt;/span&amp;gt;&lt;br /&gt;
:This is a '''Living Specification''' with several interoperable [[#implementations|implementations]]. This specification is stable, subject to editorial changes only for improving clarity of existing meaning. While substantive changes are unexpected, it is a living specification subject to substantive change by issues and errata filed in response to implementation experience, requiring consensus among participating implementers (since 2015-01-21) as part of an explicit [[#change_control|change control]] process. There are currently no draft or proposed new features in this specification, and if any were to be added, they would be explicitly labeled as such.&amp;lt;br/&amp;gt;Note: This specification is only marked as a &amp;quot;Draft Specification&amp;quot; because of pending edits from [[microformats2-parsing-issues|resolved issues before 2016-06-20]]. Once those edits have been completed, the link to &amp;lt;nowiki&amp;gt;[[Category:Draft Specifications]]&amp;lt;/nowiki&amp;gt; at the bottom of this document should be changed to &amp;lt;nowiki&amp;gt;[[Category:Specifications]]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
;Participate&lt;br /&gt;
:&amp;lt;span id=&amp;quot;issues&amp;quot;&amp;gt;[https://github.com/microformats/microformats2-parsing/issues Open Issues]&amp;lt;/span&amp;gt;&lt;br /&gt;
:[[microformats2-parsing-issues|Resolved issues before 2016-06-20]]&lt;br /&gt;
:[[IRC]]: [irc://irc.libera.chat/microformats #microformats on Libera]&lt;br /&gt;
&amp;lt;div class=&amp;quot;p-author h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
;&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;&lt;br /&gt;
:&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;License&lt;br /&gt;
: {{cc0-owfa-license}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== algorithm ==&lt;br /&gt;
=== parse a document for microformats ===&lt;br /&gt;
To parse a document for microformats, follow the HTML parsing rules and do the following:&lt;br /&gt;
* start with an empty JSON &amp;quot;items&amp;quot; array and &amp;quot;rels&amp;quot; &amp;amp; &amp;quot;rel-urls&amp;quot; hashes: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&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;rel-urls&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* parse the root element for class microformats, adding to the JSON items array accordingly&lt;br /&gt;
* parse all hyperlink (&amp;lt;code&amp;gt;&amp;amp;lt;a&amp;gt; &amp;amp;lt;area&amp;gt; &amp;amp;lt;link&amp;gt;&amp;lt;/code&amp;gt;) elements for rel microformats, adding to the JSON rels &amp;amp; rel-urls hashes accordingly&lt;br /&gt;
* return the resulting JSON&lt;br /&gt;
Parsers may simultaneously parse the document for both class and rel microformats (e.g. in a single tree traversal).&lt;br /&gt;
&lt;br /&gt;
=== parse an element for class microformats ===&lt;br /&gt;
To parse an element for class microformats:&lt;br /&gt;
* parse element class for root class name(s) &amp;quot;h-*&amp;quot; and if none, backcompat root classes&lt;br /&gt;
** if none found, parse child elements for microformats (depth first, doc order)&lt;br /&gt;
** else if found, start parsing a new microformat&lt;br /&gt;
*** keep track of whether the root class name(s) was from backcompat&lt;br /&gt;
*** create a new { } structure with:&lt;br /&gt;
**** &amp;lt;code&amp;gt;type: &amp;lt;nowiki&amp;gt;[array of unique microformat &amp;quot;h-*&amp;quot; type(s) on the element sorted alphabetically]&amp;lt;/nowiki&amp;gt;,&amp;lt;/code&amp;gt;&lt;br /&gt;
**** &amp;lt;code&amp;gt;properties: { } &amp;lt;/code&amp;gt; - to be filled in when that element itself is parsed for microformats properties&lt;br /&gt;
**** if the element has a non-empty &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attribute:&lt;br /&gt;
***** &amp;lt;code&amp;gt;id:&amp;lt;/code&amp;gt; string value of element's id attribute&lt;br /&gt;
*** parse child elements (document order) by:&lt;br /&gt;
**** if parsing a backcompat root, parse child element class name(s) for backcompat properties&lt;br /&gt;
**** else parse a child element class for property class name(s) &amp;quot;p-*,u-*,dt-*,e-*&amp;quot;&lt;br /&gt;
**** if such class(es) are found, it is a property element&lt;br /&gt;
***** add properties found to current microformat's &amp;lt;code&amp;gt;properties: { } &amp;lt;/code&amp;gt; structure&lt;br /&gt;
**** parse a child element for microformats (recurse)&lt;br /&gt;
***** if that child element itself has a microformat (&amp;quot;h-*&amp;quot; or backcompat roots) and is a property element, add it into the array of values for that property as a { } structure, add to that { } structure:&lt;br /&gt;
****** &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;: &lt;br /&gt;
******* if it's a &amp;lt;code&amp;gt;p-*&amp;lt;/code&amp;gt; property element, use the first p-name of the h-* child &lt;br /&gt;
******* else if it's an &amp;lt;code&amp;gt;e-*&amp;lt;/code&amp;gt; property element, re-use its { } structure with existing &amp;lt;code&amp;gt;value:&amp;lt;/code&amp;gt; inside.&lt;br /&gt;
******* else if it's a &amp;lt;code&amp;gt;u-*&amp;lt;/code&amp;gt; property element and the h-* child has a u-url, use the first such u-url&lt;br /&gt;
******* else use the parsed property value per p-*,u-*,dt-* parsing respectively&lt;br /&gt;
***** else add found elements that are microformats to the &amp;quot;children&amp;quot; array&lt;br /&gt;
*** imply properties for the found microformat (see below)&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;*&amp;quot; for root (and property) class names consists of an optional vendor prefix (series of 1+ number or lowercase a-z characters i.e. &amp;lt;code&amp;gt;[0-9a-z]+&amp;lt;/code&amp;gt;, followed by '-'), then one or more '-' separated lowercase a-z words.&lt;br /&gt;
&lt;br /&gt;
=== parse an element for properties ===&lt;br /&gt;
&lt;br /&gt;
==== parsing a &amp;lt;code&amp;gt;p-&amp;lt;/code&amp;gt; property ====&lt;br /&gt;
&lt;br /&gt;
To parse an element for a &amp;lt;code&amp;gt;p-x&amp;lt;/code&amp;gt; property value (whether explicit &amp;lt;code&amp;gt;p-*&amp;lt;/code&amp;gt; or backcompat equivalent):&lt;br /&gt;
&lt;br /&gt;
* Parse the element for the [[value-class-pattern]]. If a value is found, return it.&lt;br /&gt;
* If &amp;lt;code&amp;gt;abbr.p-x[title]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;link.p-x[title]&amp;lt;/code&amp;gt;, return the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
* else if &amp;lt;code&amp;gt;data.p-x[value]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;input.p-x[value]&amp;lt;/code&amp;gt;, then return the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;img.p-x[alt]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area.p-x[alt]&amp;lt;/code&amp;gt;, then return the &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else return the &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; of the element after:&lt;br /&gt;
** dropping any nested &amp;lt;code&amp;gt;&amp;amp;lt;script&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;amp;amp; &amp;lt;code&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/code&amp;gt; elements;&lt;br /&gt;
** replacing any nested &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;amp;gt;&amp;lt;/code&amp;gt; elements with their &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute, if present; otherwise their &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute, if present, adding a space at the beginning and end, resolving the URL if it’s relative;&lt;br /&gt;
** removing all leading/trailing whitespace&lt;br /&gt;
&lt;br /&gt;
==== parsing a &amp;lt;code&amp;gt;u-&amp;lt;/code&amp;gt; property ====&lt;br /&gt;
&lt;br /&gt;
To parse an element for a &amp;lt;code&amp;gt;u-x&amp;lt;/code&amp;gt; property value (whether explicit &amp;lt;code&amp;gt;u-*&amp;lt;/code&amp;gt; or backcompat equivalent):&lt;br /&gt;
&lt;br /&gt;
* if &amp;lt;code&amp;gt;a.u-x[href]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area.u-x[href]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;link.u-x[href]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;img.u-x[src]&amp;lt;/code&amp;gt; return the result of &amp;quot;parse an img element for src and alt&amp;quot; (see Sec.1.5)&lt;br /&gt;
* else if &amp;lt;code&amp;gt;audio.u-x[src]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;video.u-x[src]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;source.u-x[src]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;iframe.u-x[src]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;video.u-x[poster]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;poster&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;object.u-x[data]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else parse the element for the [[value-class-pattern]]. If a value is found, get it&lt;br /&gt;
* else if &amp;lt;code&amp;gt;abbr.u-x[title]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;data.u-x[value]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;input.u-x[value]&amp;lt;/code&amp;gt;, then get the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else get the &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; of the element after removing all leading/trailing whitespace and nested &amp;lt;code&amp;gt;&amp;amp;lt;script&amp;gt;&amp;lt;/code&amp;gt; &amp;amp;amp; &amp;lt;code&amp;gt;&amp;amp;lt;style&amp;gt;&amp;lt;/code&amp;gt; elements&lt;br /&gt;
* return the normalized absolute URL of the gotten value, following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element, if any).&lt;br /&gt;
&lt;br /&gt;
==== parsing a &amp;lt;code&amp;gt;dt-&amp;lt;/code&amp;gt; property ====&lt;br /&gt;
&lt;br /&gt;
To parse an element for a &amp;lt;code&amp;gt;dt-x&amp;lt;/code&amp;gt; property value (whether explicit &amp;lt;code&amp;gt;dt-*&amp;lt;/code&amp;gt; or backcompat equivalent):&lt;br /&gt;
&lt;br /&gt;
* parse the element for the [[value-class-pattern]], including the date and time parsing rules. If a value is found, then return it.&lt;br /&gt;
* if &amp;lt;code&amp;gt;time.dt-x[datetime]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ins.dt-x[datetime]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;del.dt-x[datetime]&amp;lt;/code&amp;gt;, then return the &amp;lt;code&amp;gt;datetime&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;abbr.dt-x[title]&amp;lt;/code&amp;gt;, then return the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else if &amp;lt;code&amp;gt;data.dt-x[value]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;input.dt-x[value]&amp;lt;/code&amp;gt;, then return the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else return the &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; of the element after removing all leading/trailing whitespace and nested &amp;lt;code&amp;gt;&amp;amp;lt;script&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;amp;amp; &amp;lt;code&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/code&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
==== parsing an &amp;lt;code&amp;gt;e-&amp;lt;/code&amp;gt; property ====&lt;br /&gt;
To parse an element for a &amp;lt;code&amp;gt;e-x&amp;lt;/code&amp;gt; property value (whether explicit &amp;quot;&amp;lt;code&amp;gt;e-*&amp;quot;&amp;lt;/code&amp;gt; or backcompat equivalent):&lt;br /&gt;
&lt;br /&gt;
* return a dictionary with two keys:&lt;br /&gt;
** &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;: the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; of the element by using the [https://html.spec.whatwg.org/multipage/parsing.html#serialising-html-fragments HTML spec: Serializing HTML Fragments algorithm], with leading/trailing whitespace removed.&lt;br /&gt;
** &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;: the &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; of the element after:&lt;br /&gt;
*** dropping any nested &amp;lt;code&amp;gt;&amp;amp;lt;script&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;amp;amp; &amp;lt;code&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/code&amp;gt; elements;&lt;br /&gt;
*** replacing any nested &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;amp;gt;&amp;lt;/code&amp;gt; elements with their &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute, if present; otherwise their &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute, if present, adding a space at the beginning and end, resolving the URL if it’s relative;&lt;br /&gt;
*** removing all leading/trailing whitespace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== parsing for implied properties ====&lt;br /&gt;
&lt;br /&gt;
Imply properties only on explicit &amp;lt;code&amp;gt;h-x&amp;lt;/code&amp;gt; class name root microformat element (no backcompat roots):&lt;br /&gt;
&lt;br /&gt;
* if no explicit &amp;quot;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&amp;quot; property, and no other &amp;lt;code&amp;gt;p-*&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;e-*&amp;lt;/code&amp;gt; properties, and no nested microformats,&lt;br /&gt;
* then imply by:&lt;br /&gt;
** if &amp;lt;code&amp;gt;img.h-x&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area.h-x&amp;lt;/code&amp;gt;, then use its &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;abbr.h-x[title]&amp;lt;/code&amp;gt; then use its &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;img:only-child[alt]:not([alt=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;area:only-child[alt]:not([alt=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;abbr:only-child[title]:not([title=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;img:only-child[alt]:not([alt=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;area:only-child[alt]:not([alt=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;abbr:only-child[title]:not([title=&amp;quot;&amp;quot;]):not[.h-*]&amp;lt;/code&amp;gt; use that &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for name&lt;br /&gt;
** else use the &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; of the &amp;lt;code&amp;gt;.h-x&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; after:&lt;br /&gt;
*** dropping any nested &amp;lt;code&amp;gt;&amp;amp;lt;script&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;amp;amp; &amp;lt;code&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/code&amp;gt; elements;&lt;br /&gt;
*** replacing any nested &amp;lt;code&amp;gt;&amp;amp;lt;img&amp;amp;gt;&amp;lt;/code&amp;gt; elements with their &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute, if present;&lt;br /&gt;
** remove all leading/trailing whitespace&lt;br /&gt;
* if no explicit &amp;quot;&amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt;&amp;quot; property, and no other explicit &amp;lt;code&amp;gt;u-*&amp;lt;/code&amp;gt; properties, and no nested microformats,&lt;br /&gt;
* then imply by:&lt;br /&gt;
** if &amp;lt;code&amp;gt;img.h-x[src]&amp;lt;/code&amp;gt;, then use the result of &amp;quot;parse an img element for src and alt&amp;quot; (see Sec.1.5) for photo&lt;br /&gt;
** else if &amp;lt;code&amp;gt;object.h-x[data]&amp;lt;/code&amp;gt; then use &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; for photo&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;img[src]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt; then use the result of &amp;quot;parse an img element for src and alt&amp;quot; (see Sec.1.5) for photo&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;object[data]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; for photo&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;img[src]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use the result of &amp;quot;parse an img element for src and alt&amp;quot; (see Sec.1.5) for photo&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;object[data]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use that &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;’s &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; for photo&lt;br /&gt;
** if there is a gotten photo value, return the normalized absolute URL of it, following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element, if any).&lt;br /&gt;
* if no explicit &amp;quot;&amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt;&amp;quot; property, and no other explicit &amp;lt;code&amp;gt;u-*&amp;lt;/code&amp;gt; properties, and no nested microformats,&lt;br /&gt;
* then imply by:&lt;br /&gt;
** if &amp;lt;code&amp;gt;a.h-x[href]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area.h-x[href]&amp;lt;/code&amp;gt; then use that &amp;lt;code&amp;gt;[href]&amp;lt;/code&amp;gt; for url&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;a[href]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use that &amp;lt;code&amp;gt;[href]&amp;lt;/code&amp;gt; for url&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;area[href]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use that &amp;lt;code&amp;gt;[href]&amp;lt;/code&amp;gt; for url&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;a[href]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use that &amp;lt;code&amp;gt;[href]&amp;lt;/code&amp;gt; for url&lt;br /&gt;
** else if &amp;lt;code&amp;gt;.h-x&amp;gt;:only-child:not[.h-*]&amp;gt;area[href]:only-of-type:not[.h-*]&amp;lt;/code&amp;gt;, then use that &amp;lt;code&amp;gt;[href]&amp;lt;/code&amp;gt; for url&lt;br /&gt;
** if there is a gotten url value, return the normalized absolute URL of it, following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element, if any).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; The same markup for a property should not be causing that property to occur in &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; a microformat and one embedded inside - such a property should only be showing up on one of them. The parsing algorithm has details to prevent that, such as the &amp;lt;code&amp;gt;:not[.h-*]&amp;lt;/code&amp;gt; tests above.&lt;br /&gt;
&lt;br /&gt;
=== parse a hyperlink element for rel microformats ===&lt;br /&gt;
To parse a hyperlink element (e.g. a or link) for rel microformats: use the following algorithm or an algorithm that produces equivalent results:&lt;br /&gt;
* if the &amp;quot;rel&amp;quot; attribute of the element is empty then exit&lt;br /&gt;
* set url to the value of the &amp;quot;href&amp;quot; attribute of the element, normalized to be an absolute URL following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element if any).&lt;br /&gt;
* treat the &amp;quot;rel&amp;quot; attribute of the element as a space separate set of rel values&lt;br /&gt;
* for each rel value (rel-value)&lt;br /&gt;
** if there is no key rel-value in the rels hash then create it with an empty array as its value&lt;br /&gt;
** if url is not in the array of the key rel-value in the rels hash then add url to the array&lt;br /&gt;
* end for&lt;br /&gt;
* if there is no key with name url in the top-level &amp;quot;rel-urls&amp;quot; hash then add a key with name url there, with an empty hash value&lt;br /&gt;
* add keys to the hash of the key with name url for each of these attributes (if present) and key not already set:&lt;br /&gt;
** &amp;quot;hreflang&amp;quot;: the value of the &amp;quot;hreflang&amp;quot; attribute&lt;br /&gt;
** &amp;quot;media&amp;quot;: the value of the &amp;quot;media&amp;quot; attribute&lt;br /&gt;
** &amp;quot;title&amp;quot;: the value of the &amp;quot;title&amp;quot; attribute&lt;br /&gt;
** &amp;quot;type&amp;quot;: the value of the &amp;quot;type&amp;quot; attribute&lt;br /&gt;
** &amp;quot;text&amp;quot;: the text content of the element if any&lt;br /&gt;
* if there is no &amp;quot;rels&amp;quot; key in that hash, add it with an empty array value&lt;br /&gt;
* set the value of that &amp;quot;rels&amp;quot; key to an array of all unique items in the set of rel values unioned with the current array value of the &amp;quot;rels&amp;quot; key, sorted alphabetically.&lt;br /&gt;
&lt;br /&gt;
==== rel parse examples ====&lt;br /&gt;
Here are some examples to show how parsed rels may be reflected into the JSON (empty items key).&lt;br /&gt;
&lt;br /&gt;
E.g. parsing this markup:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;author&amp;quot; href=&amp;quot;http://example.com/a&amp;quot;&amp;gt;author a&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;author&amp;quot; href=&amp;quot;http://example.com/b&amp;quot;&amp;gt;author b&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;in-reply-to&amp;quot; href=&amp;quot;http://example.com/1&amp;quot;&amp;gt;post 1&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;in-reply-to&amp;quot; href=&amp;quot;http://example.com/2&amp;quot;&amp;gt;post 2&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;alternate home&amp;quot;&lt;br /&gt;
   href=&amp;quot;http://example.com/fr&amp;quot;&lt;br /&gt;
   media=&amp;quot;handheld&amp;quot;&lt;br /&gt;
   hreflang=&amp;quot;fr&amp;quot;&amp;gt;French mobile homepage&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Would generate this JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&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;author&amp;quot;: [ &amp;quot;http://example.com/a&amp;quot;, &amp;quot;http://example.com/b&amp;quot; ],&lt;br /&gt;
    &amp;quot;in-reply-to&amp;quot;: [ &amp;quot;http://example.com/1&amp;quot;, &amp;quot;http://example.com/2&amp;quot; ],&lt;br /&gt;
    &amp;quot;alternate&amp;quot;: [ &amp;quot;http://example.com/fr&amp;quot; ], &lt;br /&gt;
    &amp;quot;home&amp;quot;: [ &amp;quot;http://example.com/fr&amp;quot; ] &lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
    &amp;quot;http://example.com/a&amp;quot;: {&lt;br /&gt;
      &amp;quot;rels&amp;quot;: [&amp;quot;author&amp;quot;], &lt;br /&gt;
      &amp;quot;text&amp;quot;: &amp;quot;author a&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;http://example.com/b&amp;quot;: {&lt;br /&gt;
      &amp;quot;rels&amp;quot;: [&amp;quot;author&amp;quot;], &lt;br /&gt;
      &amp;quot;text&amp;quot;: &amp;quot;author b&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;http://example.com/1&amp;quot;: {&lt;br /&gt;
      &amp;quot;rels&amp;quot;: [&amp;quot;in-reply-to&amp;quot;], &lt;br /&gt;
      &amp;quot;text&amp;quot;: &amp;quot;post 1&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;http://example.com/2&amp;quot;: {&lt;br /&gt;
      &amp;quot;rels&amp;quot;: [&amp;quot;in-reply-to&amp;quot;], &lt;br /&gt;
      &amp;quot;text&amp;quot;: &amp;quot;post 2&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;http://example.com/fr&amp;quot;: {&lt;br /&gt;
      &amp;quot;rels&amp;quot;: [&amp;quot;alternate&amp;quot;, &amp;quot;home&amp;quot;],&lt;br /&gt;
      &amp;quot;media&amp;quot;: &amp;quot;handheld&amp;quot;, &lt;br /&gt;
      &amp;quot;hreflang&amp;quot;: &amp;quot;fr&amp;quot;, &lt;br /&gt;
      &amp;quot;text&amp;quot;: &amp;quot;French mobile homepage&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parse an img element for src and alt ===&lt;br /&gt;
To parse an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; element for &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attributes:&lt;br /&gt;
* if &amp;lt;code&amp;gt;img[alt]&amp;lt;/code&amp;gt;&lt;br /&gt;
** return a new &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; structure with&lt;br /&gt;
*** &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;: the element's &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute as a normalized absolute URL, following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element, if any).&lt;br /&gt;
*** &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt;: the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
* else&lt;br /&gt;
** return the element's &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute as a normalized absolute URL, following the containing document's language's rules for resolving relative URLs (e.g. in HTML, use the current URL context as determined by the page, and first &amp;lt;code&amp;gt;&amp;amp;lt;base&amp;amp;gt;&amp;lt;/code&amp;gt; element, if any).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== what do the CSS selector expressions mean ==&lt;br /&gt;
''This section is non-normative.''&lt;br /&gt;
&lt;br /&gt;
Use [http://gallery.theopalgroup.com/selectoracle/ SelectORacle] to expand any of the above CSS selector expressions into longform English prose.&lt;br /&gt;
&lt;br /&gt;
Exception:&lt;br /&gt;
* ''':not[.h-*]''' is not a valid CSS selector but is used here to mean:&lt;br /&gt;
** does not have any class names that start with &amp;quot;h-&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== note HTML parsing rules ==&lt;br /&gt;
''This section is non-normative.''&lt;br /&gt;
&lt;br /&gt;
microformats2 parsers are expected to follow HTML parsing rules, which includes for example:&lt;br /&gt;
* ignore &amp;lt;code&amp;gt;&amp;amp;lt;template&amp;amp;gt;&amp;lt;/code&amp;gt; elements - stuff between &amp;lt;code&amp;gt;&amp;amp;lt;template&amp;amp;gt;&amp;lt;/code&amp;gt; tags don't end up in the DOM&lt;br /&gt;
** test-case in the wild: http://sixtwothree.org/blog/now-accepting-webmentions/&lt;br /&gt;
&lt;br /&gt;
== note backward compatibility details ==&lt;br /&gt;
The parsing algorithm and details refer to &amp;quot;backcompat root classes&amp;quot; (backcompat roots for short) and &amp;quot;backcompat properties&amp;quot;. These conditions and steps in the algorithm document how to parse pre-microformats2 microformats which all defined their own specific root class names and explicit sets of properties.&lt;br /&gt;
&lt;br /&gt;
Some details to be aware of (which are explicitly in the algorithm, this is just an informal summary)&lt;br /&gt;
* If an element has one or more microformats2 root class name(s) (&amp;lt;code&amp;gt;h-*&amp;lt;/code&amp;gt;) &lt;br /&gt;
** all backcompat root class names are ignored on that element.&lt;br /&gt;
** all backcompat properties, without an intervening root class name, are ignored inside that element&lt;br /&gt;
* If an element has only a backcompat root class name (or names)&lt;br /&gt;
** all microformats2 property class names (p-* u-* dt-* e-*), without an intervening element with root class name, are ignored inside that element&lt;br /&gt;
** there is no implied property value parsing (p-name, u-url, u-photo) for that element&lt;br /&gt;
&lt;br /&gt;
=== backward compatibility mappings ===&lt;br /&gt;
Note: several parser implementations have encoded backward compatible mappings into source and data files. Implementers of parsers may find these useful:&lt;br /&gt;
* search for &amp;quot;modules.maps[&amp;quot; in https://github.com/glennjones/microformat-shiv/blob/master/microformat-shiv.js&lt;br /&gt;
* search for &amp;quot;$classicPropertyMap&amp;quot; in https://github.com/indieweb/php-mf2/blob/master/Mf2/Parser.php&lt;br /&gt;
* https://github.com/tommorris/mf2py/blob/master/mf2py/backcompat.py&lt;br /&gt;
&lt;br /&gt;
== questions ==&lt;br /&gt;
See the FAQ:&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;br /&gt;
&lt;br /&gt;
== implementations ==&lt;br /&gt;
{{main|microformats2#Implementations}}&lt;br /&gt;
There are open source [[microformats2#Implementations|microformats2 parsers]] available for Javascript, node.js, PHP, Ruby and Python.&lt;br /&gt;
&lt;br /&gt;
== test suite ==&lt;br /&gt;
See:&lt;br /&gt;
* https://github.com/microformats/tests&lt;br /&gt;
* https://github.com/indieweb/php-mf2/tree/master/tests/Mf2&lt;br /&gt;
&lt;br /&gt;
Ports to/for other languages encouraged.&lt;br /&gt;
&lt;br /&gt;
== change control ==&lt;br /&gt;
Minor editorial changes (e.g. fixing minor typos or punctuation) that do not change and preferably clarify the structure and existing intended meaning may be done by anyone without filing issues, requiring only a sufficient &amp;quot;Summary&amp;quot; description field entry for the edit. More than minor but still purely editorial changes may be made by an editor. Anyone may question such editorial changes by undoing corresponding edits without filing an issue. Any further reversion or iteration on such an editorial change must be done by filing an issue.&lt;br /&gt;
&lt;br /&gt;
Per the stable status of this document, substantive issue filing, resolution, and edits are done with the following change control steps, which may nearly all be done asynchronously once an issue is filed to reach the required state of &amp;quot;Resolve by implementation verified rough consensus&amp;quot;. All steps should be openly documented (e.g. on this wiki or GitHub issues) such that others may later verify the history of an issue, and all steps are encouraged to be announced on #microformats [[IRC]] with a link to the issue.&lt;br /&gt;
&lt;br /&gt;
* '''File an issue.''' Anyone may file a new [[microformats2-parsing-issues|issue]] and is encouraged to do so, with the caveat that per the stable status, only issues originating as a result of implementation experience are likely to have a substantive impact on this specification.&lt;br /&gt;
* '''Propose a resolution.''' Anyone may propose resolutions to existing issues, and should encourage others in the community, especially implementers, to provide feedback. Proposed resolutions should include what specific text of the spec needs changing, preferably with replacement text, and test cases if applicable (e.g. a resolution could just document the current state more precisely without needing to provide any new test cases).&lt;br /&gt;
* '''Provide feedback on proposed resolution(s).''' Anyone may provide feedback on proposed resolutions with their name attached, in summary (e.g. +1/0/-1 opinions), and additionally with reasoning (required for objections, optional otherwise), or optionally with suggested improvements, or counter-proposals (per &amp;quot;Propose a resolution&amp;quot; above).&lt;br /&gt;
* '''Iterate to resolve objections if any.''' If there are any objections to a proposed resolution, proposer(s) and anyone agreeing should work to iterate on the proposal to resolve objections to the satisfaction (or at least withdrawal of objection) of anyone objecting. The more objections resolved the better, and incremental progress is forward progress.&lt;br /&gt;
* '''Broaden implementer consensus.''' Proposer(s) and anyone agreeing should reach out (e.g. via #microformats [[IRC]]) to multiple implementers of the specification to get their opinions and feedback on proposal(s). The more implementers providing feedback the better. Iterate to resolve any new objections per &amp;quot;Iterate to resolve objections if any&amp;quot; above.&lt;br /&gt;
* '''Encourage and get 1+ implementation(s).''' Encourage, get, and document 1+ implementation(s) of implementation affecting aspects of a proposed resolution, preferably with a test case if applicable.&lt;br /&gt;
* '''Resolve by implementation verified rough consensus.''' Once there is rough consensus on a proposal (where &amp;lt;dfn&amp;gt;rough consensus&amp;lt;/dfn&amp;gt; means &amp;lt;strong&amp;gt;either no objections, or at a minimum no objections by implementers, and explicit positive opinions by 2+ implementers&amp;lt;/strong&amp;gt;) and a proposal's feasibility is verified by at least 1 implementation of aspects of the proposal that affect implementations (none needed if there are none, e.g. purely editorial), cite those in a &amp;quot;Resolution:&amp;quot; statement on the issue (e.g. in a comment), and explicitly share this resolution statement and link to issue in the #microformats [[IRC]] channel.&lt;br /&gt;
* '''Edit specification.''' Normally the spec editor(s) will make edits per implementation verified rough consensus resolutions, however anyone (though especially issue discussion participants) may make a specification edit per a resolution if they are able to verify the citations that the resolution has achieve rough consensus, and has 1+ implementation(s) per &amp;quot;Encourage and get 1+ implementation(s)&amp;quot; above. Edits must contain a &amp;quot;Summary&amp;quot; field entry that at a minimum mention the issue by name, should provide a URL to the issue resolution, and preferably be done by a spec editor or an implementer. Once the edit is made, the issue should be closed, or at least a comment made on the issue requesting that the opener of the issue close the issue.&lt;br /&gt;
&lt;br /&gt;
These change control steps are inspired by the tradition of &amp;quot;Rough consensus and running code&amp;quot; as exhibited by example by IETF and W3C processes, and in that regard, seek to be a philosophically compatible approach to specification iteration. They have been in rough practice since 2015-01-21, increasingly strictly applied since then with consensus of issue discussion participants, and explicitly documented based on issue resolving and spec editing experience.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;br /&gt;
* [[microformats2-parsing-issues]]&lt;br /&gt;
* [[microformats2-parsing-brainstorming]] - for background, thinking, exploring possibilities&lt;br /&gt;
* [[microformats2-parsing-rdf]]&lt;br /&gt;
* [[microformats2-implied-properties]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-card&amp;diff=70590</id>
		<title>h-card</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-card&amp;diff=70590"/>
		<updated>2022-11-30T23:42:04Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Fix: replaces deprecated &amp;lt;source&amp;gt; tag with &amp;lt;syntaxhighlight&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-card&amp;lt;/dfn&amp;gt; is a simple, open format for publishing people and organisations on the web. h-card is often used on home pages and individual blog posts. h-card is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-card is the [[microformats2]] update to [[hCard]].&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span id=&amp;quot;status&amp;quot;&amp;gt;Status&amp;lt;/span&amp;gt;&lt;br /&gt;
:This is a '''Living Specification''' yet mature enough to encourage additional implementations and [https://github.com/microformats/h-card/issues feedback].&lt;br /&gt;
;&amp;lt;span id=&amp;quot;participate&amp;quot;&amp;gt;Participate&amp;lt;/span&amp;gt;&lt;br /&gt;
:[https://github.com/microformats/h-card/issues Open Issues]&lt;br /&gt;
:[[IRC]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;p-author h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
;&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;&lt;br /&gt;
:&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;License&lt;br /&gt;
: {{cc0-owfa-license}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here are a couple of minimal examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;https://tantek.com/&amp;quot;&amp;gt;Tantek Çelik&amp;lt;/a&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name p-org u-url&amp;quot; href=&amp;quot;https://microformats.org/&amp;quot;&amp;gt;microformats.org&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&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;name&amp;quot;: [&amp;quot;Tantek Çelik&amp;quot;],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;https://tantek.com/&amp;quot;]&lt;br /&gt;
      }&lt;br /&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;name&amp;quot;: [&amp;quot;microformats.org&amp;quot;],&lt;br /&gt;
        &amp;quot;org&amp;quot;: [&amp;quot;microformats.org&amp;quot;],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;https://microformats.org/&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Note a single element was sufficient for the simple person example with implied name and URL properties, while for an organization, which requires a name and org, it needed explicit markup for the h-card and all properties, though still with only two elements.&lt;br /&gt;
&lt;br /&gt;
Nested h-card example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name u-url&amp;quot;&lt;br /&gt;
     href=&amp;quot;https://blog.lizardwrangler.com/&amp;quot; &lt;br /&gt;
    &amp;gt;Mitchell Baker&amp;lt;/a&amp;gt; &lt;br /&gt;
  (&amp;lt;a class=&amp;quot;p-org h-card&amp;quot; &lt;br /&gt;
      href=&amp;quot;https://mozilla.org/&amp;quot;&lt;br /&gt;
     &amp;gt;Mozilla Foundation&amp;lt;/a&amp;gt;)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&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;name&amp;quot;: [&amp;quot;Mitchell Baker&amp;quot;],&lt;br /&gt;
      &amp;quot;url&amp;quot;: [&amp;quot;https://blog.lizardwrangler.com/&amp;quot;],&lt;br /&gt;
      &amp;quot;org&amp;quot;: [{&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Mozilla Foundation&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;name&amp;quot;: [&amp;quot;Mozilla Foundation&amp;quot;],&lt;br /&gt;
          &amp;quot;url&amp;quot;: [&amp;quot;https://mozilla.org/&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
      }]&lt;br /&gt;
    }&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the nested h-card has implied 'name' and 'url' properties, just like any other root-class-name-only h-card on an &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; would.&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-card.&lt;br /&gt;
&lt;br /&gt;
For minimal examples where at most &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; are required (such as the first given above), only the root class name is needed — see [[microformats-2-implied-properties|implied properties]].&lt;br /&gt;
&lt;br /&gt;
When more than those three minimal properties are needed, the root class name must be placed on an element which encloses all the desired properties, and then the properties themselves marked up using the classnames given below.&lt;br /&gt;
&lt;br /&gt;
See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-card properties, inside an element with class '''h-card'''. All properties are optional and may be plural.&lt;br /&gt;
* See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:-.4em; float:right;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;Example h-card with common properties:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style:none&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''h-card'''&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style:none; margin-top:-.02em&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-name'''&amp;quot;&amp;amp;gt;Sally Ride&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-honorific-prefix'''&amp;quot;&amp;amp;gt;Dr.&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-given-name'''&amp;quot;&amp;amp;gt;Sally&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;abbr class=&amp;quot;'''p-additional-name'''&amp;quot;&amp;amp;gt;K.&amp;amp;lt;/abbr&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-family-name'''&amp;quot;&amp;amp;gt;Ride&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-honorific-suffix'''&amp;quot;&amp;amp;gt;Ph.D.&amp;amp;lt;/span&amp;amp;gt;,&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-nickname'''&amp;quot;&amp;amp;gt;sallykride&amp;amp;lt;/span&amp;amp;gt; (IRC)&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-org'''&amp;quot;&amp;amp;gt;Sally Ride Science&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;img class=&amp;quot;'''u-photo'''&amp;quot; src=&amp;quot;&amp;lt;nowiki&amp;gt;http://example.com/sk.jpg&amp;lt;/nowiki&amp;gt;&amp;quot;/&amp;amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;a class=&amp;quot;'''u-url'''&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://sally.example.com&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;w&amp;amp;lt;/a&amp;amp;gt;,&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;a class=&amp;quot;'''u-email'''&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;mailto:sally@example.com&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;e&amp;amp;lt;/a&amp;amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-tel'''&amp;quot;&amp;amp;gt;+1.818.555.1212&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-street-address'''&amp;quot;&amp;amp;gt;123 Main st.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-locality'''&amp;quot;&amp;amp;gt;Los Angeles&amp;amp;lt;/span&amp;amp;gt;, &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;abbr class=&amp;quot;'''p-region'''&amp;quot; title=&amp;quot;California&amp;quot;&amp;amp;gt;CA&amp;amp;lt;/abbr&amp;amp;gt;, &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-postal-code'''&amp;quot;&amp;amp;gt;91316&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-country-name'''&amp;quot;&amp;amp;gt;U.S.A&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;time class=&amp;quot;'''dt-bday'''&amp;quot;&amp;amp;gt;1951-05-26&amp;amp;lt;/time&amp;amp;gt; birthday&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-category'''&amp;quot;&amp;amp;gt;physicist&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-note'''&amp;quot;&amp;amp;gt;First American woman in space.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Core properties:&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - The full/formatted name of the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-prefix&amp;lt;/code&amp;gt;''' - e.g. Mrs., Mr. or Dr.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-given-name&amp;lt;/code&amp;gt;''' - given (often first) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-additional-name&amp;lt;/code&amp;gt;''' - other (e.g. middle) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-family-name&amp;lt;/code&amp;gt;''' - family (often last) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sort-string&amp;lt;/code&amp;gt;''' - string to sort by&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-suffix&amp;lt;/code&amp;gt;''' - e.g. Ph.D, Esq.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-nickname&amp;lt;/code&amp;gt;''' - nickname/alias/handle&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-email&amp;lt;/code&amp;gt;''' - email address&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt;''' - a logo representing the person or organization (e.g. a face icon)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;''' - a photo of the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - home page or other URL representing the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-uid&amp;lt;/code&amp;gt;''' - universally unique identifier, preferably canonical URL&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - category/tag&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt;''' - postal address, optionally embed an [[h-adr]] {{main|h-adr}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-post-office-box&amp;lt;/code&amp;gt;''' - post office box description if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-extended-address&amp;lt;/code&amp;gt;''' - apartment/suite/room name/number if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-street-address&amp;lt;/code&amp;gt;''' - street number + name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-locality&amp;lt;/code&amp;gt;''' - city/town/village&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-region&amp;lt;/code&amp;gt;''' - state/county/province&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-postal-code&amp;lt;/code&amp;gt;''' - postal code, e.g. US ZIP&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-country-name&amp;lt;/code&amp;gt;''' - country name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-label&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-geo&amp;lt;/code&amp;gt;''' or '''&amp;lt;code&amp;gt;u-geo&amp;lt;/code&amp;gt;''', optionally embed an [[h-geo]] {{main|h-geo}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-latitude&amp;lt;/code&amp;gt;''' - decimal latitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-longitude&amp;lt;/code&amp;gt;''' - decimal longitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-altitude&amp;lt;/code&amp;gt;''' - decimal altitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tel&amp;lt;/code&amp;gt;''' - telephone number&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-note&amp;lt;/code&amp;gt;''' - additional notes&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-bday&amp;lt;/code&amp;gt;''' - birth date&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-key&amp;lt;/code&amp;gt;''' - cryptographic public key e.g. SSH or GPG&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-org&amp;lt;/code&amp;gt;''' - affiliated organization, optionally embed an [[h-card]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-job-title&amp;lt;/code&amp;gt;''' - job title, previously 'title' in [[hCard]], disambiguated.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-role&amp;lt;/code&amp;gt;''' - description of role &lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-impp&amp;lt;/code&amp;gt;''' per RFC4770, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sex&amp;lt;/code&amp;gt;''' - biological sex, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-gender-identity&amp;lt;/code&amp;gt;''' - gender identity, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-anniversary&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Experimental properties currently in use in the wild but not (yet) part of the official h-card spec.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-sound&amp;lt;/code&amp;gt;''' - sound file containing the proper pronunciation of the name property, per vCard (RFC 6350).&lt;br /&gt;
** Used by [https://vanderven.se/martijn/ Martijn van der Ven] with a clip of his given name.&lt;br /&gt;
** Needs a GitHub issue to track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-card''' is a microformats.org draft specification. Public discussion on h-card takes place on the [[irc|#microformats channel on irc.freenode.net]] ([https://chat.indieweb.org/microformats view recent discussions]), and specific issues [https://github.com/microformats/h-card/issues may be filed on GitHub].&lt;br /&gt;
&lt;br /&gt;
h-card is ready to use and implemented in the wild. For backwards compatibility you should also mark up top-level h-cards as classic [[hCard]]s.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
(stub, to be expanded)&lt;br /&gt;
&lt;br /&gt;
=== p-adr ===&lt;br /&gt;
&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt; can optionally embed an [[h-adr]] to cluster associated structured address properties. E.g. adding &amp;quot;p-adr&amp;quot; to the example earlier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-name&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-street-address&amp;quot;&amp;gt;17 Austerstræti&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-locality&amp;quot;&amp;gt;Reykjavík&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-country-name&amp;quot;&amp;gt;Iceland&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Why would you use &amp;quot;p-adr&amp;quot; to cluster associated structured address properties?&lt;br /&gt;
&lt;br /&gt;
A: Because if you have more than one structured address, clustering which properties go with which address keeps them deterministically together, instead of depending on array indices or other heuristics.&lt;br /&gt;
&lt;br /&gt;
=== p-tel ===&lt;br /&gt;
Note: use of 'value' within 'p-tel' should be automatically handled by the support of the [[value-class-pattern]]. And for now, the former [[hCard]] 'type' subproperty of 'tel' is dropped/ignored. If there is demonstrable documented need for additional tel types (e.g. fax), we can introduce new flat properties as needed (e.g. p-tel-fax).&lt;br /&gt;
&lt;br /&gt;
=== dt-bday ===&lt;br /&gt;
Using truncated representations of dates for birth date is often good practice as noted in [https://tools.ietf.org/html/rfc6350#section-4.3.1 the vcard spec] eg&lt;br /&gt;
* &amp;lt;code&amp;gt;1985-04&amp;lt;/code&amp;gt; for April 1985&lt;br /&gt;
* &amp;lt;code&amp;gt;1985&amp;lt;/code&amp;gt; for the year 1985&lt;br /&gt;
* &amp;lt;code&amp;gt;--04-12&amp;lt;/code&amp;gt; for April 12th with no specified year&lt;br /&gt;
&lt;br /&gt;
=== Reserved properties ===&lt;br /&gt;
The following properties were supported by the legacy hCard format, but were not carried over to h-card due to lack of real-world usage, or other problems. They are not part of h-card and should not be published, consumed, or proposed.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-unit&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tz&amp;lt;/code&amp;gt;''' — timezone offset&lt;br /&gt;
** &amp;lt;q&amp;gt;it's going to be a hard one to &amp;quot;get right&amp;quot;, as the way timezones work in vcard/ical is very weird, and timezones as a whole are an iffy thing to denote (quite the disconnect between complexity, automated processing ability, actually representing what a user would want to show/display or already does on their homepage, and actually representing something useful to parse and do something with)&amp;lt;/q&amp;gt;&lt;br /&gt;
** &amp;lt;q&amp;gt;there's certainly no ecosystem of publishers &amp;amp; consumers supporting p-tz in any meaningful interoperable way&amp;lt;/q&amp;gt; — [https://chat.indieweb.org/microformats/2021-06-22/1624385751126500 tantek in #microformats]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-rev&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
See also: [https://indieweb.org/h-card#IndieWeb_Examples h-card Examples on indieweb.org]&lt;br /&gt;
&lt;br /&gt;
Real world in the wild examples of sites and services that publish or consume h-card:&lt;br /&gt;
&lt;br /&gt;
* ... add uses of h-card you see in the wild here.&lt;br /&gt;
* [http://www.securityjobslondon.co.uk Security Jobs London] uses h-card with legacy [[hCard]] fallback markup (to satisfy [https://search.google.com/structured-data/testing-tool Google's Structured Data Testing Tool]) in the footer of each page&lt;br /&gt;
* Brett Comnes marks up his posts with h-card ([http://bret.io/2013/06/29/getting-started-with-bower/ example])&lt;br /&gt;
* Ben Werdmuller marks up his homepage and posts with h-card [http://werd.io/view/51d5097fbed7ded0633a5956 example])&lt;br /&gt;
* [https://joelpurra.com/ Joel Purra] uses a hidden h-card with legacy [[hCard]] fallback markup (to satisfy [https://search.google.com/structured-data/testing-tool Google's Structured Data Testing Tool]) on the front page&lt;br /&gt;
* [http://eschnou.com/ Laurent Eschenauer] marks his homepage profile up using h-card&lt;br /&gt;
* [http://tommorris.org/ Tom Morris] marks himself up with h-card as well as venues he’s checked into ([http://tommorris.org/posts/8408 example])&lt;br /&gt;
* [https://www.w3.org/conf/ W3Conf 2013] uses h-card for all the event speakers and notable attendees. The h-cards make particularly good use of implied name, url, and photo properties.&lt;br /&gt;
* [http://wordpress.org/extend/themes/sempress SemPress] is a WordPress theme that supports h-card, h-feed/h-entry and h-as-*&lt;br /&gt;
* [http://the-pastry-box-project.net/ The Pastry Box Project] use h-card markup on their homepage and individual thoughts pages&lt;br /&gt;
* Tom Morris uses h-card and [[XFN]] to markup [http://tommorris.org/pages/blogroll his blogroll].&lt;br /&gt;
* Aaron Parecki uses h-card to markup both authorship and references to people in his notes permalinks, e.g. [https://aaronparecki.com/2012/230/reply/1 2012/230/reply/1].&lt;br /&gt;
* [https://tantek.com/ Tantek Çelik] uses h-card  on his home page as well as within [[h-entry]]s on permalink pages to indicate authorship.&lt;br /&gt;
* [http://waterpigs.co.uk/ Barnaby Walters] uses h-card on his home page, as well as within h-entries for notes and articles, both to indicate authorship and also when mentioning people within the body of the notes.&lt;br /&gt;
* [https://tantek.com/presentations/2012/06/microformats microformats.org at 7 years] presentation with and h-card markup for people and organizations.&lt;br /&gt;
* [https://tantek.com/presentations/2012/06/pdf2012-indieweb.html Rise of the Indie Web hCards] (from Personal Democracy Forum 2012 #pdf12 #pdf2012) has [[microformats2]] h-card markup&lt;br /&gt;
* WebMaker by Mozilla has [[microformats2]] h-card on event search (e.g. [https://webmaker.org/en-US/events/near/?lat=45.5234515&amp;amp;lng=-122.6762071 search near Portland Oregon]) and event pages (e.g. [https://webmaker.org/en-US/events/192f56eb9/ IndieWebCamp 2012]).[https://twitter.com/microformats/status/212207925643587585]&lt;br /&gt;
* WebFWD by Mozilla has [[microformats2]] h-card markup on [https://webfwd.org/about/experts/ experts] and [https://webfwd.org/about/team/ team] pages&lt;br /&gt;
* [https://indiewebcamp.com IndieWebCamp] has [[microformats2]] h-event markup with embedded h-cards for the organizers and the location.&lt;br /&gt;
* [https://wiki.mozilla.org/Events Mozilla Events] page has [[microformats2]] h-event markup with attendees marked up with h-card.&lt;br /&gt;
* [https://tristanthomas.me Tristan Thomas] uses h-card on his home page&lt;br /&gt;
* [http://cold32.com/about-the-author-and-contact.htm Cold32.com] uses h-card (and h-geo) on its about-the-author-and-contact page&lt;br /&gt;
* [https://workfrom.co/ Workfrom.co] renders h-cards for venues (e.g. [https://workfrom.co/palio-dessert-and-espresso-house])&lt;br /&gt;
* [http://www.pcwdld.com/ PCWDLD.com] renders h-cards for download pages(e.g. [http://www.pcwdld.com/solarwinds-network-topology-mapper-review Download page example])&lt;br /&gt;
&lt;br /&gt;
=== offline ===&lt;br /&gt;
* spreadly marks up share permalink pages with minimal h-cards inside h-entry&lt;br /&gt;
* App.net rolled out support for h-card and h-entry on all profile pages and permalink pages as of 2013-08-06 ([https://alpha.app.net/voidfiles example])&lt;br /&gt;
* Sandeep Shetty marks his homepage and posts up with h-card and h-entry ([https://sandeep.io/101 example])&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
* '''[https://indiewebify.me/validate-h-card/ indiewebify.me h-card validator]''' parses [[h-card]] markup and makes suggestions for things to add, with code samples&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
Software implementations that publish or consume h-card, including themes, plugins, or extensions:&lt;br /&gt;
&lt;br /&gt;
(This section is a stub that needs expansion! In practice, nearly every CMS on every [https://indieweb.org/ indie web] site supports publishing h-card by default, and most sites which support receiving webmentions parse h-card for authorship data.)&lt;br /&gt;
&lt;br /&gt;
When adding an implementation, please provide and link to its home page and open source repo if any.&lt;br /&gt;
* [https://gnu.io/social/ GNUsocial] [https://git.gnu.io/gnu/gnu-social/ source code]&lt;br /&gt;
* [https://hubzilla.org/hubzilla/ Hubzilla] [https://github.org/redmatrix/hubzilla source code]&lt;br /&gt;
* [http://friendica.com/ Friendica] [https://github.org/friendica/friendica source code]&lt;br /&gt;
* [https://github.com/dissolve/inkblot InkBlot]&lt;br /&gt;
* [https://aperture.p3k.io/ Aperture] consumes h-card to show authorship information of feed posts ([https://github.com/aaronpk/Aperture/ source code])&lt;br /&gt;
* [https://xray.p3k.app/ XRay] consumes h-card and flattens it into a more minimal format ([https://github.com/aaronpk/XRay/ source code])&lt;br /&gt;
* [https://withknown.com/ Known] publishes and consumes h-card to show authorship of posts and responses&lt;br /&gt;
* [https://brid.gy/ Bridgy] publishes microformats-2 versions of siloed content (including h-card for authorship) for consumption by mf2-consumers&lt;br /&gt;
* [https://webmention.io/ webmention.io] consumes h-card for authorship data of incoming webmentions which it accepts on behalf of other sites&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
For backward compatibility, you may wish to use classic [[hCard]] classnames in addition to the more future-proof h-card properties, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/span&amp;gt;,&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-org org&amp;quot;&amp;gt;Awesome Nonprofit&amp;lt;/span&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;''' is a ''backward compatible root class name'' that indicates the presence of an [[hCard]].&lt;br /&gt;
&lt;br /&gt;
'''fn''', '''org''', and all the other backward compatibility hCard property class names are listed below.&lt;br /&gt;
&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers {{should}} detect classic properties only if a classic root class name is found and parse them as microformats2 properties. &lt;br /&gt;
&lt;br /&gt;
If an &amp;quot;h-card&amp;quot; is found, don't look for a &amp;quot;vcard&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
Compat. root class name: &amp;lt;code id=&amp;quot;vcard&amp;quot;&amp;gt;vcard&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Properties: (parsed as '''p-''' plain text unless otherwise specified)&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-prefix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;given-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;additional-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;family-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-suffix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nickname&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;logo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;uid&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-adr h-adr&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;extended-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;street-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;locality&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;region&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;postal-code&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;country-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-geo h-geo&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;latitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;longitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - parse as '''p-job-title'''&lt;br /&gt;
* &amp;lt;code&amp;gt;role&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reserved: (backward compat properties that parsers {{may}} implement, if they do, they {{must}} implement in this way:&lt;br /&gt;
* &amp;lt;code&amp;gt;tz&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
This work is based on the existing [[hCard]] and [[vcard]] specifications.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
(stub, expand)&lt;br /&gt;
&lt;br /&gt;
== Additions ==&lt;br /&gt;
We've tried very hard with h-card to stay compatible with the vCard4 vocabulary, and thus additions should be proposed on the vCard4 mailing list.&lt;br /&gt;
&lt;br /&gt;
However, you may still use this wiki to capture additions for h-card here:&lt;br /&gt;
* [[h-card-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[h-adr]]&lt;br /&gt;
* [[h-geo]]&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=svg&amp;diff=70589</id>
		<title>svg</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=svg&amp;diff=70589"/>
		<updated>2022-11-30T23:34:53Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Fix: replaces deprecated &amp;lt;source&amp;gt; tag with &amp;lt;syntaxhighlight&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
The [https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/class class attribute is allowed on SVG elements]. As such, there are rich possibilities for embedding microformats with or in them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=html&amp;gt;&lt;br /&gt;
&amp;lt;svg class=&amp;quot;h-card&amp;quot; viewBox=&amp;quot;0 0 200 200&amp;quot; height=&amp;quot;200&amp;quot; width=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;50%&amp;quot; cy=&amp;quot;50%&amp;quot; r=&amp;quot;100&amp;quot; fill=&amp;quot;gold&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text class=&amp;quot;p-name&amp;quot; x=&amp;quot;25&amp;quot; y=&amp;quot;110&amp;quot; font-size=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        Example Co.&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* https://btrem.com/2021/04-svg-microformats&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=svg&amp;diff=70588</id>
		<title>svg</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=svg&amp;diff=70588"/>
		<updated>2022-11-30T22:40:03Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Adds simple example of microformats in svg.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
The [https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/class class attribute is allowed on SVG elements]. As such, there are rich possibilities for embedding microformats with or in them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html&amp;gt;&lt;br /&gt;
&amp;lt;svg class=&amp;quot;h-card&amp;quot; viewBox=&amp;quot;0 0 200 200&amp;quot; height=&amp;quot;200&amp;quot; width=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;50%&amp;quot; cy=&amp;quot;50%&amp;quot; r=&amp;quot;100&amp;quot; fill=&amp;quot;gold&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text class=&amp;quot;p-name&amp;quot; x=&amp;quot;25&amp;quot; y=&amp;quot;110&amp;quot; font-size=&amp;quot;30&amp;quot;&amp;gt;&lt;br /&gt;
        Example Co.&lt;br /&gt;
    &amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* https://btrem.com/2021/04-svg-microformats&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-recipe&amp;diff=70586</id>
		<title>h-recipe</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-recipe&amp;diff=70586"/>
		<updated>2022-11-29T23:32:40Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Core Properties */ spelling correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:h-recipe}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-recipe&amp;lt;/dfn&amp;gt; is a simple, open format for publishing recipes on the web. h-recipe is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-recipe is the [[microformats2]] update to [[hRecipe]].&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here is a simple minimal recipe example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-recipe&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;Bagels&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;p-ingredient&amp;quot;&amp;gt;Flour&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;p-ingredient&amp;quot;&amp;gt;Sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;p-ingredient&amp;quot;&amp;gt;Yeast&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;p&amp;gt;Takes &amp;lt;time class=&amp;quot;dt-duration&amp;quot; datetime=&amp;quot;1H&amp;quot;&amp;gt;1 hour&amp;lt;/time&amp;gt;,&lt;br /&gt;
     serves &amp;lt;data class=&amp;quot;p-yield&amp;quot; value=&amp;quot;4&amp;quot;&amp;gt;four people&amp;lt;/data&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-instructions&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Start by mixing all the ingredients together.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&lt;br /&gt;
        &amp;quot;h-recipe&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&lt;br /&gt;
          &amp;quot;Bagels&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;ingredient&amp;quot;: [&lt;br /&gt;
          &amp;quot;Flour&amp;quot;,&lt;br /&gt;
          &amp;quot;Sugar&amp;quot;,&lt;br /&gt;
          &amp;quot;Yeast&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;yield&amp;quot;: [&lt;br /&gt;
          &amp;quot;4&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;instructions&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Start by mixing all the ingredients together.&amp;quot;,&lt;br /&gt;
            &amp;quot;html&amp;quot;: &amp;quot;&amp;lt;ol&amp;gt;       &amp;lt;li&amp;gt;Start by mixing all the ingredients together.&amp;lt;/li&amp;gt;     &amp;lt;/ol&amp;gt;&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-recipe.&lt;br /&gt;
&lt;br /&gt;
'''p-name''', '''e-instructions''', '''p-ingredient''' and the other property classnames listed below define elements as ''properties'' of the h-recipe.&lt;br /&gt;
&lt;br /&gt;
See [[microformats-2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
=== Core Properties === &lt;br /&gt;
&lt;br /&gt;
The following core h-entry properties have broad consensus and are broadly interoperably published and consumed: &lt;br /&gt;
&lt;br /&gt;
h-recipe properties, inside an element with class '''h-recipe''':&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - the name of the recipe&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-ingredient&amp;lt;/code&amp;gt;''' - describes one or more ingredients used in the recipe.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-yield&amp;lt;/code&amp;gt;''' - Specifies the quantity produced by the recipe, like how many persons it satisfies &lt;br /&gt;
* '''&amp;lt;code&amp;gt;e-instructions&amp;lt;/code&amp;gt;''' - the method of the recipe.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-duration&amp;lt;/code&amp;gt;''' - the time it takes to prepare the meal described by the recipe.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;''' - an accompanying image&lt;br /&gt;
&lt;br /&gt;
=== Experimental properties with wide adoption ===&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-summary&amp;lt;/code&amp;gt;'''  - provides a short summary or introduction &lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''' - person who wrote the recipe, optionally embedded with &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; {{main|h-card}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;''' - the date the recipe was published&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-nutrition&amp;lt;/code&amp;gt;''' - nutritional information like calories, fat, dietary fiber etc.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - recipe categories/tags&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Proposed properties ===&lt;br /&gt;
&lt;br /&gt;
The following properties are proposed additions based on various use-cases but are awaiting citations of use across multiple sites in the wild, and at least one reader / real world consuming code example:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code id=&amp;quot;u-remix-of&amp;quot;&amp;gt;u-remix-of&amp;lt;/code&amp;gt;''' - the URL which the h-entry is considered a “remix” of. Optionally an embedded [[h-cite]]. The purpose of this in an h-recipe is to identify that this recipe is a remix, or based on another recipe, and giving appropriate citation to that individual. In theory, if this was an exact copy, the u-repost-of used in h-entry would apply.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
'''h-recipe''' is a microformats.org draft specification. Public discussion on h-recipe takes place on [[h-recipe-feedback]] and the #microformats [[irc]] channel on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
h-recipe is ready to use and implemented in the wild, but for backwards compatibility you should also mark h-recipes up with classic [[hRecipe]] classnames.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
&lt;br /&gt;
(stub, add any property explanations here)&lt;br /&gt;
&lt;br /&gt;
'''dt-duration''' should be marked up using the [http://developers.whatwg.org/common-microsyntaxes.html#durations duration] microsyntax defined in HTML5. TODO: add more examples&lt;br /&gt;
&lt;br /&gt;
[[hRecipe]] has a number of experimental properties which have real world adoption due to [[Google]] recipe search support of hRecipe. These are: summary, author, published and nutrition.&lt;br /&gt;
&lt;br /&gt;
== Examples in the Wild ==&lt;br /&gt;
* [http://www.eliduke.com Eli Duke] has posted some h-[http://www.eliduke.com/recipes recipes] on his site:&lt;br /&gt;
** http://www.eliduke.com/recipes/kale-salad&lt;br /&gt;
** http://www.eliduke.com/recipes/hummus&lt;br /&gt;
** http://www.eliduke.com/recipes/wacky-cake&lt;br /&gt;
** http://www.eliduke.com/recipes/vegan-mac-and-cheese&lt;br /&gt;
&lt;br /&gt;
* [https://cleverdevil.io Jonathan LaCour] has created several h-[http://cleverdevil.io/content/recipes recipes] using his Known plugin on his site:&lt;br /&gt;
** https://cleverdevil.io/2015/kentucky-maid-cocktail&lt;br /&gt;
&lt;br /&gt;
* [https://makeitperfectly.com Perfect Company] marks up their recipes with h-recipe:&lt;br /&gt;
** https://makeitperfectly.com/drink/recipes/1a1913f6-6ba2-11e5-a3ed-f372faffcfa4&lt;br /&gt;
** https://makeitperfectly.com/bake/recipes/194a6cea-6ba2-11e5-a3ed-8367b69ac326&lt;br /&gt;
&lt;br /&gt;
* [https://aaronparecki.com/recipes Aaron Parecki] has several recipes on his website&lt;br /&gt;
** https://aaronparecki.com/2020/06/01/19/banana-bread&lt;br /&gt;
** https://aaronparecki.com/2018/12/25/8/habanero-sauce&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
This section is '''informative'''. &lt;br /&gt;
&lt;br /&gt;
Tools for generating and consuming h-recipe. When it gets too big we can move it to a separate page like [[h-recipe-implementations]].&lt;br /&gt;
&lt;br /&gt;
Consuming h-recipe (sites and tools that consume and do something with h-recipe)&lt;br /&gt;
* [https://developers.pinterest.com/docs/rich-pins/recipes/ Pinterest] supports h-recipe to create &amp;quot;rich pins&amp;quot;&lt;br /&gt;
* ... (stub)&lt;br /&gt;
&lt;br /&gt;
Generating h-recipe (sites and tools that help produce and publish h-recipe)&lt;br /&gt;
* [https://github.com/cleverdevil/Known-Recipes Recipe post generator for Known CMS] by [https://cleverdevil.io Jonathan LaCour].&lt;br /&gt;
&lt;br /&gt;
Advocacy - open source and other implementations which would benefit from h-recipe support or some degree of support has been requested - feel free to help implement these.&lt;br /&gt;
* OpenRecipes [https://github.com/fictivekin/openrecipes/issues/198 issue 198] feature request: update spider to parse for the original hRecipe microformat, and the new h-recipe microformats2 update&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
(stub)&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers {{should}} detect classic properties only if a classic root class name is found and parse them as microformats2 properties. &lt;br /&gt;
&lt;br /&gt;
If an &amp;quot;h-recipe&amp;quot; is found, don't look for an &amp;quot;hrecipe&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
compat root class name: &amp;lt;code id=&amp;quot;hrecipe&amp;quot;&amp;gt;hrecipe&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
properties: (parsed as '''p-''' plain text unless otherwise specified)&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;ingredient&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;instructions&amp;lt;/code&amp;gt; - parse as '''e-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;duration&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt;  - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;summary&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; - including compat root &amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt; in the absence of &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nutrition&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rel=tag&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;'''. While not a class name nor typical microformats property, rel=tag was the typical way to tag an hrecipe. Thus parsers should look for rel=tag hyperlinks inside an hrecipe, and take the last path segment of their &amp;quot;href&amp;quot; value as a value for a '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' property.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
h-recipe is based on the existing [[hRecipe]] specification.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[h-recipe-feedback]]&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[h-card]] can be embedded in h-recipe&lt;br /&gt;
* [[hRecipe]] is the classic microformat replaced by h-recipe&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=comment-brainstorming&amp;diff=70531</id>
		<title>comment-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=comment-brainstorming&amp;diff=70531"/>
		<updated>2022-07-13T22:58:05Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Distinction between Comment and List of Comments */ Grammatical correction.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Brainstorming for a Comment Microformat}}&lt;br /&gt;
&lt;br /&gt;
{{instead|https://indieweb.org/reply and https://indieweb.org/comments}}&lt;br /&gt;
&lt;br /&gt;
This is a brainstorm for comment microformat.  Examples of a comment can be found here [[comment-examples]]&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
Shortform: How do you publish comments on your own site, and how do you publish comments others have made on your posts?&lt;br /&gt;
&lt;br /&gt;
Longform: How do you publish your own comments, others' comments on your stuff, and how do you track comments? How do you track the comments you have made on blogs, comments made on blogs you're interested in and comments other people have made on your own blog? &lt;br /&gt;
&lt;br /&gt;
How can you do this in a pragmatic way, ingested into some kind of data store, searched or aggregated?&lt;br /&gt;
&lt;br /&gt;
== Distinction between Comment and List of Comments ==&lt;br /&gt;
Ideally, each comment/reply should have its own permalink page, but also get copied into the markup of the post it's in reply to. Should the markup of the two cases differ? We should be able to solve both problems by extending &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt; a little.&lt;br /&gt;
&lt;br /&gt;
* A reply on its own page is just another h-entry. The presence of u-in-reply-to implies its a reply (of a sort, could also be a special reply like an RSVP).&lt;br /&gt;
* If a comment does have its own permalink page and also copied to a list of comments on a post, it should likely be marked up as an [[h-cite]] in the list of comments, and link to its canonical copy on its own page.&lt;br /&gt;
* If a comment only exists as part of a list of comments, then using [[h-entry]] for it there seems fine, since that's likely the (only?) canonical copy of the comment. [[User:Tantek|Tantek]] 21:27, 12 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Discovered Elements ==&lt;br /&gt;
&lt;br /&gt;
Based on the analysis of 25 real world examples of a comment, the results can be found at the [[comment-examples#Analysis| Comment Analysis]] section&lt;br /&gt;
&lt;br /&gt;
The following properties occur most regularly across all examples (84% or more)&lt;br /&gt;
&lt;br /&gt;
* comment 100%&lt;br /&gt;
* author 96%&lt;br /&gt;
* published 96%&lt;br /&gt;
* author-url 84%&lt;br /&gt;
&lt;br /&gt;
'''Other achievable elements'''&lt;br /&gt;
&lt;br /&gt;
* comment-link (permalink) 60%&lt;br /&gt;
&lt;br /&gt;
== microformats2 p-comment h-entry ==&lt;br /&gt;
&lt;br /&gt;
For publishing others' comments on your posts, including syndicating in others' comment posts onto your posts:&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
How to:&lt;br /&gt;
* post h-entry with property &amp;lt;code&amp;gt;p-comment h-entry&amp;lt;/code&amp;gt; (child) for a comment&lt;br /&gt;
* one such &amp;lt;code&amp;gt;p-comment h-entry&amp;lt;/code&amp;gt; per comment&lt;br /&gt;
* each comment should have an ID attribute and a &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt; permalink inside&lt;br /&gt;
** maybe with &amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt; on same element or child &amp;lt;code&amp;gt;&amp;amp;lt;time&amp;gt;&amp;lt;/code&amp;gt; element&lt;br /&gt;
** if comment was syndicated in, link to original with &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt; rather than local ID.&lt;br /&gt;
* &amp;lt;code&amp;gt;u-in-reply-to&amp;lt;/code&amp;gt; on the child comments so they can be easily extracted out of context&lt;br /&gt;
** e.g. a simple &amp;lt;code&amp;gt;&amp;amp;lt;a href=&amp;quot;&amp;quot; class=&amp;quot;u-in-reply-to&amp;quot;&amp;gt;&amp;amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; inside the &amp;lt;code&amp;gt;p-comment h-entry&amp;lt;/code&amp;gt; would connect the context of the page URL (post permalink) as what is being replied to.&lt;br /&gt;
* &amp;lt;code&amp;gt;p-content&amp;lt;/code&amp;gt; for the contents of plain text comments&lt;br /&gt;
** &amp;lt;code&amp;gt;e-content&amp;lt;/code&amp;gt; if you trust the markup from others' comments (or your comment entry HTML stripping/simplifying code)&lt;br /&gt;
* explicit &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt; markup either the whole p-content of the comment, or perhaps the first sentence as a simple abbreviation (perhaps useful for syndicating the comments into a feed).&lt;br /&gt;
* should have &amp;lt;code&amp;gt;p-author h-card&amp;lt;/code&amp;gt; for the comment author&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* no need for h-feed because p-comment property value can already be an array&lt;br /&gt;
* any consumer of the comments can decide sort order for themselves, i.e.&lt;br /&gt;
** published order (order in the p-comment array)&lt;br /&gt;
** chronological order by dt-published of the p-comment h-entry elements&lt;br /&gt;
** or reverse chronological order using the same&lt;br /&gt;
* No real need for h-comment on the child h-entries as h-entry already covers everything a comment needs&lt;br /&gt;
*** and simply adding  &amp;lt;code&amp;gt;u-in-reply-to&amp;lt;/code&amp;gt; isn't really sufficient to justify the overhead/complexity of a new root microformat &amp;quot;h-comment&amp;quot;&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;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;A Blog Post&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  •••&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-comment h-entry&amp;quot; id=&amp;quot;comment-1&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;&amp;quot; class=&amp;quot;u-in-reply-to&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=...&amp;gt;&amp;lt;img alt=author1 src=...&amp;gt;&amp;lt;/a&amp;gt; &lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-name p-content&amp;quot;&amp;gt;The First Comment&amp;lt;/span&amp;gt;&lt;br /&gt;
    (&amp;lt;a class=&amp;quot;u-url dt-published&amp;quot; href=&amp;quot;#comment-1&amp;quot;&amp;gt;YYYY-DD-MM HH:MM&amp;lt;/a&amp;gt;)&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-comment h-entry&amp;quot; id=&amp;quot;comment-2&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;&amp;quot; class=&amp;quot;u-in-reply-to&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=...&amp;gt;&amp;lt;img alt=author2 src=...&amp;gt;&amp;lt;/a&amp;gt; &lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-name p-content&amp;quot;&amp;gt;The Second Comment&amp;lt;/span&amp;gt;&lt;br /&gt;
    (&amp;lt;a class=&amp;quot;u-url dt-published&amp;quot; href=&amp;quot;#comment-2&amp;quot;&amp;gt;YYYY-DD-MM HH:MM&amp;lt;/a&amp;gt;)&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  •&lt;br /&gt;
  •&lt;br /&gt;
  •&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Questions ===&lt;br /&gt;
==== Use case for same page u-in-reply-to ====&lt;br /&gt;
Q: What is the use-case for the same page u-in-reply-to?&lt;br /&gt;
&lt;br /&gt;
A: The use-case for the same page u-in-reply-to is applications/sites that may subscribe to the comments as a feed, perhaps mix them in with other comments/entries. Having an explicit u-in-reply-to makes the comment portable. It's not critical, but it is also a simple/good pattern that encourages extracted data to be self-contained in general.&lt;br /&gt;
&lt;br /&gt;
* Note: this use-case is currently theoretical, no one is actually doing or asking to do this yet. [[User:Tantek|Tantek]] 20:09, 12 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
Note simplifications from [[#microformats2_h-feed_p-comments|microformats2 h-feed p-comments proposal]]:&lt;br /&gt;
* no &amp;lt;code&amp;gt;h-feed&amp;lt;/code&amp;gt;&lt;br /&gt;
* one fewer div / less hierarchy than proposal above&lt;br /&gt;
&lt;br /&gt;
== microformats2 h-feed p-comments ==&lt;br /&gt;
&lt;br /&gt;
For publishing others' comments on your posts:&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
&lt;br /&gt;
* h-entry with child &amp;lt;code&amp;gt;h-feed p-comments&amp;lt;/code&amp;gt;&lt;br /&gt;
** h-feed because it’s a bunch of h-entries in (reverse) chronological order&lt;br /&gt;
** p-comments to explicitly declare the children as comments, expose array on &amp;lt;code&amp;gt;hEntryObject.comments&amp;lt;/code&amp;gt;&lt;br /&gt;
** No real need for h-comment on the child h-entries as h-entry already covers everything a comment needs&lt;br /&gt;
* Each comment should have an ID attribute and a &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;&lt;br /&gt;
* Perhaps &amp;lt;code&amp;gt;u-in-reply-to&amp;lt;/code&amp;gt; on the child comments so they can be taken out of context and still used?&lt;br /&gt;
** Where would it go in markup?&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;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;A Blog Post&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  •••&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;div class=&amp;quot;h-feed p-comments&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;h-entry&amp;quot; id=&amp;quot;comment-1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h2 class=&amp;quot;p-name&amp;quot;&amp;gt;The First Comment&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;h-entry&amp;quot; id=&amp;quot;comment-2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h2 class=&amp;quot;p-name&amp;quot;&amp;gt;The Second Comment&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    •&lt;br /&gt;
    •&lt;br /&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;
* -1 for too much markup compared to .h-entry &amp;gt; .h-entry.p-comment --[[User:Barnabywalters|bw]] 09:54, 13 May 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== older pre-microformats2 proposals ==&lt;br /&gt;
&lt;br /&gt;
=== Schema I ===&lt;br /&gt;
Proposal:&lt;br /&gt;
* '''hentry''' (root class name)&lt;br /&gt;
** The &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt; element represents an individual entry for a comment.&lt;br /&gt;
**# http://microformats.org/wiki/hatom#Entry&lt;br /&gt;
&lt;br /&gt;
* '''author''' (author) 96%&lt;br /&gt;
**  an Entry Author element {{must}} be encoded in a [[hcard|hCard]]&lt;br /&gt;
**# http://microformats.org/wiki/hatom#Entry_Author&lt;br /&gt;
&lt;br /&gt;
* '''url''' (author-url) 84%&lt;br /&gt;
** Use the url value of a [[hcard]]&lt;br /&gt;
 &lt;br /&gt;
* '''entry-content''' (comment) 100%&lt;br /&gt;
**  The &amp;quot;logical Entry Content&amp;quot; of an Entry is the concatenation, in order of appearance, of all the Entry Contents within the Entry &lt;br /&gt;
**#  http://microformats.org/wiki/hatom#Entry_Content&lt;br /&gt;
  &lt;br /&gt;
* '''updated''' (date) 96%&lt;br /&gt;
** use the [[datetime-design-pattern]] to encode the updated datetime &lt;br /&gt;
**# http://microformats.org/wiki/hatom#Entry_Updated&lt;br /&gt;
&lt;br /&gt;
* '''bookmark''' (comment-link) 60% &lt;br /&gt;
**   By adding &amp;quot;bookmark&amp;quot; the author is indicating that the page &amp;lt;nowiki&amp;gt;http://someblog/post#comment-001&amp;lt;/nowiki&amp;gt; is a link to a key entry point within an extended document.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
* source: [http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0#comment-7]&lt;br /&gt;
* See also [[comment-brainstorming#Working_Examples| Working Examples]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;comment hentry&amp;quot; id=&amp;quot;comment-7&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;p&amp;gt;&amp;lt;span class=&amp;quot;entry-title&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;cite class=&amp;quot;author vcard&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;url fn&amp;quot; href=&amp;quot;http://notizblog.org&amp;quot; rel=&amp;quot;contact external&amp;quot; title=&amp;quot;Link to Matthias Pfefferle&amp;quot;&amp;gt;Matthias Pfefferle&amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;/cite&amp;gt; said&lt;br /&gt;
    &amp;lt;/span&amp;gt; &lt;br /&gt;
    &amp;lt;span class=&amp;quot;comment-date&amp;quot;&amp;gt;about: &lt;br /&gt;
        &amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2008-09-02T01:20:32+01:00&amp;quot;&amp;gt;85 days ago&amp;lt;/abbr&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;q cite=&amp;quot;http://notizblog.org&amp;quot;&amp;gt;Awesome! It works perfect for me. &lt;br /&gt;
      Do you know if its possible to use the firefox microformats api with ubiquity? &lt;br /&gt;
      And by the way... nice webslices implementation on your blog.&amp;lt;/q&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;&amp;lt;a rel=&amp;quot;bookmark&amp;quot; href=&amp;quot;http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0#comment-7&amp;quot; title=&amp;quot;Permalink to this comment&amp;quot;&amp;gt;Permalink&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Transformation ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;entry&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Matthias Pfefferle said&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0#comment-7&amp;lt;/id&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;alternate&amp;quot; href=&amp;quot;http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0#comment-7&amp;quot; &lt;br /&gt;
          title=&amp;quot;Permalink to this comment&amp;quot; type=&amp;quot;text/html&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;updated&amp;gt;2008-09-02T01:20:32+01:00&amp;lt;/updated&amp;gt;&lt;br /&gt;
    &amp;lt;content type=&amp;quot;xhtml&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;q cite=&amp;quot;http://notizblog.org&amp;quot;&amp;gt;&lt;br /&gt;
        Awesome! It works perfect for me. &lt;br /&gt;
        Do you know if its possible to use the firefox microformats api with ubiquity? &lt;br /&gt;
        And by the way... nice webslices implementation on your blog.&amp;lt;/q&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/content&amp;gt;&lt;br /&gt;
    &amp;lt;author&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Matthias Pfefferle&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;uri&amp;gt;http://notizblog.org&amp;lt;/uri&amp;gt;&lt;br /&gt;
    &amp;lt;/author&amp;gt;&lt;br /&gt;
&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Working Examples ====&lt;br /&gt;
&lt;br /&gt;
* Comments Marked up using just [[hatom]] [http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0 example]&lt;br /&gt;
** hAtom to Atom transformation [http://transformr.co.uk/hatom/http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0 example]&lt;br /&gt;
** Screen grab of atom feed viewed in Safari web browser [http://weborganics.co.uk/files/Capture.jpg example]&lt;br /&gt;
&lt;br /&gt;
* Comments marked up using [[hAtom]] [http://www.csarven.ca/my-responses-are-in-white example] (note: &amp;lt;code&amp;gt;rel=&amp;quot;in-reply-to&amp;quot;&amp;lt;/code&amp;gt; usage in comments)&lt;br /&gt;
** hAtom to Atom transformation [http://transformr.co.uk/hatom/http://www.csarven.ca/my-responses-are-in-white example]&lt;br /&gt;
&lt;br /&gt;
====Parser Notes====&lt;br /&gt;
&lt;br /&gt;
* If the &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; element is not used, the atom:title element {{should}} use the &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; value of the &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt; presented in a contextual way, for example by prefixing the &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; value with &amp;quot;by&amp;quot; or appending it with &amp;quot;said&amp;quot; or &amp;quot;says&amp;quot;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; element {{should}} provide [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.1.1.1 textual content] and not be an empty string.&lt;br /&gt;
&lt;br /&gt;
====Summary====&lt;br /&gt;
&lt;br /&gt;
* This proposal means that on the whole nothing much is needed for a [[comment]] microformat, a comment can re-use terms outlined in the [[hatom|hAtom Microformat]]&lt;br /&gt;
&lt;br /&gt;
====References====&lt;br /&gt;
&lt;br /&gt;
* [[comment-formats#Atom_Threading_Extension|Comment Formats]]&lt;br /&gt;
* [[hatom|hAtom Microformat]]&lt;br /&gt;
&lt;br /&gt;
====Design Notes====&lt;br /&gt;
* [http://www.w3.org/DesignIssues/LinkedData.html Linked Data] (Tim Berners-Lee 2006)&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Dereferenceable_Uniform_Resource_Identifier Dereferenceable Uniform Resource Identifier] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
=== Schema II ===&lt;br /&gt;
Proposal:&lt;br /&gt;
* reuse [[hAtom]]&lt;br /&gt;
* if Entry &amp;quot;B&amp;quot; is in an Entry Comments element of Entry &amp;quot;A&amp;quot;, then Entry &amp;quot;B&amp;quot; is a comment on Entry &amp;quot;A&amp;quot;&lt;br /&gt;
* an Entry Comments element is identified by using both class names &amp;quot;hfeed comments&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;h3 class=&amp;quot;entry-title&amp;quot;&amp;gt;The blog post title&amp;lt;/h3&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;The blog post text&amp;lt;/div&amp;gt;&lt;br /&gt;
   (etc)&lt;br /&gt;
   &amp;lt;div class=&amp;quot;hfeed comments&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;div class=&amp;quot;hentry&amp;quot; id=&amp;quot;p0001&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;Comment #1&amp;lt;/div&amp;gt;&lt;br /&gt;
          (etc)&lt;br /&gt;
       &amp;lt;/div&amp;gt;&lt;br /&gt;
       &amp;lt;div class=&amp;quot;hentry&amp;quot; id=&amp;quot;p0002&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;Comment #2&amp;lt;/div&amp;gt;&lt;br /&gt;
          (etc)&lt;br /&gt;
       &amp;lt;/div&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;&lt;br /&gt;
&lt;br /&gt;
==== Details ====&lt;br /&gt;
&lt;br /&gt;
* if there is no Entry Title for a comment &amp;lt;strike&amp;gt;it can be assumed to be empty&amp;lt;/strike&amp;gt;, it can be invented by the parser&lt;br /&gt;
* this was discussed at [http://sgfoocamp08.pbwiki.com/ SGFooCamp], see: http://www.flickr.com/photos/90594399@N00/2271787498/&lt;br /&gt;
&lt;br /&gt;
==== Specific Example from the Wild ====&lt;br /&gt;
&lt;br /&gt;
hAtom Comments changes are marked IN UPPER CASE LETTERS FOR VISIBILITY. Assume them to be the normal case in otherwise&lt;br /&gt;
&lt;br /&gt;
(section to be completed)&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
&lt;br /&gt;
If we can indicate that the hAtom entries are also comments, we could add an indicator beside hAtom.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hfeed hcomment&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hAtom pattern goes here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, we could add &amp;lt;code&amp;gt;hcomment&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt; to indicate that the following hentry can be treated also as a comment.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hentry hcomment&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hEntry pattern goes here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
--[[User:Csarven|Sarven Capadisli]] 11:59, 25 Sep 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* If an hfeed is embedded in an hEntry, that could be enough context to show &amp;quot;these items are replies to the one they're embedded in&amp;quot; [[User:Singpolyma|singpolyma]] 12:20, 25 Sep 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== hAtom and in-reply-to ===&lt;br /&gt;
&lt;br /&gt;
A user comment (e.g., in blogs, wikis, forms) can be marked as an [http://microformats.org/wiki/hatom hAtom] since it has a similar content pattern. A way to differentiate an hEntry (e.g., a blog post) from another hEntry (e.g., a user comment) can be done reusing [http://tools.ietf.org/html/rfc4685#section-3 in-reply-to] from [http://tools.ietf.org/html/rfc4685 Atom Threading Extensions]. It provides a mechanism to indicate that an entry is a response to another resource. rel=&amp;quot;in-reply-to&amp;quot; can indicate that the current hEntry is a reply to another hEntry and has a reference point @href: &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;in-reply-to&amp;quot; href=&amp;quot;#comment_20080902144745&amp;quot;&amp;gt;Parent&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hEntries that use rel=&amp;quot;in-reply-to&amp;quot; can be considered as a comment entry in response to a parent entry in the threaded conversation (e.g., in blogs, wikis, forms).&lt;br /&gt;
&lt;br /&gt;
hEntries that are chronologically listed can all use rel=&amp;quot;in-reply-to&amp;quot; and refer to the root hEntry (e.g., blog post, form post) &lt;br /&gt;
&lt;br /&gt;
By reusing in-reply-to, we can solve the microformats representation for user comments [http://microformats.org/wiki/mfcomment], [http://microformats.org/wiki/hcomment], [http://microformats.org/wiki/comment-brainstorming].&lt;br /&gt;
&lt;br /&gt;
Example comment using in-reply-to: http://www.csarven.ca/my-responses-are-in-white&lt;br /&gt;
&lt;br /&gt;
--[[User:Csarven|Sarven Capadisli]] 21:25, 3 Oct 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Idea Consolidation ===&lt;br /&gt;
&lt;br /&gt;
This is a list of all the various &amp;quot;micro-ideas&amp;quot; that have been discussed on the mailing list in the Wiki, to capture everyone's thoughts and preferences. &lt;br /&gt;
* &amp;quot;examples covered&amp;quot; indicates the percentage of [[comment-examples|examples]] that can be marked up without presentation changes&lt;br /&gt;
* Add your comments, objections and votes (-1, 0, +1) as a sublist in &amp;quot;comments&amp;quot; with your wikiname. &lt;br /&gt;
&lt;br /&gt;
==== use hAtom Entry for a comment ====&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* test cases covered: 95%&lt;br /&gt;
** the blogger comments marked as a definition list is problematic, as there is no object that wraps an entire comment&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1 [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
** +1 [[User:TobyInk|TobyInk]]&lt;br /&gt;
** +1 [[User:DavidJanes|David Janes]]&lt;br /&gt;
** +1 [[User:Csarven|Sarven Capadisli]]&lt;br /&gt;
** +1 [[User:Singpolyma|Singpolyma]]&lt;br /&gt;
&lt;br /&gt;
==== mark the comment permalink with rel=&amp;quot;reply&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
* notes: &lt;br /&gt;
** By adding &amp;quot;rel-reply&amp;quot; the author is indicating that the resource indicated by the href is a &amp;quot;reply&amp;quot; to the current document.&lt;br /&gt;
* test cases covered: &lt;br /&gt;
** 60%&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** -0.5 [[User:DavidJanes|David Janes]] I have several objections: this seems to be a proper subset of what could be covered by marking a comment hEntry with class=&amp;quot;comment&amp;quot;, and it seems to being opening up a general &amp;quot;reply/threading&amp;quot; microformat that should be completely and independently analyzed. I have doubt too about how well this will work if the document that's being replied to is specified with hashed URL.&lt;br /&gt;
*** Agreed, this needs separate analysis with more use cases [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
&lt;br /&gt;
==== mark the comment permalink with rel=&amp;quot;in-reply-to&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
* notes: &lt;br /&gt;
* test cases covered:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** Who proposed this? Sounds like an an abuse of the meaning of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt;. -1 from me. [[User:TobyInk|TobyInk]]&lt;br /&gt;
&lt;br /&gt;
==== add an independent rel=&amp;quot;in-reply-to&amp;quot; link ====&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* test cases covered:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** As long as it's ''optional'' (i.e. not the only way to mark that an hentry is a reply to something), my vote is +1. [[User:TobyInk|TobyInk]]&lt;br /&gt;
** [[User:DavidJanes|David Janes]] -1. This seems be inventing something that for the most part is already covered, i.e. is entirely an orthogonal solution. I do not deny this could be of great utility as part of a general threading microformat, but that would have to be independently analyzed.&lt;br /&gt;
** [[User:Csarven|Sarven Capadisli]] +1 for optional because it has potential to handle various types of commenting where an hentry is a ''response'' to another hentry (anywhere):&lt;br /&gt;
*** chronological comments&lt;br /&gt;
*** threaded comments&lt;br /&gt;
*** a blog entry as a reaction to another blog entry&lt;br /&gt;
*** microblogging replies&lt;br /&gt;
&lt;br /&gt;
==== add class=&amp;quot;comment&amp;quot; to the comment Entry ====&lt;br /&gt;
&lt;br /&gt;
* notes: &lt;br /&gt;
** All the examples studied were the concept of a comment&lt;br /&gt;
* test cases covered: &lt;br /&gt;
** 95% (note the usual DL/DT issues in some Blogger templates)&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1 [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
** 0 [[User:DavidJanes|David Janes]] although it covers 100% of the examples, hAtom does have the concept of a cluster of related Entries, and thus I feel it would be better modeled that way.&lt;br /&gt;
&lt;br /&gt;
==== add hAtom Entry Feed around all comments ====&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* test cases covered:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1 [[User:TobyInk|TobyInk]]&lt;br /&gt;
** -1 un-necessary just use &amp;lt;nowiki&amp;gt;class=&amp;quot;comments&amp;quot;&amp;lt;/nowiki&amp;gt; [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
** 0 unnecessary where there is an indicator for each comment entry if they are chronologically listed as a response to the main post. Perhaps for threaded comments, however, in that case, &amp;lt;nowiki&amp;gt;class=&amp;quot;replies&amp;quot;&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;class=&amp;quot;comments&amp;quot;&amp;lt;/nowiki&amp;gt; may be more suitable. [[User:Csarven|Sarven Capadisli]]&lt;br /&gt;
&lt;br /&gt;
==== add class=&amp;quot;comments&amp;quot; (or similar) to a element around all comments ====&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* test cases covered: 10)%&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1, but would prefer &amp;lt;code&amp;gt;class=&amp;quot;replies&amp;quot;&amp;lt;/code&amp;gt; because of analogy with Atom. Better to reuse an existing vocabulary than pull terms out of a hat. [[User:TobyInk|TobyInk]]&lt;br /&gt;
** +1 [[User:DavidJanes|David Janes]]. I'm thinking of this as Entry Replies, which would be physically represented as whatever. Using Entry Replies around all comments would reflect the fact that in 100% of the examples comments come in bunches.&lt;br /&gt;
** +1 There is no reason why not [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
** +1 [[User:Csarven|Sarven Capadisli]]. I also prefer &amp;lt;code&amp;gt;class=&amp;quot;replies&amp;quot;&amp;lt;/code&amp;gt; as it is consistent with the vocabulary in Atom Threaded Extensions.&lt;br /&gt;
** -1 class=hfeed is more generic and conveys the meaning of &amp;quot;reply&amp;quot; when nested [[User:Singpolyma|Singpolyma]]&lt;br /&gt;
&lt;br /&gt;
=== use XOXO to mark up comments ===&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* test cases covered:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
&lt;br /&gt;
=== Twitter is a comments system ===&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** Indeedy. [[User:TobyInk|TobyInk]]&lt;br /&gt;
** -1 [[User:DavidJanes|David Janes]]. Twitter has nothing in common with the other comments system listed. In particular, all replies on Twitter are first class &amp;quot;posts&amp;quot; on your own twitter stream, are done in your own user context, and may not even be replies as they may be conversation initiations.&lt;br /&gt;
** +1 [[User:Csarven|Sarven Capadisli]]. Microblogging notices that '''only''' lead with the &amp;quot;@&amp;quot; character (see twitter.com or identi.ca: e.g., &amp;quot;@username Monkey see monkey do&amp;quot;) can be considered as ''replies''. If replies are considered to be comments then the system caters user commenting. However, not all notices are comments (responses, replies) because they are standalone messages. The &amp;quot;@&amp;quot; convention is considered to be a reply since the notice also ends up in that user's replies stream. A side note here: using &amp;lt;code&amp;gt;rel=&amp;quot;in-reply-to&amp;quot;&amp;lt;/code&amp;gt; on the &amp;quot;in reply to&amp;quot; anchor in notices that lead with &amp;quot;@&amp;quot; creates a linkable comment.&lt;br /&gt;
&lt;br /&gt;
=== A comment microformat should deal with hierarchically nested comments ===&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** assuming that there is some kind of explicit, programmably-discoverable link between the comments and the thing being commented on (be it through nesting, an anchor link or some other method), then it is almost unavoidable that a comment microformat would be able to deal with hierarchical comments. After all, a hierarchical set of comments is merely a set of comments such that some of the comments are comments commenting on other comments. (I wonder if I could have avoided using the word &amp;quot;comment&amp;quot; six times in that previous sentence?) [[User:TobyInk|TobyInk]]&lt;br /&gt;
** +1 Yes As all comments that I have looked at DO have a hierarchical structure, some nested inside each other as replies to other comments. I believe in &amp;quot;most&amp;quot; cases [[xoxo]] (&amp;lt;nowiki&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;/nowiki&amp;gt; and &amp;lt;nowiki&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;/nowiki&amp;gt;) can address the problems of structure and hierarchy, this {{should}} however be totally optional, or maybe just a design note [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
&lt;br /&gt;
=== if hAtom Entry is used, the Entry Title if not present should be ''X'' ===&lt;br /&gt;
&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1 Use the author value of the hentry presented in a contextual way, for example by prefixing the author value with &amp;quot;by&amp;quot; or appending it with &amp;quot;said&amp;quot; or &amp;quot;says&amp;quot; [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
** [[User:DavidJanes|David Janes]] I'm happy to have whatever made up by parser implementers, which seems to be the way Atom feeds happen today. I have issues with specing English words, as it's non-I18N friendly.&lt;br /&gt;
** -1 because entry-title doesn't have to be an explicit title that is entered by the commenter. entry-title could be based on the information that already exists e.g., &amp;quot;John Smith commented on 2008-11-24&amp;quot;. I don't think making up data (even if it is &amp;quot;X&amp;quot; or null) from thin air to satisfy the parsers is the right approach. This also wasn't the case for regular (non-comment) hAtom Entries. [[User:Csarven|Sarven Capadisli]]&lt;br /&gt;
&lt;br /&gt;
=== ''suggested usage template for above'' ===&lt;br /&gt;
&lt;br /&gt;
* notes&lt;br /&gt;
** bla bla bla&lt;br /&gt;
* test cases covered:&lt;br /&gt;
** 50%&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1 this is a great idea - [[SomeUser]]&lt;br /&gt;
** -1 this doesn't even work in have the cases - [[SomebodyElse]]&lt;br /&gt;
*** you don't even know how to spell &amp;quot;half&amp;quot; - [[SomeUser]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[comment-problem|comment problem]]&lt;br /&gt;
* [[comment-examples]]&lt;br /&gt;
* [[comment-formats]]&lt;br /&gt;
* [[comment-brainstorming]]&lt;br /&gt;
* [[comment-issues]]&lt;br /&gt;
&lt;br /&gt;
Related: &lt;br /&gt;
&lt;br /&gt;
* [[hAtom]]&lt;br /&gt;
* [[hatom-brainstorming#User_comment_entries|hAtom comment brainstorming]].&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=comment-brainstorming&amp;diff=70530</id>
		<title>comment-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=comment-brainstorming&amp;diff=70530"/>
		<updated>2022-07-13T20:37:12Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Problem */ Minor grammatical corrections.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Brainstorming for a Comment Microformat}}&lt;br /&gt;
&lt;br /&gt;
{{instead|https://indieweb.org/reply and https://indieweb.org/comments}}&lt;br /&gt;
&lt;br /&gt;
This is a brainstorm for comment microformat.  Examples of a comment can be found here [[comment-examples]]&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
Shortform: How do you publish comments on your own site, and how do you publish comments others have made on your posts?&lt;br /&gt;
&lt;br /&gt;
Longform: How do you publish your own comments, others' comments on your stuff, and how do you track comments? How do you track the comments you have made on blogs, comments made on blogs you're interested in and comments other people have made on your own blog? &lt;br /&gt;
&lt;br /&gt;
How can you do this in a pragmatic way, ingested into some kind of data store, searched or aggregated?&lt;br /&gt;
&lt;br /&gt;
== Distinction between Comment and List of Comments ==&lt;br /&gt;
Ideally, each comment/reply should have its own permalink page, but also get copied into the markup of the post its in reply to. Should the markup of the two cases differ? We should be able to solve both problems by extending &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt; a little.&lt;br /&gt;
&lt;br /&gt;
* A reply on its own page is just another h-entry. The presence of u-in-reply-to implies its a reply (of a sort, could also be a special reply like an RSVP).&lt;br /&gt;
* If a comment does have its own permalink page and also copied to a list of comments on a post, it should likely be marked up as an [[h-cite]] in the list of comments, and link to its canonical copy on its own page.&lt;br /&gt;
* If a comment only exists as part of a list of comments, then using [[h-entry]] for it there seems fine, since that's likely the (only?) canonical copy of the comment. [[User:Tantek|Tantek]] 21:27, 12 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Discovered Elements ==&lt;br /&gt;
&lt;br /&gt;
Based on the analysis of 25 real world examples of a comment, the results can be found at the [[comment-examples#Analysis| Comment Analysis]] section&lt;br /&gt;
&lt;br /&gt;
The following properties occur most regularly across all examples (84% or more)&lt;br /&gt;
&lt;br /&gt;
* comment 100%&lt;br /&gt;
* author 96%&lt;br /&gt;
* published 96%&lt;br /&gt;
* author-url 84%&lt;br /&gt;
&lt;br /&gt;
'''Other achievable elements'''&lt;br /&gt;
&lt;br /&gt;
* comment-link (permalink) 60%&lt;br /&gt;
&lt;br /&gt;
== microformats2 p-comment h-entry ==&lt;br /&gt;
&lt;br /&gt;
For publishing others' comments on your posts, including syndicating in others' comment posts onto your posts:&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
How to:&lt;br /&gt;
* post h-entry with property &amp;lt;code&amp;gt;p-comment h-entry&amp;lt;/code&amp;gt; (child) for a comment&lt;br /&gt;
* one such &amp;lt;code&amp;gt;p-comment h-entry&amp;lt;/code&amp;gt; per comment&lt;br /&gt;
* each comment should have an ID attribute and a &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt; permalink inside&lt;br /&gt;
** maybe with &amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt; on same element or child &amp;lt;code&amp;gt;&amp;amp;lt;time&amp;gt;&amp;lt;/code&amp;gt; element&lt;br /&gt;
** if comment was syndicated in, link to original with &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt; rather than local ID.&lt;br /&gt;
* &amp;lt;code&amp;gt;u-in-reply-to&amp;lt;/code&amp;gt; on the child comments so they can be easily extracted out of context&lt;br /&gt;
** e.g. a simple &amp;lt;code&amp;gt;&amp;amp;lt;a href=&amp;quot;&amp;quot; class=&amp;quot;u-in-reply-to&amp;quot;&amp;gt;&amp;amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; inside the &amp;lt;code&amp;gt;p-comment h-entry&amp;lt;/code&amp;gt; would connect the context of the page URL (post permalink) as what is being replied to.&lt;br /&gt;
* &amp;lt;code&amp;gt;p-content&amp;lt;/code&amp;gt; for the contents of plain text comments&lt;br /&gt;
** &amp;lt;code&amp;gt;e-content&amp;lt;/code&amp;gt; if you trust the markup from others' comments (or your comment entry HTML stripping/simplifying code)&lt;br /&gt;
* explicit &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt; markup either the whole p-content of the comment, or perhaps the first sentence as a simple abbreviation (perhaps useful for syndicating the comments into a feed).&lt;br /&gt;
* should have &amp;lt;code&amp;gt;p-author h-card&amp;lt;/code&amp;gt; for the comment author&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* no need for h-feed because p-comment property value can already be an array&lt;br /&gt;
* any consumer of the comments can decide sort order for themselves, i.e.&lt;br /&gt;
** published order (order in the p-comment array)&lt;br /&gt;
** chronological order by dt-published of the p-comment h-entry elements&lt;br /&gt;
** or reverse chronological order using the same&lt;br /&gt;
* No real need for h-comment on the child h-entries as h-entry already covers everything a comment needs&lt;br /&gt;
*** and simply adding  &amp;lt;code&amp;gt;u-in-reply-to&amp;lt;/code&amp;gt; isn't really sufficient to justify the overhead/complexity of a new root microformat &amp;quot;h-comment&amp;quot;&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;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;A Blog Post&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  •••&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-comment h-entry&amp;quot; id=&amp;quot;comment-1&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;&amp;quot; class=&amp;quot;u-in-reply-to&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=...&amp;gt;&amp;lt;img alt=author1 src=...&amp;gt;&amp;lt;/a&amp;gt; &lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-name p-content&amp;quot;&amp;gt;The First Comment&amp;lt;/span&amp;gt;&lt;br /&gt;
    (&amp;lt;a class=&amp;quot;u-url dt-published&amp;quot; href=&amp;quot;#comment-1&amp;quot;&amp;gt;YYYY-DD-MM HH:MM&amp;lt;/a&amp;gt;)&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-comment h-entry&amp;quot; id=&amp;quot;comment-2&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;&amp;quot; class=&amp;quot;u-in-reply-to&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=...&amp;gt;&amp;lt;img alt=author2 src=...&amp;gt;&amp;lt;/a&amp;gt; &lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-name p-content&amp;quot;&amp;gt;The Second Comment&amp;lt;/span&amp;gt;&lt;br /&gt;
    (&amp;lt;a class=&amp;quot;u-url dt-published&amp;quot; href=&amp;quot;#comment-2&amp;quot;&amp;gt;YYYY-DD-MM HH:MM&amp;lt;/a&amp;gt;)&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  •&lt;br /&gt;
  •&lt;br /&gt;
  •&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Questions ===&lt;br /&gt;
==== Use case for same page u-in-reply-to ====&lt;br /&gt;
Q: What is the use-case for the same page u-in-reply-to?&lt;br /&gt;
&lt;br /&gt;
A: The use-case for the same page u-in-reply-to is applications/sites that may subscribe to the comments as a feed, perhaps mix them in with other comments/entries. Having an explicit u-in-reply-to makes the comment portable. It's not critical, but it is also a simple/good pattern that encourages extracted data to be self-contained in general.&lt;br /&gt;
&lt;br /&gt;
* Note: this use-case is currently theoretical, no one is actually doing or asking to do this yet. [[User:Tantek|Tantek]] 20:09, 12 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
Note simplifications from [[#microformats2_h-feed_p-comments|microformats2 h-feed p-comments proposal]]:&lt;br /&gt;
* no &amp;lt;code&amp;gt;h-feed&amp;lt;/code&amp;gt;&lt;br /&gt;
* one fewer div / less hierarchy than proposal above&lt;br /&gt;
&lt;br /&gt;
== microformats2 h-feed p-comments ==&lt;br /&gt;
&lt;br /&gt;
For publishing others' comments on your posts:&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
&lt;br /&gt;
* h-entry with child &amp;lt;code&amp;gt;h-feed p-comments&amp;lt;/code&amp;gt;&lt;br /&gt;
** h-feed because it’s a bunch of h-entries in (reverse) chronological order&lt;br /&gt;
** p-comments to explicitly declare the children as comments, expose array on &amp;lt;code&amp;gt;hEntryObject.comments&amp;lt;/code&amp;gt;&lt;br /&gt;
** No real need for h-comment on the child h-entries as h-entry already covers everything a comment needs&lt;br /&gt;
* Each comment should have an ID attribute and a &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;&lt;br /&gt;
* Perhaps &amp;lt;code&amp;gt;u-in-reply-to&amp;lt;/code&amp;gt; on the child comments so they can be taken out of context and still used?&lt;br /&gt;
** Where would it go in markup?&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;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;A Blog Post&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  •••&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;div class=&amp;quot;h-feed p-comments&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;h-entry&amp;quot; id=&amp;quot;comment-1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h2 class=&amp;quot;p-name&amp;quot;&amp;gt;The First Comment&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;h-entry&amp;quot; id=&amp;quot;comment-2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h2 class=&amp;quot;p-name&amp;quot;&amp;gt;The Second Comment&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    •&lt;br /&gt;
    •&lt;br /&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;
* -1 for too much markup compared to .h-entry &amp;gt; .h-entry.p-comment --[[User:Barnabywalters|bw]] 09:54, 13 May 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== older pre-microformats2 proposals ==&lt;br /&gt;
&lt;br /&gt;
=== Schema I ===&lt;br /&gt;
Proposal:&lt;br /&gt;
* '''hentry''' (root class name)&lt;br /&gt;
** The &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt; element represents an individual entry for a comment.&lt;br /&gt;
**# http://microformats.org/wiki/hatom#Entry&lt;br /&gt;
&lt;br /&gt;
* '''author''' (author) 96%&lt;br /&gt;
**  an Entry Author element {{must}} be encoded in a [[hcard|hCard]]&lt;br /&gt;
**# http://microformats.org/wiki/hatom#Entry_Author&lt;br /&gt;
&lt;br /&gt;
* '''url''' (author-url) 84%&lt;br /&gt;
** Use the url value of a [[hcard]]&lt;br /&gt;
 &lt;br /&gt;
* '''entry-content''' (comment) 100%&lt;br /&gt;
**  The &amp;quot;logical Entry Content&amp;quot; of an Entry is the concatenation, in order of appearance, of all the Entry Contents within the Entry &lt;br /&gt;
**#  http://microformats.org/wiki/hatom#Entry_Content&lt;br /&gt;
  &lt;br /&gt;
* '''updated''' (date) 96%&lt;br /&gt;
** use the [[datetime-design-pattern]] to encode the updated datetime &lt;br /&gt;
**# http://microformats.org/wiki/hatom#Entry_Updated&lt;br /&gt;
&lt;br /&gt;
* '''bookmark''' (comment-link) 60% &lt;br /&gt;
**   By adding &amp;quot;bookmark&amp;quot; the author is indicating that the page &amp;lt;nowiki&amp;gt;http://someblog/post#comment-001&amp;lt;/nowiki&amp;gt; is a link to a key entry point within an extended document.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
&lt;br /&gt;
* source: [http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0#comment-7]&lt;br /&gt;
* See also [[comment-brainstorming#Working_Examples| Working Examples]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;comment hentry&amp;quot; id=&amp;quot;comment-7&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;p&amp;gt;&amp;lt;span class=&amp;quot;entry-title&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;cite class=&amp;quot;author vcard&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;url fn&amp;quot; href=&amp;quot;http://notizblog.org&amp;quot; rel=&amp;quot;contact external&amp;quot; title=&amp;quot;Link to Matthias Pfefferle&amp;quot;&amp;gt;Matthias Pfefferle&amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;/cite&amp;gt; said&lt;br /&gt;
    &amp;lt;/span&amp;gt; &lt;br /&gt;
    &amp;lt;span class=&amp;quot;comment-date&amp;quot;&amp;gt;about: &lt;br /&gt;
        &amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2008-09-02T01:20:32+01:00&amp;quot;&amp;gt;85 days ago&amp;lt;/abbr&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;q cite=&amp;quot;http://notizblog.org&amp;quot;&amp;gt;Awesome! It works perfect for me. &lt;br /&gt;
      Do you know if its possible to use the firefox microformats api with ubiquity? &lt;br /&gt;
      And by the way... nice webslices implementation on your blog.&amp;lt;/q&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;&amp;lt;a rel=&amp;quot;bookmark&amp;quot; href=&amp;quot;http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0#comment-7&amp;quot; title=&amp;quot;Permalink to this comment&amp;quot;&amp;gt;Permalink&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Transformation ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;entry&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Matthias Pfefferle said&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0#comment-7&amp;lt;/id&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;alternate&amp;quot; href=&amp;quot;http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0#comment-7&amp;quot; &lt;br /&gt;
          title=&amp;quot;Permalink to this comment&amp;quot; type=&amp;quot;text/html&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;updated&amp;gt;2008-09-02T01:20:32+01:00&amp;lt;/updated&amp;gt;&lt;br /&gt;
    &amp;lt;content type=&amp;quot;xhtml&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;q cite=&amp;quot;http://notizblog.org&amp;quot;&amp;gt;&lt;br /&gt;
        Awesome! It works perfect for me. &lt;br /&gt;
        Do you know if its possible to use the firefox microformats api with ubiquity? &lt;br /&gt;
        And by the way... nice webslices implementation on your blog.&amp;lt;/q&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/content&amp;gt;&lt;br /&gt;
    &amp;lt;author&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Matthias Pfefferle&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;uri&amp;gt;http://notizblog.org&amp;lt;/uri&amp;gt;&lt;br /&gt;
    &amp;lt;/author&amp;gt;&lt;br /&gt;
&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Working Examples ====&lt;br /&gt;
&lt;br /&gt;
* Comments Marked up using just [[hatom]] [http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0 example]&lt;br /&gt;
** hAtom to Atom transformation [http://transformr.co.uk/hatom/http://weborganics.co.uk/articles/show/ubiquity-the-best-thing-since-web2-0 example]&lt;br /&gt;
** Screen grab of atom feed viewed in Safari web browser [http://weborganics.co.uk/files/Capture.jpg example]&lt;br /&gt;
&lt;br /&gt;
* Comments marked up using [[hAtom]] [http://www.csarven.ca/my-responses-are-in-white example] (note: &amp;lt;code&amp;gt;rel=&amp;quot;in-reply-to&amp;quot;&amp;lt;/code&amp;gt; usage in comments)&lt;br /&gt;
** hAtom to Atom transformation [http://transformr.co.uk/hatom/http://www.csarven.ca/my-responses-are-in-white example]&lt;br /&gt;
&lt;br /&gt;
====Parser Notes====&lt;br /&gt;
&lt;br /&gt;
* If the &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; element is not used, the atom:title element {{should}} use the &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; value of the &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt; presented in a contextual way, for example by prefixing the &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; value with &amp;quot;by&amp;quot; or appending it with &amp;quot;said&amp;quot; or &amp;quot;says&amp;quot;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; element {{should}} provide [http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.1.1.1 textual content] and not be an empty string.&lt;br /&gt;
&lt;br /&gt;
====Summary====&lt;br /&gt;
&lt;br /&gt;
* This proposal means that on the whole nothing much is needed for a [[comment]] microformat, a comment can re-use terms outlined in the [[hatom|hAtom Microformat]]&lt;br /&gt;
&lt;br /&gt;
====References====&lt;br /&gt;
&lt;br /&gt;
* [[comment-formats#Atom_Threading_Extension|Comment Formats]]&lt;br /&gt;
* [[hatom|hAtom Microformat]]&lt;br /&gt;
&lt;br /&gt;
====Design Notes====&lt;br /&gt;
* [http://www.w3.org/DesignIssues/LinkedData.html Linked Data] (Tim Berners-Lee 2006)&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Dereferenceable_Uniform_Resource_Identifier Dereferenceable Uniform Resource Identifier] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
=== Schema II ===&lt;br /&gt;
Proposal:&lt;br /&gt;
* reuse [[hAtom]]&lt;br /&gt;
* if Entry &amp;quot;B&amp;quot; is in an Entry Comments element of Entry &amp;quot;A&amp;quot;, then Entry &amp;quot;B&amp;quot; is a comment on Entry &amp;quot;A&amp;quot;&lt;br /&gt;
* an Entry Comments element is identified by using both class names &amp;quot;hfeed comments&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;h3 class=&amp;quot;entry-title&amp;quot;&amp;gt;The blog post title&amp;lt;/h3&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;The blog post text&amp;lt;/div&amp;gt;&lt;br /&gt;
   (etc)&lt;br /&gt;
   &amp;lt;div class=&amp;quot;hfeed comments&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;div class=&amp;quot;hentry&amp;quot; id=&amp;quot;p0001&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;Comment #1&amp;lt;/div&amp;gt;&lt;br /&gt;
          (etc)&lt;br /&gt;
       &amp;lt;/div&amp;gt;&lt;br /&gt;
       &amp;lt;div class=&amp;quot;hentry&amp;quot; id=&amp;quot;p0002&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;Comment #2&amp;lt;/div&amp;gt;&lt;br /&gt;
          (etc)&lt;br /&gt;
       &amp;lt;/div&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;&lt;br /&gt;
&lt;br /&gt;
==== Details ====&lt;br /&gt;
&lt;br /&gt;
* if there is no Entry Title for a comment &amp;lt;strike&amp;gt;it can be assumed to be empty&amp;lt;/strike&amp;gt;, it can be invented by the parser&lt;br /&gt;
* this was discussed at [http://sgfoocamp08.pbwiki.com/ SGFooCamp], see: http://www.flickr.com/photos/90594399@N00/2271787498/&lt;br /&gt;
&lt;br /&gt;
==== Specific Example from the Wild ====&lt;br /&gt;
&lt;br /&gt;
hAtom Comments changes are marked IN UPPER CASE LETTERS FOR VISIBILITY. Assume them to be the normal case in otherwise&lt;br /&gt;
&lt;br /&gt;
(section to be completed)&lt;br /&gt;
&lt;br /&gt;
====Feedback====&lt;br /&gt;
&lt;br /&gt;
If we can indicate that the hAtom entries are also comments, we could add an indicator beside hAtom.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hfeed hcomment&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hAtom pattern goes here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, we could add &amp;lt;code&amp;gt;hcomment&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;hentry&amp;lt;/code&amp;gt; to indicate that the following hentry can be treated also as a comment.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hentry hcomment&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hEntry pattern goes here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
--[[User:Csarven|Sarven Capadisli]] 11:59, 25 Sep 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* If an hfeed is embedded in an hEntry, that could be enough context to show &amp;quot;these items are replies to the one they're embedded in&amp;quot; [[User:Singpolyma|singpolyma]] 12:20, 25 Sep 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== hAtom and in-reply-to ===&lt;br /&gt;
&lt;br /&gt;
A user comment (e.g., in blogs, wikis, forms) can be marked as an [http://microformats.org/wiki/hatom hAtom] since it has a similar content pattern. A way to differentiate an hEntry (e.g., a blog post) from another hEntry (e.g., a user comment) can be done reusing [http://tools.ietf.org/html/rfc4685#section-3 in-reply-to] from [http://tools.ietf.org/html/rfc4685 Atom Threading Extensions]. It provides a mechanism to indicate that an entry is a response to another resource. rel=&amp;quot;in-reply-to&amp;quot; can indicate that the current hEntry is a reply to another hEntry and has a reference point @href: &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;in-reply-to&amp;quot; href=&amp;quot;#comment_20080902144745&amp;quot;&amp;gt;Parent&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hEntries that use rel=&amp;quot;in-reply-to&amp;quot; can be considered as a comment entry in response to a parent entry in the threaded conversation (e.g., in blogs, wikis, forms).&lt;br /&gt;
&lt;br /&gt;
hEntries that are chronologically listed can all use rel=&amp;quot;in-reply-to&amp;quot; and refer to the root hEntry (e.g., blog post, form post) &lt;br /&gt;
&lt;br /&gt;
By reusing in-reply-to, we can solve the microformats representation for user comments [http://microformats.org/wiki/mfcomment], [http://microformats.org/wiki/hcomment], [http://microformats.org/wiki/comment-brainstorming].&lt;br /&gt;
&lt;br /&gt;
Example comment using in-reply-to: http://www.csarven.ca/my-responses-are-in-white&lt;br /&gt;
&lt;br /&gt;
--[[User:Csarven|Sarven Capadisli]] 21:25, 3 Oct 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Idea Consolidation ===&lt;br /&gt;
&lt;br /&gt;
This is a list of all the various &amp;quot;micro-ideas&amp;quot; that have been discussed on the mailing list in the Wiki, to capture everyone's thoughts and preferences. &lt;br /&gt;
* &amp;quot;examples covered&amp;quot; indicates the percentage of [[comment-examples|examples]] that can be marked up without presentation changes&lt;br /&gt;
* Add your comments, objections and votes (-1, 0, +1) as a sublist in &amp;quot;comments&amp;quot; with your wikiname. &lt;br /&gt;
&lt;br /&gt;
==== use hAtom Entry for a comment ====&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* test cases covered: 95%&lt;br /&gt;
** the blogger comments marked as a definition list is problematic, as there is no object that wraps an entire comment&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1 [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
** +1 [[User:TobyInk|TobyInk]]&lt;br /&gt;
** +1 [[User:DavidJanes|David Janes]]&lt;br /&gt;
** +1 [[User:Csarven|Sarven Capadisli]]&lt;br /&gt;
** +1 [[User:Singpolyma|Singpolyma]]&lt;br /&gt;
&lt;br /&gt;
==== mark the comment permalink with rel=&amp;quot;reply&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
* notes: &lt;br /&gt;
** By adding &amp;quot;rel-reply&amp;quot; the author is indicating that the resource indicated by the href is a &amp;quot;reply&amp;quot; to the current document.&lt;br /&gt;
* test cases covered: &lt;br /&gt;
** 60%&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** -0.5 [[User:DavidJanes|David Janes]] I have several objections: this seems to be a proper subset of what could be covered by marking a comment hEntry with class=&amp;quot;comment&amp;quot;, and it seems to being opening up a general &amp;quot;reply/threading&amp;quot; microformat that should be completely and independently analyzed. I have doubt too about how well this will work if the document that's being replied to is specified with hashed URL.&lt;br /&gt;
*** Agreed, this needs separate analysis with more use cases [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
&lt;br /&gt;
==== mark the comment permalink with rel=&amp;quot;in-reply-to&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
* notes: &lt;br /&gt;
* test cases covered:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** Who proposed this? Sounds like an an abuse of the meaning of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt;. -1 from me. [[User:TobyInk|TobyInk]]&lt;br /&gt;
&lt;br /&gt;
==== add an independent rel=&amp;quot;in-reply-to&amp;quot; link ====&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* test cases covered:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** As long as it's ''optional'' (i.e. not the only way to mark that an hentry is a reply to something), my vote is +1. [[User:TobyInk|TobyInk]]&lt;br /&gt;
** [[User:DavidJanes|David Janes]] -1. This seems be inventing something that for the most part is already covered, i.e. is entirely an orthogonal solution. I do not deny this could be of great utility as part of a general threading microformat, but that would have to be independently analyzed.&lt;br /&gt;
** [[User:Csarven|Sarven Capadisli]] +1 for optional because it has potential to handle various types of commenting where an hentry is a ''response'' to another hentry (anywhere):&lt;br /&gt;
*** chronological comments&lt;br /&gt;
*** threaded comments&lt;br /&gt;
*** a blog entry as a reaction to another blog entry&lt;br /&gt;
*** microblogging replies&lt;br /&gt;
&lt;br /&gt;
==== add class=&amp;quot;comment&amp;quot; to the comment Entry ====&lt;br /&gt;
&lt;br /&gt;
* notes: &lt;br /&gt;
** All the examples studied were the concept of a comment&lt;br /&gt;
* test cases covered: &lt;br /&gt;
** 95% (note the usual DL/DT issues in some Blogger templates)&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1 [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
** 0 [[User:DavidJanes|David Janes]] although it covers 100% of the examples, hAtom does have the concept of a cluster of related Entries, and thus I feel it would be better modeled that way.&lt;br /&gt;
&lt;br /&gt;
==== add hAtom Entry Feed around all comments ====&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* test cases covered:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1 [[User:TobyInk|TobyInk]]&lt;br /&gt;
** -1 un-necessary just use &amp;lt;nowiki&amp;gt;class=&amp;quot;comments&amp;quot;&amp;lt;/nowiki&amp;gt; [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
** 0 unnecessary where there is an indicator for each comment entry if they are chronologically listed as a response to the main post. Perhaps for threaded comments, however, in that case, &amp;lt;nowiki&amp;gt;class=&amp;quot;replies&amp;quot;&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;class=&amp;quot;comments&amp;quot;&amp;lt;/nowiki&amp;gt; may be more suitable. [[User:Csarven|Sarven Capadisli]]&lt;br /&gt;
&lt;br /&gt;
==== add class=&amp;quot;comments&amp;quot; (or similar) to a element around all comments ====&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* test cases covered: 10)%&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1, but would prefer &amp;lt;code&amp;gt;class=&amp;quot;replies&amp;quot;&amp;lt;/code&amp;gt; because of analogy with Atom. Better to reuse an existing vocabulary than pull terms out of a hat. [[User:TobyInk|TobyInk]]&lt;br /&gt;
** +1 [[User:DavidJanes|David Janes]]. I'm thinking of this as Entry Replies, which would be physically represented as whatever. Using Entry Replies around all comments would reflect the fact that in 100% of the examples comments come in bunches.&lt;br /&gt;
** +1 There is no reason why not [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
** +1 [[User:Csarven|Sarven Capadisli]]. I also prefer &amp;lt;code&amp;gt;class=&amp;quot;replies&amp;quot;&amp;lt;/code&amp;gt; as it is consistent with the vocabulary in Atom Threaded Extensions.&lt;br /&gt;
** -1 class=hfeed is more generic and conveys the meaning of &amp;quot;reply&amp;quot; when nested [[User:Singpolyma|Singpolyma]]&lt;br /&gt;
&lt;br /&gt;
=== use XOXO to mark up comments ===&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* test cases covered:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
&lt;br /&gt;
=== Twitter is a comments system ===&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** Indeedy. [[User:TobyInk|TobyInk]]&lt;br /&gt;
** -1 [[User:DavidJanes|David Janes]]. Twitter has nothing in common with the other comments system listed. In particular, all replies on Twitter are first class &amp;quot;posts&amp;quot; on your own twitter stream, are done in your own user context, and may not even be replies as they may be conversation initiations.&lt;br /&gt;
** +1 [[User:Csarven|Sarven Capadisli]]. Microblogging notices that '''only''' lead with the &amp;quot;@&amp;quot; character (see twitter.com or identi.ca: e.g., &amp;quot;@username Monkey see monkey do&amp;quot;) can be considered as ''replies''. If replies are considered to be comments then the system caters user commenting. However, not all notices are comments (responses, replies) because they are standalone messages. The &amp;quot;@&amp;quot; convention is considered to be a reply since the notice also ends up in that user's replies stream. A side note here: using &amp;lt;code&amp;gt;rel=&amp;quot;in-reply-to&amp;quot;&amp;lt;/code&amp;gt; on the &amp;quot;in reply to&amp;quot; anchor in notices that lead with &amp;quot;@&amp;quot; creates a linkable comment.&lt;br /&gt;
&lt;br /&gt;
=== A comment microformat should deal with hierarchically nested comments ===&lt;br /&gt;
&lt;br /&gt;
* notes:&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** assuming that there is some kind of explicit, programmably-discoverable link between the comments and the thing being commented on (be it through nesting, an anchor link or some other method), then it is almost unavoidable that a comment microformat would be able to deal with hierarchical comments. After all, a hierarchical set of comments is merely a set of comments such that some of the comments are comments commenting on other comments. (I wonder if I could have avoided using the word &amp;quot;comment&amp;quot; six times in that previous sentence?) [[User:TobyInk|TobyInk]]&lt;br /&gt;
** +1 Yes As all comments that I have looked at DO have a hierarchical structure, some nested inside each other as replies to other comments. I believe in &amp;quot;most&amp;quot; cases [[xoxo]] (&amp;lt;nowiki&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;/nowiki&amp;gt; and &amp;lt;nowiki&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;/nowiki&amp;gt;) can address the problems of structure and hierarchy, this {{should}} however be totally optional, or maybe just a design note [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
&lt;br /&gt;
=== if hAtom Entry is used, the Entry Title if not present should be ''X'' ===&lt;br /&gt;
&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1 Use the author value of the hentry presented in a contextual way, for example by prefixing the author value with &amp;quot;by&amp;quot; or appending it with &amp;quot;said&amp;quot; or &amp;quot;says&amp;quot; [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
** [[User:DavidJanes|David Janes]] I'm happy to have whatever made up by parser implementers, which seems to be the way Atom feeds happen today. I have issues with specing English words, as it's non-I18N friendly.&lt;br /&gt;
** -1 because entry-title doesn't have to be an explicit title that is entered by the commenter. entry-title could be based on the information that already exists e.g., &amp;quot;John Smith commented on 2008-11-24&amp;quot;. I don't think making up data (even if it is &amp;quot;X&amp;quot; or null) from thin air to satisfy the parsers is the right approach. This also wasn't the case for regular (non-comment) hAtom Entries. [[User:Csarven|Sarven Capadisli]]&lt;br /&gt;
&lt;br /&gt;
=== ''suggested usage template for above'' ===&lt;br /&gt;
&lt;br /&gt;
* notes&lt;br /&gt;
** bla bla bla&lt;br /&gt;
* test cases covered:&lt;br /&gt;
** 50%&lt;br /&gt;
* comments and votes:&lt;br /&gt;
** +1 this is a great idea - [[SomeUser]]&lt;br /&gt;
** -1 this doesn't even work in have the cases - [[SomebodyElse]]&lt;br /&gt;
*** you don't even know how to spell &amp;quot;half&amp;quot; - [[SomeUser]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[comment-problem|comment problem]]&lt;br /&gt;
* [[comment-examples]]&lt;br /&gt;
* [[comment-formats]]&lt;br /&gt;
* [[comment-brainstorming]]&lt;br /&gt;
* [[comment-issues]]&lt;br /&gt;
&lt;br /&gt;
Related: &lt;br /&gt;
&lt;br /&gt;
* [[hAtom]]&lt;br /&gt;
* [[hatom-brainstorming#User_comment_entries|hAtom comment brainstorming]].&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-review&amp;diff=70477</id>
		<title>h-review</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-review&amp;diff=70477"/>
		<updated>2022-01-21T21:52:07Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Properties */ Added missing space.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:h-review}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-review&amp;lt;/dfn&amp;gt; is a simple, open format for publishing reviews on the web. h-review is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-review is the [[microformats2]] update to [[hReview]].&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here is a simple review example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;Microformats: is structured data worth it?&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;blockquote&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-item h-item&amp;quot; href=&amp;quot;http://microformats.org&amp;quot;&amp;gt;Microformats&amp;lt;/a&amp;gt; are the simplest way to publish structured data on the web.&lt;br /&gt;
  &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;p&amp;gt;&lt;br /&gt;
    &amp;lt;data class=&amp;quot;p-rating&amp;quot; value=&amp;quot;5&amp;quot;&amp;gt;★★★★★&amp;lt;/data&amp;gt;&lt;br /&gt;
    Published &amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-12 12:00:00&amp;quot;&amp;gt;12&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
    by &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/a&amp;gt;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Yes, microformats are undoubtedly great. They are the simplest way to markup structured data in HTML and reap the benefits thereof, including using your web page as your API by automatic conversion to JSON. The alternatives of microdata/schema and RDFa are much more work, require more markup, and are more complicated (harder to get right, more likely to break).&amp;lt;/p&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;
Parsed JSON:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&lt;br /&gt;
        &amp;quot;h-review&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&lt;br /&gt;
          &amp;quot;Microformats: is structured data worth it?&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;item&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Microformats&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
              &amp;quot;h-item&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: [&lt;br /&gt;
                &amp;quot;Microformats&amp;quot;&lt;br /&gt;
              ],&lt;br /&gt;
              &amp;quot;url&amp;quot;: [&lt;br /&gt;
                &amp;quot;http://microformats.org&amp;quot;&lt;br /&gt;
              ]&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;rating&amp;quot;: [&lt;br /&gt;
          &amp;quot;5&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;published&amp;quot;: [&lt;br /&gt;
          &amp;quot;2013-06-12 12:00:00&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Joe Bloggs&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
              &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: [&lt;br /&gt;
                &amp;quot;Joe Bloggs&amp;quot;&lt;br /&gt;
              ],&lt;br /&gt;
              &amp;quot;url&amp;quot;: [&lt;br /&gt;
                &amp;quot;http://example.com&amp;quot;&lt;br /&gt;
              ]&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;content&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Yes, microformats are undoubtedly great. They are the simplest way to markup structured data in HTML and reap the benefits thereof, including using your web page as your API by automatic conversion to JSON. The alternatives of microdata/schema and RDFa are much more work, require more markup, and are more complicated (harder to get right, more likely to break).&amp;quot;,&lt;br /&gt;
            &amp;quot;html&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;Yes, microformats are undoubtedly great. They are the simplest way to markup structured data in HTML and reap the benefits thereof, including using your web page as your API by automatic conversion to JSON. The alternatives of microdata/schema and RDFa are much more work, require more markup, and are more complicated (harder to get right, more likely to break).&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-review.&lt;br /&gt;
&lt;br /&gt;
'''p-name''', '''p-item''', '''p-rating''', '''dt-published''', '''p-author''', '''e-content''' and the other property class names listed below defined elements as ''properties'' of the h-review.&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-item&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates an embedded '''[[h-item]]''' for the p-item property.&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates an embedded '''[[h-card]]''' for the p-author property.&lt;br /&gt;
&lt;br /&gt;
See [[microformats2-parsing]] to learn more about property class names.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-review properties, inside an element with class '''h-review''':&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - name of the review&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-item&amp;lt;/code&amp;gt;''' - thing being reviewed, including embedded microformat for e.g. business or person ([[h-card]]), event ([[h-event]]), place ([[h-adr]] or [[h-geo]]), product ([[h-product]]), recipe ([[h-recipe]]), website, url, or other item ([[h-item]]).&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''' - person who authored the review, optionally with an embedded [[h-card]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;''' - date time of when the review was written and published&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-rating&amp;lt;/code&amp;gt;''' - value from 1-5 indicating a rating for the item (5 best).&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-best&amp;lt;/code&amp;gt;'''  - define best rating value. can be numerically lower than worst.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-worst&amp;lt;/code&amp;gt;'''  - define worst rating value. can be numerically higher than best. &lt;br /&gt;
* '''&amp;lt;code&amp;gt;e-content&amp;lt;/code&amp;gt;''' - the full text written evaluation and opinion of the reviewer&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - freeform categories or tags applied to the item by the reviewer &lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - review permalink URL&lt;br /&gt;
&lt;br /&gt;
All properties are optional.&lt;br /&gt;
&lt;br /&gt;
Experimental properties currently in use in the wild but not (yet) part of the official h-review spec. Several of these seem to be because of h-review convergence towards [[h-entry]], as h-review gets used alongside h-entry within [[h-feed]]:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-location&amp;lt;/code&amp;gt;''' - location the review was posted from, optionally embed [[h-card]], [[h-adr]], or [[h-geo]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-summary&amp;lt;/code&amp;gt;''' - short review summary&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-syndication&amp;lt;/code&amp;gt;''' - URL(s) of syndicated copies of this review. The property equivalent of [[rel-syndication]] ([https://aaronparecki.com/2018/01/29/10/ example] with [https://www.amazon.com/review/R1P2C3ATN75836/ref=pe_1098610_137716200_cm_rv_eml_rv0_rv syndication to Amazon])&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-review''' is a microformats.org draft specification. Public discussion on h-review takes place on [[h-review-feedback]] and the #microformats [[irc]] channel on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
h-review is ready to use.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
(stub, add any property explanations here)&lt;br /&gt;
&lt;br /&gt;
== Examples in the Wild ==&lt;br /&gt;
* … add any h-review examples you find in the wild&lt;br /&gt;
* https://cleverdevil.io/2015/blood-rites-book-six-of-the-dresden-files&lt;br /&gt;
* https://aaronparecki.com/2018/01/29/10/ (more on Aaron’s [https://aaronparecki.com/reviews review feed])&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
* [https://github.com/cleverdevil/Known-Reviews Reviews plugin for Known CMS] by [https://cleverdevil.io Jonathan LaCour].&lt;br /&gt;
** [https://github.com/cleverdevil/Known-Reviews/pull/4 pending pull request to sync with spec update 2016-05-29] -t&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
For backward compatibility, you may wish to use classic [[hReview]] classnames on an h-review permalink page in addition to the more future-proof h-review properties, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review hreview&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name fn&amp;quot;&amp;gt;My great review&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [https://aaronparecki.com/ Aaron Parecki]’s [https://aaronparecki.com/2016/12/17/8/owning-my-reviews Why Microformats? Owning My Reviews] for a reason to be backwards compatible.&lt;br /&gt;
&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers should detect classic properties and parse them as microformats 2 properties. If an &amp;quot;h-review&amp;quot; is found, don't look for an &amp;quot;hReview&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
Compatibility root class name: hreview&lt;br /&gt;
&lt;br /&gt;
Properties: (parsed as p- plain text unless otherwise specified)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;summary&amp;lt;/code&amp;gt; parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''p-name''' of the item being reviewed (p-item h-item p-name)&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-photo''' of the item being reviewed (p-item h-item u-photo)&lt;br /&gt;
* &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-url''' of the item being reviewed (p-item h-item u-url)&lt;br /&gt;
* &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; (without vcard, vevent, hproduct) - parse as '''p-item h-item''' including backcompat nested properties:&lt;br /&gt;
** &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''p-name''' of the item being reviewed (p-item h-item p-name)&lt;br /&gt;
** &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-photo''' of the item being reviewed (p-item h-item u-photo)&lt;br /&gt;
** &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-url''' of the item being reviewed (p-item h-item u-url)&lt;br /&gt;
* &amp;lt;code&amp;gt;item vcard&amp;lt;/code&amp;gt; - parse as '''p-item h-card''' including backcompat [[hCard]] parsing&lt;br /&gt;
* &amp;lt;code&amp;gt;item vevent&amp;lt;/code&amp;gt; - parse as '''p-item h-event''' including backcompat [[hCalendar]] vevent property parsing&lt;br /&gt;
* &amp;lt;code&amp;gt;item hproduct&amp;lt;/code&amp;gt; - parse as '''p-item h-product''' including backcompat [[hProduct]] parsing&lt;br /&gt;
* &amp;lt;code&amp;gt;reviewer&amp;lt;/code&amp;gt;  - parse as '''p-author''', including compat root vcard in the absence of h-card&lt;br /&gt;
* &amp;lt;code&amp;gt;dtreviewed&amp;lt;/code&amp;gt; - parse as '''dt-published'''&lt;br /&gt;
* &amp;lt;code&amp;gt;rating&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;best&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;worst&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; - parse as '''e-content'''&lt;br /&gt;
* &amp;lt;code&amp;gt;rel=tag&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;'''. While not a class name nor typical microformats property, [[rel-tag|rel=tag]] was the typical way to tag an hreview. Thus parsers should look for rel=tag hyperlinks inside an hreview, and take the last path segment of their &amp;quot;href&amp;quot; value as a value for a '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' property.&lt;br /&gt;
* &amp;lt;code&amp;gt;rel=&amp;quot;self bookmark&amp;quot;&amp;lt;/code&amp;gt; - parse as '''u-url'''. note that &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute value is treated as a space separated set, thus any presence of &amp;quot;self&amp;quot; and &amp;quot;bookmark&amp;quot; within such a set in a rel value is accepted.&lt;br /&gt;
&lt;br /&gt;
Note: The [[hReview]] format has three properties which make use of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute, these are &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;, permalink (via the &amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt; values) and &amp;lt;code&amp;gt;license&amp;lt;/code&amp;gt;. Microformats 2 parsers {{should}} map these URLs into the page scoped rel collection.&lt;br /&gt;
&lt;br /&gt;
=== prior property names ===&lt;br /&gt;
There may be a handful of h-reviews out there (only one known so far) that use prior h-review property names. Parsers encountering these *may* interpret them as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dt-reviewed&amp;lt;/code&amp;gt; treat as a fallback for '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;e-description&amp;lt;/code&amp;gt; treat as a fallback for '''&amp;lt;code&amp;gt;e-content&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;p-reviewer&amp;lt;/code&amp;gt; treat as a fallback for '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
h-review is based on the existing [[hReview]] specification.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[h-card]]&lt;br /&gt;
* [[h-event]]&lt;br /&gt;
* [[h-adr]]&lt;br /&gt;
* [[h-geo]]&lt;br /&gt;
* [[h-product]] can all be embedded in h-review as the p-item&lt;br /&gt;
* [[h-item]] is a minimal microformat in case none of the others suitably represent the item being reviewed&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-review&amp;diff=70459</id>
		<title>h-review</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-review&amp;diff=70459"/>
		<updated>2021-12-05T22:04:47Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Properties */ Adds recipe (h-recipe) to list of things that might be reviewed in an instance of h-review.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:h-review}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-review&amp;lt;/dfn&amp;gt; is a simple, open format for publishing reviews on the web. h-review is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-review is the [[microformats2]] update to [[hReview]].&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here is a simple review example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;Microformats: is structured data worth it?&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;blockquote&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-item h-item&amp;quot; href=&amp;quot;http://microformats.org&amp;quot;&amp;gt;Microformats&amp;lt;/a&amp;gt; are the simplest way to publish structured data on the web.&lt;br /&gt;
  &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;p&amp;gt;&lt;br /&gt;
    &amp;lt;data class=&amp;quot;p-rating&amp;quot; value=&amp;quot;5&amp;quot;&amp;gt;★★★★★&amp;lt;/data&amp;gt;&lt;br /&gt;
    Published &amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-12 12:00:00&amp;quot;&amp;gt;12&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
    by &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/a&amp;gt;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Yes, microformats are undoubtedly great. They are the simplest way to markup structured data in HTML and reap the benefits thereof, including using your web page as your API by automatic conversion to JSON. The alternatives of microdata/schema and RDFa are much more work, require more markup, and are more complicated (harder to get right, more likely to break).&amp;lt;/p&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;
Parsed JSON:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&lt;br /&gt;
        &amp;quot;h-review&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&lt;br /&gt;
          &amp;quot;Microformats: is structured data worth it?&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;item&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Microformats&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
              &amp;quot;h-item&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: [&lt;br /&gt;
                &amp;quot;Microformats&amp;quot;&lt;br /&gt;
              ],&lt;br /&gt;
              &amp;quot;url&amp;quot;: [&lt;br /&gt;
                &amp;quot;http://microformats.org&amp;quot;&lt;br /&gt;
              ]&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;rating&amp;quot;: [&lt;br /&gt;
          &amp;quot;5&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;published&amp;quot;: [&lt;br /&gt;
          &amp;quot;2013-06-12 12:00:00&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Joe Bloggs&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
              &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: [&lt;br /&gt;
                &amp;quot;Joe Bloggs&amp;quot;&lt;br /&gt;
              ],&lt;br /&gt;
              &amp;quot;url&amp;quot;: [&lt;br /&gt;
                &amp;quot;http://example.com&amp;quot;&lt;br /&gt;
              ]&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;content&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Yes, microformats are undoubtedly great. They are the simplest way to markup structured data in HTML and reap the benefits thereof, including using your web page as your API by automatic conversion to JSON. The alternatives of microdata/schema and RDFa are much more work, require more markup, and are more complicated (harder to get right, more likely to break).&amp;quot;,&lt;br /&gt;
            &amp;quot;html&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;Yes, microformats are undoubtedly great. They are the simplest way to markup structured data in HTML and reap the benefits thereof, including using your web page as your API by automatic conversion to JSON. The alternatives of microdata/schema and RDFa are much more work, require more markup, and are more complicated (harder to get right, more likely to break).&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-review.&lt;br /&gt;
&lt;br /&gt;
'''p-name''', '''p-item''', '''p-rating''', '''dt-published''', '''p-author''', '''e-content''' and the other property class names listed below defined elements as ''properties'' of the h-review.&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-item&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates an embedded '''[[h-item]]''' for the p-item property.&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates an embedded '''[[h-card]]''' for the p-author property.&lt;br /&gt;
&lt;br /&gt;
See [[microformats2-parsing]] to learn more about property class names.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-review properties, inside an element with class '''h-review''':&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - name of the review&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-item&amp;lt;/code&amp;gt;''' - thing being reviewed, including embedded microformat for e.g. business or person ([[h-card]]), event ([[h-event]]), place ([[h-adr]] or [[h-geo]]), product ([[h-product]]), recipe([[h-recipe]]), website, url, or other item ([[h-item]]).&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''' - person who authored the review, optionally with an embedded [[h-card]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;''' - date time of when the review was written and published&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-rating&amp;lt;/code&amp;gt;''' - value from 1-5 indicating a rating for the item (5 best).&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-best&amp;lt;/code&amp;gt;'''  - define best rating value. can be numerically lower than worst.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-worst&amp;lt;/code&amp;gt;'''  - define worst rating value. can be numerically higher than best. &lt;br /&gt;
* '''&amp;lt;code&amp;gt;e-content&amp;lt;/code&amp;gt;''' - the full text written evaluation and opinion of the reviewer&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - freeform categories or tags applied to the item by the reviewer &lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - review permalink URL&lt;br /&gt;
&lt;br /&gt;
All properties are optional.&lt;br /&gt;
&lt;br /&gt;
Experimental properties currently in use in the wild but not (yet) part of the official h-review spec. Several of these seem to be because of h-review convergence towards [[h-entry]], as h-review gets used alongside h-entry within [[h-feed]]:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-location&amp;lt;/code&amp;gt;''' - location the review was posted from, optionally embed [[h-card]], [[h-adr]], or [[h-geo]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-summary&amp;lt;/code&amp;gt;''' - short review summary&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-syndication&amp;lt;/code&amp;gt;''' - URL(s) of syndicated copies of this review. The property equivalent of [[rel-syndication]] ([https://aaronparecki.com/2018/01/29/10/ example] with [https://www.amazon.com/review/R1P2C3ATN75836/ref=pe_1098610_137716200_cm_rv_eml_rv0_rv syndication to Amazon])&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-review''' is a microformats.org draft specification. Public discussion on h-review takes place on [[h-review-feedback]] and the #microformats [[irc]] channel on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
h-review is ready to use.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
(stub, add any property explanations here)&lt;br /&gt;
&lt;br /&gt;
== Examples in the Wild ==&lt;br /&gt;
* … add any h-review examples you find in the wild&lt;br /&gt;
* https://cleverdevil.io/2015/blood-rites-book-six-of-the-dresden-files&lt;br /&gt;
* https://aaronparecki.com/2018/01/29/10/ (more on Aaron’s [https://aaronparecki.com/reviews review feed])&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
* [https://github.com/cleverdevil/Known-Reviews Reviews plugin for Known CMS] by [https://cleverdevil.io Jonathan LaCour].&lt;br /&gt;
** [https://github.com/cleverdevil/Known-Reviews/pull/4 pending pull request to sync with spec update 2016-05-29] -t&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
For backward compatibility, you may wish to use classic [[hReview]] classnames on an h-review permalink page in addition to the more future-proof h-review properties, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review hreview&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name fn&amp;quot;&amp;gt;My great review&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [https://aaronparecki.com/ Aaron Parecki]’s [https://aaronparecki.com/2016/12/17/8/owning-my-reviews Why Microformats? Owning My Reviews] for a reason to be backwards compatible.&lt;br /&gt;
&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers should detect classic properties and parse them as microformats 2 properties. If an &amp;quot;h-review&amp;quot; is found, don't look for an &amp;quot;hReview&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
Compatibility root class name: hreview&lt;br /&gt;
&lt;br /&gt;
Properties: (parsed as p- plain text unless otherwise specified)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;summary&amp;lt;/code&amp;gt; parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''p-name''' of the item being reviewed (p-item h-item p-name)&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-photo''' of the item being reviewed (p-item h-item u-photo)&lt;br /&gt;
* &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-url''' of the item being reviewed (p-item h-item u-url)&lt;br /&gt;
* &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; (without vcard, vevent, hproduct) - parse as '''p-item h-item''' including backcompat nested properties:&lt;br /&gt;
** &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''p-name''' of the item being reviewed (p-item h-item p-name)&lt;br /&gt;
** &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-photo''' of the item being reviewed (p-item h-item u-photo)&lt;br /&gt;
** &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-url''' of the item being reviewed (p-item h-item u-url)&lt;br /&gt;
* &amp;lt;code&amp;gt;item vcard&amp;lt;/code&amp;gt; - parse as '''p-item h-card''' including backcompat [[hCard]] parsing&lt;br /&gt;
* &amp;lt;code&amp;gt;item vevent&amp;lt;/code&amp;gt; - parse as '''p-item h-event''' including backcompat [[hCalendar]] vevent property parsing&lt;br /&gt;
* &amp;lt;code&amp;gt;item hproduct&amp;lt;/code&amp;gt; - parse as '''p-item h-product''' including backcompat [[hProduct]] parsing&lt;br /&gt;
* &amp;lt;code&amp;gt;reviewer&amp;lt;/code&amp;gt;  - parse as '''p-author''', including compat root vcard in the absence of h-card&lt;br /&gt;
* &amp;lt;code&amp;gt;dtreviewed&amp;lt;/code&amp;gt; - parse as '''dt-published'''&lt;br /&gt;
* &amp;lt;code&amp;gt;rating&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;best&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;worst&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; - parse as '''e-content'''&lt;br /&gt;
* &amp;lt;code&amp;gt;rel=tag&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;'''. While not a class name nor typical microformats property, [[rel-tag|rel=tag]] was the typical way to tag an hreview. Thus parsers should look for rel=tag hyperlinks inside an hreview, and take the last path segment of their &amp;quot;href&amp;quot; value as a value for a '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' property.&lt;br /&gt;
* &amp;lt;code&amp;gt;rel=&amp;quot;self bookmark&amp;quot;&amp;lt;/code&amp;gt; - parse as '''u-url'''. note that &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute value is treated as a space separated set, thus any presence of &amp;quot;self&amp;quot; and &amp;quot;bookmark&amp;quot; within such a set in a rel value is accepted.&lt;br /&gt;
&lt;br /&gt;
Note: The [[hReview]] format has three properties which make use of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute, these are &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;, permalink (via the &amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt; values) and &amp;lt;code&amp;gt;license&amp;lt;/code&amp;gt;. Microformats 2 parsers {{should}} map these URLs into the page scoped rel collection.&lt;br /&gt;
&lt;br /&gt;
=== prior property names ===&lt;br /&gt;
There may be a handful of h-reviews out there (only one known so far) that use prior h-review property names. Parsers encountering these *may* interpret them as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dt-reviewed&amp;lt;/code&amp;gt; treat as a fallback for '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;e-description&amp;lt;/code&amp;gt; treat as a fallback for '''&amp;lt;code&amp;gt;e-content&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;p-reviewer&amp;lt;/code&amp;gt; treat as a fallback for '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
h-review is based on the existing [[hReview]] specification.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[h-card]]&lt;br /&gt;
* [[h-event]]&lt;br /&gt;
* [[h-adr]]&lt;br /&gt;
* [[h-geo]]&lt;br /&gt;
* [[h-product]] can all be embedded in h-review as the p-item&lt;br /&gt;
* [[h-item]] is a minimal microformat in case none of the others suitably represent the item being reviewed&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-review&amp;diff=70458</id>
		<title>h-review</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-review&amp;diff=70458"/>
		<updated>2021-12-05T22:02:03Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Properties */ spelling correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:h-review}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-review&amp;lt;/dfn&amp;gt; is a simple, open format for publishing reviews on the web. h-review is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-review is the [[microformats2]] update to [[hReview]].&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here is a simple review example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;Microformats: is structured data worth it?&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;blockquote&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-item h-item&amp;quot; href=&amp;quot;http://microformats.org&amp;quot;&amp;gt;Microformats&amp;lt;/a&amp;gt; are the simplest way to publish structured data on the web.&lt;br /&gt;
  &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;p&amp;gt;&lt;br /&gt;
    &amp;lt;data class=&amp;quot;p-rating&amp;quot; value=&amp;quot;5&amp;quot;&amp;gt;★★★★★&amp;lt;/data&amp;gt;&lt;br /&gt;
    Published &amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-12 12:00:00&amp;quot;&amp;gt;12&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
    by &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/a&amp;gt;.&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Yes, microformats are undoubtedly great. They are the simplest way to markup structured data in HTML and reap the benefits thereof, including using your web page as your API by automatic conversion to JSON. The alternatives of microdata/schema and RDFa are much more work, require more markup, and are more complicated (harder to get right, more likely to break).&amp;lt;/p&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;
Parsed JSON:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&lt;br /&gt;
        &amp;quot;h-review&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&lt;br /&gt;
          &amp;quot;Microformats: is structured data worth it?&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;item&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Microformats&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
              &amp;quot;h-item&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: [&lt;br /&gt;
                &amp;quot;Microformats&amp;quot;&lt;br /&gt;
              ],&lt;br /&gt;
              &amp;quot;url&amp;quot;: [&lt;br /&gt;
                &amp;quot;http://microformats.org&amp;quot;&lt;br /&gt;
              ]&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;rating&amp;quot;: [&lt;br /&gt;
          &amp;quot;5&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;published&amp;quot;: [&lt;br /&gt;
          &amp;quot;2013-06-12 12:00:00&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Joe Bloggs&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
              &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
              &amp;quot;name&amp;quot;: [&lt;br /&gt;
                &amp;quot;Joe Bloggs&amp;quot;&lt;br /&gt;
              ],&lt;br /&gt;
              &amp;quot;url&amp;quot;: [&lt;br /&gt;
                &amp;quot;http://example.com&amp;quot;&lt;br /&gt;
              ]&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;content&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Yes, microformats are undoubtedly great. They are the simplest way to markup structured data in HTML and reap the benefits thereof, including using your web page as your API by automatic conversion to JSON. The alternatives of microdata/schema and RDFa are much more work, require more markup, and are more complicated (harder to get right, more likely to break).&amp;quot;,&lt;br /&gt;
            &amp;quot;html&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;Yes, microformats are undoubtedly great. They are the simplest way to markup structured data in HTML and reap the benefits thereof, including using your web page as your API by automatic conversion to JSON. The alternatives of microdata/schema and RDFa are much more work, require more markup, and are more complicated (harder to get right, more likely to break).&amp;lt;/p&amp;gt;&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-review.&lt;br /&gt;
&lt;br /&gt;
'''p-name''', '''p-item''', '''p-rating''', '''dt-published''', '''p-author''', '''e-content''' and the other property class names listed below defined elements as ''properties'' of the h-review.&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-item&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates an embedded '''[[h-item]]''' for the p-item property.&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates an embedded '''[[h-card]]''' for the p-author property.&lt;br /&gt;
&lt;br /&gt;
See [[microformats2-parsing]] to learn more about property class names.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-review properties, inside an element with class '''h-review''':&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - name of the review&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-item&amp;lt;/code&amp;gt;''' - thing being reviewed, including embedded microformat for e.g. business or person ([[h-card]]), event ([[h-event]]), place ([[h-adr]] or [[h-geo]]), product ([[h-product]]), website, url, or other item ([[h-item]]).&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''' - person who authored the review, optionally with an embedded [[h-card]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;''' - date time of when the review was written and published&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-rating&amp;lt;/code&amp;gt;''' - value from 1-5 indicating a rating for the item (5 best).&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-best&amp;lt;/code&amp;gt;'''  - define best rating value. can be numerically lower than worst.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-worst&amp;lt;/code&amp;gt;'''  - define worst rating value. can be numerically higher than best. &lt;br /&gt;
* '''&amp;lt;code&amp;gt;e-content&amp;lt;/code&amp;gt;''' - the full text written evaluation and opinion of the reviewer&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - freeform categories or tags applied to the item by the reviewer &lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - review permalink URL&lt;br /&gt;
&lt;br /&gt;
All properties are optional.&lt;br /&gt;
&lt;br /&gt;
Experimental properties currently in use in the wild but not (yet) part of the official h-review spec. Several of these seem to be because of h-review convergence towards [[h-entry]], as h-review gets used alongside h-entry within [[h-feed]]:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-location&amp;lt;/code&amp;gt;''' - location the review was posted from, optionally embed [[h-card]], [[h-adr]], or [[h-geo]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-summary&amp;lt;/code&amp;gt;''' - short review summary&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-syndication&amp;lt;/code&amp;gt;''' - URL(s) of syndicated copies of this review. The property equivalent of [[rel-syndication]] ([https://aaronparecki.com/2018/01/29/10/ example] with [https://www.amazon.com/review/R1P2C3ATN75836/ref=pe_1098610_137716200_cm_rv_eml_rv0_rv syndication to Amazon])&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-review''' is a microformats.org draft specification. Public discussion on h-review takes place on [[h-review-feedback]] and the #microformats [[irc]] channel on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
h-review is ready to use.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
(stub, add any property explanations here)&lt;br /&gt;
&lt;br /&gt;
== Examples in the Wild ==&lt;br /&gt;
* … add any h-review examples you find in the wild&lt;br /&gt;
* https://cleverdevil.io/2015/blood-rites-book-six-of-the-dresden-files&lt;br /&gt;
* https://aaronparecki.com/2018/01/29/10/ (more on Aaron’s [https://aaronparecki.com/reviews review feed])&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
* [https://github.com/cleverdevil/Known-Reviews Reviews plugin for Known CMS] by [https://cleverdevil.io Jonathan LaCour].&lt;br /&gt;
** [https://github.com/cleverdevil/Known-Reviews/pull/4 pending pull request to sync with spec update 2016-05-29] -t&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
For backward compatibility, you may wish to use classic [[hReview]] classnames on an h-review permalink page in addition to the more future-proof h-review properties, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review hreview&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name fn&amp;quot;&amp;gt;My great review&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [https://aaronparecki.com/ Aaron Parecki]’s [https://aaronparecki.com/2016/12/17/8/owning-my-reviews Why Microformats? Owning My Reviews] for a reason to be backwards compatible.&lt;br /&gt;
&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers should detect classic properties and parse them as microformats 2 properties. If an &amp;quot;h-review&amp;quot; is found, don't look for an &amp;quot;hReview&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
Compatibility root class name: hreview&lt;br /&gt;
&lt;br /&gt;
Properties: (parsed as p- plain text unless otherwise specified)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;summary&amp;lt;/code&amp;gt; parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''p-name''' of the item being reviewed (p-item h-item p-name)&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-photo''' of the item being reviewed (p-item h-item u-photo)&lt;br /&gt;
* &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-url''' of the item being reviewed (p-item h-item u-url)&lt;br /&gt;
* &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; (without vcard, vevent, hproduct) - parse as '''p-item h-item''' including backcompat nested properties:&lt;br /&gt;
** &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''p-name''' of the item being reviewed (p-item h-item p-name)&lt;br /&gt;
** &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-photo''' of the item being reviewed (p-item h-item u-photo)&lt;br /&gt;
** &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-url''' of the item being reviewed (p-item h-item u-url)&lt;br /&gt;
* &amp;lt;code&amp;gt;item vcard&amp;lt;/code&amp;gt; - parse as '''p-item h-card''' including backcompat [[hCard]] parsing&lt;br /&gt;
* &amp;lt;code&amp;gt;item vevent&amp;lt;/code&amp;gt; - parse as '''p-item h-event''' including backcompat [[hCalendar]] vevent property parsing&lt;br /&gt;
* &amp;lt;code&amp;gt;item hproduct&amp;lt;/code&amp;gt; - parse as '''p-item h-product''' including backcompat [[hProduct]] parsing&lt;br /&gt;
* &amp;lt;code&amp;gt;reviewer&amp;lt;/code&amp;gt;  - parse as '''p-author''', including compat root vcard in the absence of h-card&lt;br /&gt;
* &amp;lt;code&amp;gt;dtreviewed&amp;lt;/code&amp;gt; - parse as '''dt-published'''&lt;br /&gt;
* &amp;lt;code&amp;gt;rating&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;best&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;worst&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; - parse as '''e-content'''&lt;br /&gt;
* &amp;lt;code&amp;gt;rel=tag&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;'''. While not a class name nor typical microformats property, [[rel-tag|rel=tag]] was the typical way to tag an hreview. Thus parsers should look for rel=tag hyperlinks inside an hreview, and take the last path segment of their &amp;quot;href&amp;quot; value as a value for a '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' property.&lt;br /&gt;
* &amp;lt;code&amp;gt;rel=&amp;quot;self bookmark&amp;quot;&amp;lt;/code&amp;gt; - parse as '''u-url'''. note that &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute value is treated as a space separated set, thus any presence of &amp;quot;self&amp;quot; and &amp;quot;bookmark&amp;quot; within such a set in a rel value is accepted.&lt;br /&gt;
&lt;br /&gt;
Note: The [[hReview]] format has three properties which make use of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute, these are &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;, permalink (via the &amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt; values) and &amp;lt;code&amp;gt;license&amp;lt;/code&amp;gt;. Microformats 2 parsers {{should}} map these URLs into the page scoped rel collection.&lt;br /&gt;
&lt;br /&gt;
=== prior property names ===&lt;br /&gt;
There may be a handful of h-reviews out there (only one known so far) that use prior h-review property names. Parsers encountering these *may* interpret them as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;dt-reviewed&amp;lt;/code&amp;gt; treat as a fallback for '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;e-description&amp;lt;/code&amp;gt; treat as a fallback for '''&amp;lt;code&amp;gt;e-content&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;p-reviewer&amp;lt;/code&amp;gt; treat as a fallback for '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
h-review is based on the existing [[hReview]] specification.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[h-card]]&lt;br /&gt;
* [[h-event]]&lt;br /&gt;
* [[h-adr]]&lt;br /&gt;
* [[h-geo]]&lt;br /&gt;
* [[h-product]] can all be embedded in h-review as the p-item&lt;br /&gt;
* [[h-item]] is a minimal microformat in case none of the others suitably represent the item being reviewed&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=opening-hours-formats&amp;diff=70367</id>
		<title>opening-hours-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=opening-hours-formats&amp;diff=70367"/>
		<updated>2021-02-27T21:28:06Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* opening hours property */ Fixes sentence.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:opening hours formats}}&lt;br /&gt;
&lt;br /&gt;
This is part of an effort per the microformats [[process]] to research, gather examples, and brainstorm for a microformat for marking up the [[opening-hours]] for a business or organization.&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenStreetMap ==&lt;br /&gt;
OpenStreetMap allows venues to be tagged with the [https://wiki.openstreetmap.org/wiki/Opening_hours &amp;lt;var&amp;gt;opening_hours&amp;lt;/var&amp;gt;] tag. The value of this tag has been formalized and is defined in the [http://www.netzwolf.info/en/cartography/osm/time_domain/ TimeDomain specification], where there is also a JavaScript implementation.&lt;br /&gt;
&lt;br /&gt;
[http://wiki.openstreetmap.org/wiki/Key:opening_hours Key:opening_hours] is also defined on the OSM Wiki. &lt;br /&gt;
&lt;br /&gt;
The same string-based format is used to mark the times of religious services in places of worship using the [https://wiki.openstreetmap.org/wiki/Key:service_times &amp;lt;var&amp;gt;service_times&amp;lt;/var&amp;gt;] tag, the times of collections from post boxes with the [https://wiki.openstreetmap.org/wiki/Key:collection_times &amp;lt;var&amp;gt;collection-times&amp;lt;/var&amp;gt;] tag, and there is a proposal to mark venues which allow smoking (possibly in a separate area) with the [https://wiki.openstreetmap.org/wiki/Key:smoking_hours &amp;lt;var&amp;gt;smoking_hours&amp;lt;/var&amp;gt;] tag, and also with the 'lit' tag to specify when a feature (e.g. building) is lit up.&lt;br /&gt;
&lt;br /&gt;
A broader proposal also exists for using the &amp;lt;var&amp;gt;opening_hours&amp;lt;/var&amp;gt; format for describing [https://wiki.openstreetmap.org/wiki/Conditional_restrictions conditional restrictions], for instance roads that have speed limits that vary depending on time of day, and roads that allow only specific types of traffic (buses and bicycles, for instance) during periods of the day.&lt;br /&gt;
&lt;br /&gt;
Comments can also be added in quotations.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Tu-Su 08:00-15:00;Sa 08:00-12:00 – see [http://www.openstreetmap.org/browse/node/624582426 node:624582426], a cafe in Terlizzi, Italy.&lt;br /&gt;
&lt;br /&gt;
== Google maps display ==&lt;br /&gt;
Google places uses this format to *display* the opening hours, and then applies some javascript to hide the lines which are not immediately useful:&lt;br /&gt;
The translate the day names and the time formats into the users locale. &lt;br /&gt;
&lt;br /&gt;
This is clearly rendered data for end user consumption and not a format one can use to establish a standard.&lt;br /&gt;
 &lt;br /&gt;
See an example here with opening hours: http://maps.google.com/maps/place?cid=17374953169507020841&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;&amp;quot; id=&amp;quot;oh-ov-table&amp;quot; class=&amp;quot;oh-table&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tbody&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;oh-highlight-day&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Montag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            11:00-16:00&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Dienstag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            11:00-22:00&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Mittwoch&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            11:00-22:00&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Donnerstag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            11:00-22:00&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Freitag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            11:00-16:00&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Samstag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            Geschlossen&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Sonntag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            Geschlossen&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/tbody&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== schema.org ==&lt;br /&gt;
=== opening hours property===&lt;br /&gt;
schema.org has an [https://schema.org/openingHours opening hours] &amp;lt;dfn&amp;gt;property&amp;lt;/dfn&amp;gt;. Days are specified with two letter abbreviations, e.g. &amp;lt;abbr title=&amp;quot;Monday&amp;quot;&amp;gt;Mo&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Tuesday&amp;quot;&amp;gt;Tu&amp;lt;/abbr&amp;gt;, etc.; days can be comma separated for separate days or a range can be specified with a hyphen. Times are specified in 24 hour format. Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;data lang=&amp;quot;en&amp;quot; itemprop=&amp;quot;openingHours&amp;quot; value=&amp;quot;Mo,We,Fr 09:00-13:00&amp;quot;&amp;gt;Open Monday, Wednesday, Friday 9am-1pm&amp;lt;/data&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;data lang=&amp;quot;en&amp;quot; itemprop=&amp;quot;openingHours&amp;quot; value=&amp;quot;Mo-Fr 09:00-13:00&amp;quot;&amp;gt;Open Monday-Friday 9am-1pm&amp;lt;/data&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;data lang=&amp;quot;fr&amp;quot; itemprop=&amp;quot;openingHours&amp;quot; value=&amp;quot;Mo,We,Fr 09:00-13:00&amp;quot;&amp;gt;Disponible lundi, mercredi, vendredi 9:00-13:00&amp;lt;/data&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;data lang=&amp;quot;de&amp;quot; itemprop=&amp;quot;openingHours&amp;quot; value=&amp;quot;Mo,We,Fr 09:00-13:00&amp;quot;&amp;gt;Montag, Mittwoch, Freitag 9:00-13:00&amp;lt;/data&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the examples from the [https://schema.org/openingHours schema website] use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; attribute on the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element. This does not appear to be allowed in [https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes html]. These examples were changed to use the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; element with the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
&lt;br /&gt;
=== opening hours type ===&lt;br /&gt;
There is also a [https://schema.org/OpeningHoursSpecification Opening Hours Specification] &amp;lt;dfn&amp;gt;type&amp;lt;/dfn&amp;gt;, which can use the opening hours property along with more granular properties to specify exceptions, e.g., &amp;quot;open 9-6 except on New Year's Day.&amp;quot; This type has a more complex syntax. There is a dayOfWeek property that uses a url to specify the day, e.g. https://schema.org/Tuesday. There are separate properties for opens and closes. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Opening hours&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p itemprop=&amp;quot;openingHoursSpecification&amp;quot; itemscope itemtype=&amp;quot;https://schema.org/OpeningHoursSpecification&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span itemprop=&amp;quot;dayOfWeek&amp;quot; href=&amp;quot;https://schema.org/Monday&amp;quot;&amp;gt;Monday&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;time itemprop=&amp;quot;opens&amp;quot; content=&amp;quot;09:00&amp;quot;&amp;gt;9:00 AM&amp;lt;/time&amp;gt; - &amp;lt;time itemprop=&amp;quot;closes&amp;quot; content=&amp;quot;17:00&amp;quot;&amp;gt;5:00 PM&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p itemprop=&amp;quot;openingHoursSpecification&amp;quot; itemscope itemtype=&amp;quot;https://schema.org/OpeningHoursSpecification&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span itemprop=&amp;quot;dayOfWeek&amp;quot; href=&amp;quot;https://schema.org/Tuesday&amp;quot;&amp;gt;Tuesday&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;time itemprop=&amp;quot;opens&amp;quot; content=&amp;quot;09:00:00&amp;quot;&amp;gt;9:00 AM&amp;lt;/time&amp;gt; - &amp;lt;time itemprop=&amp;quot;closes&amp;quot; content=&amp;quot;17:00:00&amp;quot;&amp;gt;5:00 PM&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== hCard extension workhours ==&lt;br /&gt;
Yandex implements a property &amp;quot;workhours&amp;quot; as an extension to [[hCard]], per http://www.step-up-web.ru/hcard/ (from [[articles-ru]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
workhours — Время работы организации. Свойство не предусмотрено стандартом hCard, оно добавлено Яндексом в качестве расширения. Для указания времени работы мы рекомендуем формат, используемый в Справочнике организаций, например:&lt;br /&gt;
&lt;br /&gt;
* пн-пт 9:00-18:00&lt;br /&gt;
* пн-пт 9:00-18:00, обед 13:00-14:00, сб-вс 10:00-17:00, обед 13:30-14:00&lt;br /&gt;
* пн-сб 11:00-20:00, вс 12:00-24:00&lt;br /&gt;
* ежедн. 10:00-24:00&lt;br /&gt;
* круглосуточно&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation via Google translate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
workhours - Time of the organization. The property is not provided by standard hCard, it is added as an extension by Yandex. To specify the working hours, we recommend that the format used in the directory of organizations, such as:&lt;br /&gt;
&lt;br /&gt;
* Mon-Fri 9:00-18:00&lt;br /&gt;
* Mon-Fri 9:00-18:00, lunch 13:00-14:00, Sat-Sun 10:00-17:00, lunch 13:30-14:00&lt;br /&gt;
* Mon-Sat 11:00-20:00, Sun 12:00-24:00&lt;br /&gt;
* Daily. 10:00-24:00&lt;br /&gt;
* around the clock &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since this is a translation, it is not clear if Yandex would support parsing the translated values (they may or may not). However, the translation is still useful for consideration from a design perspective towards a microformats solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[opening-hours]]&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70366</id>
		<title>opening-hours-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70366"/>
		<updated>2021-02-27T21:14:12Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Jacky's Idea for Rendering a Week of Hours */ Adds indentation to make thread easier to follow.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:opening hours brainstorming}}&lt;br /&gt;
This is part of an effort per the microformats [[process]] to research, gather examples, and brainstorm for a microformat for marking up the '''opening hours''' for a business or organization.&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== brainstorming ==&lt;br /&gt;
Brainstorming proposals should only be written up after examples and formats research has been completed per the [[process]].&lt;br /&gt;
&lt;br /&gt;
=== calendar of unnamed events ===&lt;br /&gt;
As suggested by jacky in [[irc]], a calendar of unnamed events (using [[h-event]]), perhaps nested in the venue's [[h-card]], maybe sufficient to imply/convey opening hours for those days.&lt;br /&gt;
&lt;br /&gt;
* I think opening hours is worth its own type. `h-x-opening-hours` or some such thing. With a single property that is a nested h-event. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:38, 20 February 2021 (UTC)&lt;br /&gt;
** My only hesistation against making a new type is that the 'specifics' are things that can be defined by a machine (when to start, when to end) and everything else is human-specific (and thus a rendering layer). [[User:Jacky|Jacky]] 18:41, 20 Feb 2021 PST&lt;br /&gt;
** A new microformat (h-*) feels like it's taking on too big of a problem when we can probably find smaller problems to solve first (per [[process|The microformats process]]). A problem I think I saw come up in chat is how to represent the time for a day of the week. Maybe we could work on how to represent a &amp;quot;day-of-week relative&amp;quot; time with existing properties in an h-event. [[User:GRegorLove|gRegor]] ([[User talk:GRegorLove|talk]]) 20:58, 23 February 2021 (UTC)&lt;br /&gt;
*** What is the use case for &amp;quot;'day-of-week relative' time&amp;quot;? I assume this is something different to a specific date, so not Saturday 2021-02-27T13:00. The problem is html5's datetime attribute doesn't have a way to specify day of week. Such things are in various iso specs, but those conventions would have to be ported to html5. That's obviously outside the scope of microformats. If you have details about what came up in chat, I'd be curious to see the problem. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 21:03, 27 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== [[User:Jacky|Jacky]]'s Idea for Rendering a Week of Hours ====&lt;br /&gt;
&lt;br /&gt;
Main Page:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;aside class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
   We're open &amp;lt;a class=&amp;quot;h-event u-url&amp;quot; href=&amp;quot;/open-days&amp;quot; rel=&amp;quot;calendar&amp;quot; title=&amp;quot;Open Hours&amp;quot;&amp;gt;Tuesdays to Fridays from 10 AM to 9 PM&amp;lt;/a&amp;gt;, closed Sundays, Saturdays and Mondays.&lt;br /&gt;
 &amp;lt;/aside&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Event Page:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;aside class=&amp;quot;h-feed&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;h2 class=&amp;quot;p-name&amp;quot;&amp;gt;Hours&amp;lt;/h2&amp;gt;&lt;br /&gt;
     &amp;lt;p class=&amp;quot;h-event&amp;quot; id=&amp;quot;Monday&amp;quot;&amp;gt;Closed on &amp;lt;a href=&amp;quot;#Monday&amp;quot; class=&amp;quot;u-url p-name&amp;quot;&amp;gt;Mondays&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;p class=&amp;quot;h-event&amp;quot; id=&amp;quot;Tuesday&amp;quot;&amp;gt;Open on &amp;lt;a href=&amp;quot;#Tuesday&amp;quot; class=&amp;quot;u-url p-name&amp;quot;&amp;gt;Tuesdays&amp;lt;/a&amp;gt; from &amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;09:00:00&amp;quot;&amp;gt;9 AM&amp;lt;/time&amp;gt; to &amp;lt;time class=&amp;quot;dt-end&amp;quot; datetime=&amp;quot;18:00:00&amp;quot;&amp;gt;6 PM&amp;lt;/time&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/aside&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some thoughts:&lt;br /&gt;
&lt;br /&gt;
* Using `h-feed` for a feed of events raises some issues: [[h-feed]] is explicitly described as &amp;quot;a stream or feed of h-entry posts&amp;quot;. I suppose that could be changed, but it requires changing a fairly stable spec. And it means that authors who are new to microformats will have to learn how to distinguish them. I think a new type should be used to avoid confusion. Note that [[hCalendar]] was created as a 1:1 html version of iCalendar, a ''collection'' of events; microformats2's [[h-event]] is for a ''single'' event. If we go with a feed of events, we should revive the iCalendar idea. We need to give it a name that makes it clear it's a feed of events. Perhaps '''h-feed-events'''? [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:15, 21 February 2021 (UTC)&lt;br /&gt;
** There are two GitHub issues (https://github.com/microformats/h-feed/issues/3 and https://github.com/microformats/h-entry/issues/16) arguing against me and for broadening [[h-feed]]'s use. So that might be the way to go. I still think we need a way to determine that the feed specifies opening hours, perhaps with a p-children-type for h-feed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 20:11, 21 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
* I don't understand how the &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attributes and url fragment urls are supposed to work. The fragment urls link to their own p containers. Is that supposed to convey that this is a repeating event? [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:27, 21 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== simple class proposal ===&lt;br /&gt;
proposed format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;operating-hours&amp;quot;&amp;gt;&lt;br /&gt;
 Tu-Sa 08:00-15:00; Sa 08:00-12:00&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
see it here: http://www.geodatacheck.com/p/2&lt;br /&gt;
&lt;br /&gt;
Use a semicolon to separate the different days or or time ranges. &lt;br /&gt;
Use two letter english day names. Times are local times with leading zero&lt;br /&gt;
&lt;br /&gt;
This is the format as used in openstreetmap.org for a node description with opening hours. Openstreetmap has very rigid semantics, so it makes sense to follow their format.&lt;br /&gt;
There are several issues with proposal:&lt;br /&gt;
&amp;lt;div class=&amp;quot;issues discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''citation needed''' - please provide a link to where Openstreetmap defines this format on the [[opening-hours-formats]] page. - [[User:Tantek|Tantek]] 18:08, 21 December 2012 (UTC)&lt;br /&gt;
* no real world use case.  how would such a microformat help users? this should be documented in the introduction to an [[opening-hours]] effort. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* proposal is 'a priori' - that is proposal has been made without documentation of real world examples per the [[process]].  please document real world [[examples]] of pages that would benefit from this markup so we can design the format only for their needs and no more. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* did not research previous formats. we have no idea if this effort is reinventing various wheels or not. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* uses new datetime formats, e.g. &amp;quot;Tu-Sa&amp;quot;. Is there some way to re-use ISO8601 instead? - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* not international, e.g. &amp;quot;Tu-Sa&amp;quot;. this could be addressed with ISO8601 usage instead. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't see anything in [https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601] to specify days of the week. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 17:02, 16 December 2020 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operating Hours Brainstorming ===&lt;br /&gt;
:This section was merged from [[operating-hours]]&lt;br /&gt;
&lt;br /&gt;
This section documents a method that can be used to mark up the operating hours of stores, restaurants, museums, offices, and other establishments that have set hours and are open on a regular basis. This is based on the [[hCalendar]] microformat.&lt;br /&gt;
&lt;br /&gt;
==== Discussion Participants ====&lt;br /&gt;
===== Authors =====&lt;br /&gt;
* [http://dragotown.com Nick Drago]&lt;br /&gt;
* [http://suda.co.uk/ Brian Suda]&lt;br /&gt;
&lt;br /&gt;
===== Contributors =====&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
This effort came about as a result of the need for a human and machine readable markup format that can be used to define the operating hours of establishments.&lt;br /&gt;
&lt;br /&gt;
Stores, businesses, etc. often provide their operating hours on their websites. With the addition of a small bit of markup, they are able to define their operating hours on their websites in such a way that spiders and other aggregators can retrieve such hours, automatically convert them to the iCalendar format, and use this data in any iCalendar application or service.&lt;br /&gt;
&lt;br /&gt;
==== Using RRULE in hCalendar ====&lt;br /&gt;
This was suggested [http://microformats.org/discuss/mail/microformats-discuss/2007-February/008562.html] by Brian. Is this the most appropriate method? --Nick&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// example definition of operating hours using RRULE in hCalendar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Pardon the Interruption&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;url uid summary&amp;quot;&lt;br /&gt;
href=&amp;quot;http://sports.espn.go.com/...&amp;quot;&amp;gt;Pardon the Interruption&amp;lt;/a&amp;gt;&lt;br /&gt;
  is a &amp;lt;span class=&amp;quot;category&amp;quot;&amp;gt;TV&amp;lt;/span&amp;gt; &amp;lt;span&lt;br /&gt;
class=&amp;quot;category&amp;quot;&amp;gt;sports&amp;lt;/span&amp;gt; show.&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;dtstart&amp;quot; title=&amp;quot;2001-10-22&amp;quot;&amp;gt;It airs&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;rrule&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;freq&amp;quot;&amp;gt;weekly&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;abbr class=&amp;quot;byday&amp;quot; title=&amp;quot;mo,tu,we,th,fr&amp;quot;&amp;gt;Monday to&lt;br /&gt;
Friday&amp;lt;/abbr&amp;gt; at &amp;lt;abbr class=&amp;quot;byhour&amp;quot; title=&amp;quot;5&amp;quot;&amp;gt;5:30pm&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- timezones should be avoided --&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;tzid&amp;quot; title=&amp;quot;US-Eastern&amp;quot;&amp;gt;ET&amp;lt;/abbr&amp;gt; on ESPN.&lt;br /&gt;
&lt;br /&gt;
  The hosts of the show are longtime friends&lt;br /&gt;
  &amp;lt;span class=&amp;quot;hcard&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;span class=&amp;quot;fn n&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;span class=&amp;quot;given-name&amp;quot;&amp;gt;Tony&amp;lt;/span&amp;gt;&lt;br /&gt;
          &amp;lt;span class=&amp;quot;family-name&amp;quot;&amp;gt;Kornheiser&amp;lt;/span&amp;gt;&lt;br /&gt;
      &amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
  and ... (hCard for Michael Wilbon not shown)&lt;br /&gt;
  &amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;They discuss - and frequently argue over&lt;br /&gt;
- the top stories of the&lt;br /&gt;
  day in &amp;quot;sports... and other stuff&amp;quot;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== References ====&lt;br /&gt;
===== Normative References =====&lt;br /&gt;
* [http://www.w3.org/TR/2002/REC-xhtml1-20020801/ XHTML 1.0 SE]&lt;br /&gt;
* [[hcard]]&lt;br /&gt;
* [[hCalendar]]&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc2445.txt iCalendar RFC2445]&lt;br /&gt;
* [http://www.iso.org/iso/en/prods-services/popstds/datesandtime.html ISO 8601]&lt;br /&gt;
&lt;br /&gt;
===== Informative References =====&lt;br /&gt;
* [http://en.wikipedia.org/wiki/ISO_8601 Wikipedia article on ISO 8601]&lt;br /&gt;
* [http://www.xfront.com/microformats/hCalendar_part2.html Tutorial on recurring events in hCalendar]&lt;br /&gt;
&lt;br /&gt;
===== Related =====&lt;br /&gt;
* [[operating-hours-examples]]&lt;br /&gt;
* [http://microformats.org/discuss/mail/microformats-discuss/2007-February/008562.html Corresponding thread from uf-discuss]&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[opening-hours]]&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70365</id>
		<title>opening-hours-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70365"/>
		<updated>2021-02-27T21:03:39Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* calendar of unnamed events */ Asking for use case for day of week with time.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:opening hours brainstorming}}&lt;br /&gt;
This is part of an effort per the microformats [[process]] to research, gather examples, and brainstorm for a microformat for marking up the '''opening hours''' for a business or organization.&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== brainstorming ==&lt;br /&gt;
Brainstorming proposals should only be written up after examples and formats research has been completed per the [[process]].&lt;br /&gt;
&lt;br /&gt;
=== calendar of unnamed events ===&lt;br /&gt;
As suggested by jacky in [[irc]], a calendar of unnamed events (using [[h-event]]), perhaps nested in the venue's [[h-card]], maybe sufficient to imply/convey opening hours for those days.&lt;br /&gt;
&lt;br /&gt;
* I think opening hours is worth its own type. `h-x-opening-hours` or some such thing. With a single property that is a nested h-event. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:38, 20 February 2021 (UTC)&lt;br /&gt;
** My only hesistation against making a new type is that the 'specifics' are things that can be defined by a machine (when to start, when to end) and everything else is human-specific (and thus a rendering layer). [[User:Jacky|Jacky]] 18:41, 20 Feb 2021 PST&lt;br /&gt;
** A new microformat (h-*) feels like it's taking on too big of a problem when we can probably find smaller problems to solve first (per [[process|The microformats process]]). A problem I think I saw come up in chat is how to represent the time for a day of the week. Maybe we could work on how to represent a &amp;quot;day-of-week relative&amp;quot; time with existing properties in an h-event. [[User:GRegorLove|gRegor]] ([[User talk:GRegorLove|talk]]) 20:58, 23 February 2021 (UTC)&lt;br /&gt;
*** What is the use case for &amp;quot;'day-of-week relative' time&amp;quot;? I assume this is something different to a specific date, so not Saturday 2021-02-27T13:00. The problem is html5's datetime attribute doesn't have a way to specify day of week. Such things are in various iso specs, but those conventions would have to be ported to html5. That's obviously outside the scope of microformats. If you have details about what came up in chat, I'd be curious to see the problem. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 21:03, 27 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== [[User:Jacky|Jacky]]'s Idea for Rendering a Week of Hours ====&lt;br /&gt;
&lt;br /&gt;
Main Page:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;aside class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
   We're open &amp;lt;a class=&amp;quot;h-event u-url&amp;quot; href=&amp;quot;/open-days&amp;quot; rel=&amp;quot;calendar&amp;quot; title=&amp;quot;Open Hours&amp;quot;&amp;gt;Tuesdays to Fridays from 10 AM to 9 PM&amp;lt;/a&amp;gt;, closed Sundays, Saturdays and Mondays.&lt;br /&gt;
 &amp;lt;/aside&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Event Page:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;aside class=&amp;quot;h-feed&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;h2 class=&amp;quot;p-name&amp;quot;&amp;gt;Hours&amp;lt;/h2&amp;gt;&lt;br /&gt;
     &amp;lt;p class=&amp;quot;h-event&amp;quot; id=&amp;quot;Monday&amp;quot;&amp;gt;Closed on &amp;lt;a href=&amp;quot;#Monday&amp;quot; class=&amp;quot;u-url p-name&amp;quot;&amp;gt;Mondays&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;p class=&amp;quot;h-event&amp;quot; id=&amp;quot;Tuesday&amp;quot;&amp;gt;Open on &amp;lt;a href=&amp;quot;#Tuesday&amp;quot; class=&amp;quot;u-url p-name&amp;quot;&amp;gt;Tuesdays&amp;lt;/a&amp;gt; from &amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;09:00:00&amp;quot;&amp;gt;9 AM&amp;lt;/time&amp;gt; to &amp;lt;time class=&amp;quot;dt-end&amp;quot; datetime=&amp;quot;18:00:00&amp;quot;&amp;gt;6 PM&amp;lt;/time&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/aside&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some thoughts:&lt;br /&gt;
&lt;br /&gt;
Using `h-feed` for a feed of events raises some issues: [[h-feed]] is explicitly described as &amp;quot;a stream or feed of h-entry posts&amp;quot;. I suppose that could be changed, but it requires changing a fairly stable spec. And it means that authors who are new to microformats will have to learn how to distinguish them. I think a new type should be used to avoid confusion. Note that [[hCalendar]] was created as a 1:1 html version of iCalendar, a ''collection'' of events; microformats2's [[h-event]] is for a ''single'' event. If we go with a feed of events, we should revive the iCalendar idea. We need to give it a name that makes it clear it's a feed of events. Perhaps '''h-feed-events'''? [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:15, 21 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
There are GitHub issues arguing against me and for broadening [[h-feed]]'s use:&lt;br /&gt;
* https://github.com/microformats/h-feed/issues/3&lt;br /&gt;
* https://github.com/microformats/h-entry/issues/16&lt;br /&gt;
So that might be the way to go. I still think we need a way to determine that the feed specifies opening hours, perhaps with a p-children-type for h-feed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 20:11, 21 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't understand how the &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attributes and url fragment urls are supposed to work. The fragment urls link to their own p containers. Is that supposed to convey that this is a repeating event? [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:27, 21 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== simple class proposal ===&lt;br /&gt;
proposed format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;operating-hours&amp;quot;&amp;gt;&lt;br /&gt;
 Tu-Sa 08:00-15:00; Sa 08:00-12:00&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
see it here: http://www.geodatacheck.com/p/2&lt;br /&gt;
&lt;br /&gt;
Use a semicolon to separate the different days or or time ranges. &lt;br /&gt;
Use two letter english day names. Times are local times with leading zero&lt;br /&gt;
&lt;br /&gt;
This is the format as used in openstreetmap.org for a node description with opening hours. Openstreetmap has very rigid semantics, so it makes sense to follow their format.&lt;br /&gt;
There are several issues with proposal:&lt;br /&gt;
&amp;lt;div class=&amp;quot;issues discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''citation needed''' - please provide a link to where Openstreetmap defines this format on the [[opening-hours-formats]] page. - [[User:Tantek|Tantek]] 18:08, 21 December 2012 (UTC)&lt;br /&gt;
* no real world use case.  how would such a microformat help users? this should be documented in the introduction to an [[opening-hours]] effort. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* proposal is 'a priori' - that is proposal has been made without documentation of real world examples per the [[process]].  please document real world [[examples]] of pages that would benefit from this markup so we can design the format only for their needs and no more. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* did not research previous formats. we have no idea if this effort is reinventing various wheels or not. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* uses new datetime formats, e.g. &amp;quot;Tu-Sa&amp;quot;. Is there some way to re-use ISO8601 instead? - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* not international, e.g. &amp;quot;Tu-Sa&amp;quot;. this could be addressed with ISO8601 usage instead. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't see anything in [https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601] to specify days of the week. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 17:02, 16 December 2020 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operating Hours Brainstorming ===&lt;br /&gt;
:This section was merged from [[operating-hours]]&lt;br /&gt;
&lt;br /&gt;
This section documents a method that can be used to mark up the operating hours of stores, restaurants, museums, offices, and other establishments that have set hours and are open on a regular basis. This is based on the [[hCalendar]] microformat.&lt;br /&gt;
&lt;br /&gt;
==== Discussion Participants ====&lt;br /&gt;
===== Authors =====&lt;br /&gt;
* [http://dragotown.com Nick Drago]&lt;br /&gt;
* [http://suda.co.uk/ Brian Suda]&lt;br /&gt;
&lt;br /&gt;
===== Contributors =====&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
This effort came about as a result of the need for a human and machine readable markup format that can be used to define the operating hours of establishments.&lt;br /&gt;
&lt;br /&gt;
Stores, businesses, etc. often provide their operating hours on their websites. With the addition of a small bit of markup, they are able to define their operating hours on their websites in such a way that spiders and other aggregators can retrieve such hours, automatically convert them to the iCalendar format, and use this data in any iCalendar application or service.&lt;br /&gt;
&lt;br /&gt;
==== Using RRULE in hCalendar ====&lt;br /&gt;
This was suggested [http://microformats.org/discuss/mail/microformats-discuss/2007-February/008562.html] by Brian. Is this the most appropriate method? --Nick&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// example definition of operating hours using RRULE in hCalendar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Pardon the Interruption&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;url uid summary&amp;quot;&lt;br /&gt;
href=&amp;quot;http://sports.espn.go.com/...&amp;quot;&amp;gt;Pardon the Interruption&amp;lt;/a&amp;gt;&lt;br /&gt;
  is a &amp;lt;span class=&amp;quot;category&amp;quot;&amp;gt;TV&amp;lt;/span&amp;gt; &amp;lt;span&lt;br /&gt;
class=&amp;quot;category&amp;quot;&amp;gt;sports&amp;lt;/span&amp;gt; show.&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;dtstart&amp;quot; title=&amp;quot;2001-10-22&amp;quot;&amp;gt;It airs&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;rrule&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;freq&amp;quot;&amp;gt;weekly&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;abbr class=&amp;quot;byday&amp;quot; title=&amp;quot;mo,tu,we,th,fr&amp;quot;&amp;gt;Monday to&lt;br /&gt;
Friday&amp;lt;/abbr&amp;gt; at &amp;lt;abbr class=&amp;quot;byhour&amp;quot; title=&amp;quot;5&amp;quot;&amp;gt;5:30pm&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- timezones should be avoided --&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;tzid&amp;quot; title=&amp;quot;US-Eastern&amp;quot;&amp;gt;ET&amp;lt;/abbr&amp;gt; on ESPN.&lt;br /&gt;
&lt;br /&gt;
  The hosts of the show are longtime friends&lt;br /&gt;
  &amp;lt;span class=&amp;quot;hcard&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;span class=&amp;quot;fn n&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;span class=&amp;quot;given-name&amp;quot;&amp;gt;Tony&amp;lt;/span&amp;gt;&lt;br /&gt;
          &amp;lt;span class=&amp;quot;family-name&amp;quot;&amp;gt;Kornheiser&amp;lt;/span&amp;gt;&lt;br /&gt;
      &amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
  and ... (hCard for Michael Wilbon not shown)&lt;br /&gt;
  &amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;They discuss - and frequently argue over&lt;br /&gt;
- the top stories of the&lt;br /&gt;
  day in &amp;quot;sports... and other stuff&amp;quot;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== References ====&lt;br /&gt;
===== Normative References =====&lt;br /&gt;
* [http://www.w3.org/TR/2002/REC-xhtml1-20020801/ XHTML 1.0 SE]&lt;br /&gt;
* [[hcard]]&lt;br /&gt;
* [[hCalendar]]&lt;br /&gt;
* [http://www.ietf.org/rfc/rfc2445.txt iCalendar RFC2445]&lt;br /&gt;
* [http://www.iso.org/iso/en/prods-services/popstds/datesandtime.html ISO 8601]&lt;br /&gt;
&lt;br /&gt;
===== Informative References =====&lt;br /&gt;
* [http://en.wikipedia.org/wiki/ISO_8601 Wikipedia article on ISO 8601]&lt;br /&gt;
* [http://www.xfront.com/microformats/hCalendar_part2.html Tutorial on recurring events in hCalendar]&lt;br /&gt;
&lt;br /&gt;
===== Related =====&lt;br /&gt;
* [[operating-hours-examples]]&lt;br /&gt;
* [http://microformats.org/discuss/mail/microformats-discuss/2007-February/008562.html Corresponding thread from uf-discuss]&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[opening-hours]]&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70353</id>
		<title>opening-hours-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70353"/>
		<updated>2021-02-21T20:11:04Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Jacky's Idea for Rendering a Week of Hours */ Adds links to GitHub issues suggesting broader use of h-feed.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:opening hours brainstorming}}&lt;br /&gt;
This is part of an effort per the microformats [[process]] to research, gather examples, and brainstorm for a microformat for marking up the '''opening hours''' for a business or organization.&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== brainstorming ==&lt;br /&gt;
Brainstorming proposals should only be written up after examples and formats research has been completed per the [[process]].&lt;br /&gt;
&lt;br /&gt;
=== calendar of unnamed events ===&lt;br /&gt;
As suggested by jacky in [[irc]], a calendar of unnamed events (using [[h-event]]), perhaps nested in the venue's [[h-card]], maybe sufficient to imply/convey opening hours for those days.&lt;br /&gt;
&lt;br /&gt;
* I think opening hours is worth its own type. `h-x-opening-hours` or some such thing. With a single property that is a nested h-event. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:38, 20 February 2021 (UTC)&lt;br /&gt;
* My only hesistation against making a new type is that the 'specifics' are things that can be defined by a machine (when to start, when to end) and everything else is human-specific (and thus a rendering layer). [[User:Jacky|Jacky]] 18:41, 20 Feb 2021 PST&lt;br /&gt;
&lt;br /&gt;
==== [[User:Jacky|Jacky]]'s Idea for Rendering a Week of Hours ====&lt;br /&gt;
&lt;br /&gt;
Main Page:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;aside class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
   We're open &amp;lt;a class=&amp;quot;h-event u-url&amp;quot; href=&amp;quot;/open-days&amp;quot; rel=&amp;quot;calendar&amp;quot; title=&amp;quot;Open Hours&amp;quot;&amp;gt;Tuesdays to Fridays from 10 AM to 9 PM&amp;lt;/a&amp;gt;, closed Sundays, Saturdays and Mondays.&lt;br /&gt;
 &amp;lt;/aside&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Event Page:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;aside class=&amp;quot;h-feed&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;h2 class=&amp;quot;p-name&amp;quot;&amp;gt;Hours&amp;lt;/h2&amp;gt;&lt;br /&gt;
     &amp;lt;p class=&amp;quot;h-event&amp;quot; id=&amp;quot;Monday&amp;quot;&amp;gt;Closed on &amp;lt;a href=&amp;quot;#Monday&amp;quot; class=&amp;quot;u-url p-name&amp;quot;&amp;gt;Mondays&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;p class=&amp;quot;h-event&amp;quot; id=&amp;quot;Tuesday&amp;quot;&amp;gt;Open on &amp;lt;a href=&amp;quot;#Tuesday&amp;quot; class=&amp;quot;u-url p-name&amp;quot;&amp;gt;Tuesdays&amp;lt;/a&amp;gt; from &amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;09:00:00&amp;quot;&amp;gt;9 AM&amp;lt;/time&amp;gt; to &amp;lt;time class=&amp;quot;dt-end&amp;quot; datetime=&amp;quot;18:00:00&amp;quot;&amp;gt;6 PM&amp;lt;/time&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/aside&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some thoughts:&lt;br /&gt;
&lt;br /&gt;
Using `h-feed` for a feed of events raises some issues: [[h-feed]] is explicitly described as &amp;quot;a stream or feed of h-entry posts&amp;quot;. I suppose that could be changed, but it requires changing a fairly stable spec. And it means that authors who are new to microformats will have to learn how to distinguish them. I think a new type should be used to avoid confusion. Note that [[hCalendar]] was created as a 1:1 html version of iCalendar, a ''collection'' of events; microformats2's [[h-event]] is for a ''single'' event. If we go with a feed of events, we should revive the iCalendar idea. We need to give it a name that makes it clear it's a feed of events. Perhaps '''h-feed-events'''? [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:15, 21 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
There are GitHub issues arguing against me and for broadening [[h-feed]]'s use:&lt;br /&gt;
* https://github.com/microformats/h-feed/issues/3&lt;br /&gt;
* https://github.com/microformats/h-entry/issues/16&lt;br /&gt;
So that might be the way to go. I still think we need a way to determine that the feed specifies opening hours, perhaps with a p-children-type for h-feed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 20:11, 21 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't understand how the &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attributes and url fragment urls are supposed to work. The fragment urls link to their own p containers. Is that supposed to convey that this is a repeating event? [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:27, 21 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== simple class proposal ===&lt;br /&gt;
proposed format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;operating-hours&amp;quot;&amp;gt;&lt;br /&gt;
 Tu-Sa 08:00-15:00; Sa 08:00-12:00&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
see it here: http://www.geodatacheck.com/p/2&lt;br /&gt;
&lt;br /&gt;
Use a semicolon to separate the different days or or time ranges. &lt;br /&gt;
Use two letter english day names. Times are local times with leading zero&lt;br /&gt;
&lt;br /&gt;
This is the format as used in openstreetmap.org for a node description with opening hours. Openstreetmap has very rigid semantics, so it makes sense to follow their format.&lt;br /&gt;
There are several issues with proposal:&lt;br /&gt;
&amp;lt;div class=&amp;quot;issues discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''citation needed''' - please provide a link to where Openstreetmap defines this format on the [[opening-hours-formats]] page. - [[User:Tantek|Tantek]] 18:08, 21 December 2012 (UTC)&lt;br /&gt;
* no real world use case.  how would such a microformat help users? this should be documented in the introduction to an [[opening-hours]] effort. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* proposal is 'a priori' - that is proposal has been made without documentation of real world examples per the [[process]].  please document real world [[examples]] of pages that would benefit from this markup so we can design the format only for their needs and no more. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* did not research previous formats. we have no idea if this effort is reinventing various wheels or not. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* uses new datetime formats, e.g. &amp;quot;Tu-Sa&amp;quot;. Is there some way to re-use ISO8601 instead? - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* not international, e.g. &amp;quot;Tu-Sa&amp;quot;. this could be addressed with ISO8601 usage instead. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't see anything in [https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601] to specify days of the week. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 17:02, 16 December 2020 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[opening-hours]]&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70352</id>
		<title>opening-hours-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70352"/>
		<updated>2021-02-21T18:27:26Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Jacky's Idea for Rendering a Week of Hours */ Asks for clarification of fragment url usage.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:opening hours brainstorming}}&lt;br /&gt;
This is part of an effort per the microformats [[process]] to research, gather examples, and brainstorm for a microformat for marking up the '''opening hours''' for a business or organization.&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== brainstorming ==&lt;br /&gt;
Brainstorming proposals should only be written up after examples and formats research has been completed per the [[process]].&lt;br /&gt;
&lt;br /&gt;
=== calendar of unnamed events ===&lt;br /&gt;
As suggested by jacky in [[irc]], a calendar of unnamed events (using [[h-event]]), perhaps nested in the venue's [[h-card]], maybe sufficient to imply/convey opening hours for those days.&lt;br /&gt;
&lt;br /&gt;
* I think opening hours is worth its own type. `h-x-opening-hours` or some such thing. With a single property that is a nested h-event. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:38, 20 February 2021 (UTC)&lt;br /&gt;
* My only hesistation against making a new type is that the 'specifics' are things that can be defined by a machine (when to start, when to end) and everything else is human-specific (and thus a rendering layer). [[User:Jacky|Jacky]] 18:41, 20 Feb 2021 PST&lt;br /&gt;
&lt;br /&gt;
==== [[User:Jacky|Jacky]]'s Idea for Rendering a Week of Hours ====&lt;br /&gt;
&lt;br /&gt;
Main Page:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;aside class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
   We're open &amp;lt;a class=&amp;quot;h-event u-url&amp;quot; href=&amp;quot;/open-days&amp;quot; rel=&amp;quot;calendar&amp;quot; title=&amp;quot;Open Hours&amp;quot;&amp;gt;Tuesdays to Fridays from 10 AM to 9 PM&amp;lt;/a&amp;gt;, closed Sundays, Saturdays and Mondays.&lt;br /&gt;
 &amp;lt;/aside&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Event Page:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;aside class=&amp;quot;h-feed&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;h2 class=&amp;quot;p-name&amp;quot;&amp;gt;Hours&amp;lt;/h2&amp;gt;&lt;br /&gt;
     &amp;lt;p class=&amp;quot;h-event&amp;quot; id=&amp;quot;Monday&amp;quot;&amp;gt;Closed on &amp;lt;a href=&amp;quot;#Monday&amp;quot; class=&amp;quot;u-url p-name&amp;quot;&amp;gt;Mondays&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;p class=&amp;quot;h-event&amp;quot; id=&amp;quot;Tuesday&amp;quot;&amp;gt;Open on &amp;lt;a href=&amp;quot;#Tuesday&amp;quot; class=&amp;quot;u-url p-name&amp;quot;&amp;gt;Tuesdays&amp;lt;/a&amp;gt; from &amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;09:00:00&amp;quot;&amp;gt;9 AM&amp;lt;/time&amp;gt; to &amp;lt;time class=&amp;quot;dt-end&amp;quot; datetime=&amp;quot;18:00:00&amp;quot;&amp;gt;6 PM&amp;lt;/time&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/aside&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some thoughts:&lt;br /&gt;
&lt;br /&gt;
* using `h-feed` for a feed of events raises some issues: [[h-feed]] is explicitly described as &amp;quot;a stream or feed of h-entry posts&amp;quot;. I suppose that could be changed, but it requires changing a fairly stable spec. And it means that authors who are new to microformats will have to learn how to distinguish them. I think a new type should be used to avoid confusion. Note that [[hCalendar]] was created as a 1:1 html version of iCalendar, a ''collection'' of events; microformats2's [[h-event]] is for a ''single'' event. If we go with a feed of events, we should revive the iCalendar idea. We need to give it a name that makes it clear it's a feed of events. Perhaps '''h-feed-events'''? [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:15, 21 February 2021 (UTC)&lt;br /&gt;
* I don't understand how the &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attributes and url fragment urls are supposed to work. The fragment urls link to their own p containers. Is that supposed to convey that this is a repeating event? [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:27, 21 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== simple class proposal ===&lt;br /&gt;
proposed format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;operating-hours&amp;quot;&amp;gt;&lt;br /&gt;
 Tu-Sa 08:00-15:00; Sa 08:00-12:00&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
see it here: http://www.geodatacheck.com/p/2&lt;br /&gt;
&lt;br /&gt;
Use a semicolon to separate the different days or or time ranges. &lt;br /&gt;
Use two letter english day names. Times are local times with leading zero&lt;br /&gt;
&lt;br /&gt;
This is the format as used in openstreetmap.org for a node description with opening hours. Openstreetmap has very rigid semantics, so it makes sense to follow their format.&lt;br /&gt;
There are several issues with proposal:&lt;br /&gt;
&amp;lt;div class=&amp;quot;issues discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''citation needed''' - please provide a link to where Openstreetmap defines this format on the [[opening-hours-formats]] page. - [[User:Tantek|Tantek]] 18:08, 21 December 2012 (UTC)&lt;br /&gt;
* no real world use case.  how would such a microformat help users? this should be documented in the introduction to an [[opening-hours]] effort. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* proposal is 'a priori' - that is proposal has been made without documentation of real world examples per the [[process]].  please document real world [[examples]] of pages that would benefit from this markup so we can design the format only for their needs and no more. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* did not research previous formats. we have no idea if this effort is reinventing various wheels or not. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* uses new datetime formats, e.g. &amp;quot;Tu-Sa&amp;quot;. Is there some way to re-use ISO8601 instead? - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* not international, e.g. &amp;quot;Tu-Sa&amp;quot;. this could be addressed with ISO8601 usage instead. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't see anything in [https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601] to specify days of the week. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 17:02, 16 December 2020 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[opening-hours]]&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70351</id>
		<title>opening-hours-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70351"/>
		<updated>2021-02-21T18:15:55Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Jacky's Idea for Rendering a Week of Hours */ Suggests a new h-event collection container.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:opening hours brainstorming}}&lt;br /&gt;
This is part of an effort per the microformats [[process]] to research, gather examples, and brainstorm for a microformat for marking up the '''opening hours''' for a business or organization.&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== brainstorming ==&lt;br /&gt;
Brainstorming proposals should only be written up after examples and formats research has been completed per the [[process]].&lt;br /&gt;
&lt;br /&gt;
=== calendar of unnamed events ===&lt;br /&gt;
As suggested by jacky in [[irc]], a calendar of unnamed events (using [[h-event]]), perhaps nested in the venue's [[h-card]], maybe sufficient to imply/convey opening hours for those days.&lt;br /&gt;
&lt;br /&gt;
* I think opening hours is worth its own type. `h-x-opening-hours` or some such thing. With a single property that is a nested h-event. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:38, 20 February 2021 (UTC)&lt;br /&gt;
* My only hesistation against making a new type is that the 'specifics' are things that can be defined by a machine (when to start, when to end) and everything else is human-specific (and thus a rendering layer). [[User:Jacky|Jacky]] 18:41, 20 Feb 2021 PST&lt;br /&gt;
&lt;br /&gt;
==== [[User:Jacky|Jacky]]'s Idea for Rendering a Week of Hours ====&lt;br /&gt;
&lt;br /&gt;
Main Page:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;aside class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
   We're open &amp;lt;a class=&amp;quot;h-event u-url&amp;quot; href=&amp;quot;/open-days&amp;quot; rel=&amp;quot;calendar&amp;quot; title=&amp;quot;Open Hours&amp;quot;&amp;gt;Tuesdays to Fridays from 10 AM to 9 PM&amp;lt;/a&amp;gt;, closed Sundays, Saturdays and Mondays.&lt;br /&gt;
 &amp;lt;/aside&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Event Page:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;aside class=&amp;quot;h-feed&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;h2 class=&amp;quot;p-name&amp;quot;&amp;gt;Hours&amp;lt;/h2&amp;gt;&lt;br /&gt;
     &amp;lt;p class=&amp;quot;h-event&amp;quot; id=&amp;quot;Monday&amp;quot;&amp;gt;Closed on &amp;lt;a href=&amp;quot;#Monday&amp;quot; class=&amp;quot;u-url p-name&amp;quot;&amp;gt;Mondays&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
     &amp;lt;p class=&amp;quot;h-event&amp;quot; id=&amp;quot;Tuesday&amp;quot;&amp;gt;Open on &amp;lt;a href=&amp;quot;#Tuesday&amp;quot; class=&amp;quot;u-url p-name&amp;quot;&amp;gt;Tuesdays&amp;lt;/a&amp;gt; from &amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;09:00:00&amp;quot;&amp;gt;9 AM&amp;lt;/time&amp;gt; to &amp;lt;time class=&amp;quot;dt-end&amp;quot; datetime=&amp;quot;18:00:00&amp;quot;&amp;gt;6 PM&amp;lt;/time&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/aside&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some thoughts:&lt;br /&gt;
&lt;br /&gt;
* using `h-feed` for a feed of events raises some issues: [[h-feed]] is explicitly described as &amp;quot;a stream or feed of h-entry posts&amp;quot;. I suppose that could be changed, but it requires changing a fairly stable spec. And it means that authors who are new to microformats will have to learn how to distinguish them. I think a new type should be used to avoid confusion. Note that [[hCalendar]] was created as a 1:1 html version of iCalendar, a ''collection'' of events; microformats2's [[h-event]] is for a ''single'' event. If we go with a feed of events, we should revive the iCalendar idea. We need to give it a name that makes it clear it's a feed of events. Perhaps '''h-feed-events'''? [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:15, 21 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== simple class proposal ===&lt;br /&gt;
proposed format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;operating-hours&amp;quot;&amp;gt;&lt;br /&gt;
 Tu-Sa 08:00-15:00; Sa 08:00-12:00&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
see it here: http://www.geodatacheck.com/p/2&lt;br /&gt;
&lt;br /&gt;
Use a semicolon to separate the different days or or time ranges. &lt;br /&gt;
Use two letter english day names. Times are local times with leading zero&lt;br /&gt;
&lt;br /&gt;
This is the format as used in openstreetmap.org for a node description with opening hours. Openstreetmap has very rigid semantics, so it makes sense to follow their format.&lt;br /&gt;
There are several issues with proposal:&lt;br /&gt;
&amp;lt;div class=&amp;quot;issues discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''citation needed''' - please provide a link to where Openstreetmap defines this format on the [[opening-hours-formats]] page. - [[User:Tantek|Tantek]] 18:08, 21 December 2012 (UTC)&lt;br /&gt;
* no real world use case.  how would such a microformat help users? this should be documented in the introduction to an [[opening-hours]] effort. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* proposal is 'a priori' - that is proposal has been made without documentation of real world examples per the [[process]].  please document real world [[examples]] of pages that would benefit from this markup so we can design the format only for their needs and no more. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* did not research previous formats. we have no idea if this effort is reinventing various wheels or not. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* uses new datetime formats, e.g. &amp;quot;Tu-Sa&amp;quot;. Is there some way to re-use ISO8601 instead? - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* not international, e.g. &amp;quot;Tu-Sa&amp;quot;. this could be addressed with ISO8601 usage instead. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't see anything in [https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601] to specify days of the week. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 17:02, 16 December 2020 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[opening-hours]]&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70346</id>
		<title>opening-hours-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70346"/>
		<updated>2021-02-20T02:38:11Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* calendar of unnamed events */  suggests a type for opening hours&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:opening hours brainstorming}}&lt;br /&gt;
This is part of an effort per the microformats [[process]] to research, gather examples, and brainstorm for a microformat for marking up the '''opening hours''' for a business or organization.&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== brainstorming ==&lt;br /&gt;
Brainstorming proposals should only be written up after examples and formats research has been completed per the [[process]].&lt;br /&gt;
&lt;br /&gt;
=== calendar of unnamed events ===&lt;br /&gt;
As suggested by jacky in [[irc]], a calendar of unnamed events (using [[h-event]]), perhaps nested in the venue's [[h-card]], maybe sufficient to imply/convey opening hours for those days.&lt;br /&gt;
&lt;br /&gt;
I think opening hours is worth its own type. `h-x-opening-hours` or some such thing. With a single property that is a nested h-event. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:38, 20 February 2021 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== simple class proposal ===&lt;br /&gt;
proposed format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;operating-hours&amp;quot;&amp;gt;&lt;br /&gt;
 Tu-Sa 08:00-15:00; Sa 08:00-12:00&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
see it here: http://www.geodatacheck.com/p/2&lt;br /&gt;
&lt;br /&gt;
Use a semicolon to separate the different days or or time ranges. &lt;br /&gt;
Use two letter english day names. Times are local times with leading zero&lt;br /&gt;
&lt;br /&gt;
This is the format as used in openstreetmap.org for a node description with opening hours. Openstreetmap has very rigid semantics, so it makes sense to follow their format.&lt;br /&gt;
There are several issues with proposal:&lt;br /&gt;
&amp;lt;div class=&amp;quot;issues discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''citation needed''' - please provide a link to where Openstreetmap defines this format on the [[opening-hours-formats]] page. - [[User:Tantek|Tantek]] 18:08, 21 December 2012 (UTC)&lt;br /&gt;
* no real world use case.  how would such a microformat help users? this should be documented in the introduction to an [[opening-hours]] effort. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* proposal is 'a priori' - that is proposal has been made without documentation of real world examples per the [[process]].  please document real world [[examples]] of pages that would benefit from this markup so we can design the format only for their needs and no more. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* did not research previous formats. we have no idea if this effort is reinventing various wheels or not. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* uses new datetime formats, e.g. &amp;quot;Tu-Sa&amp;quot;. Is there some way to re-use ISO8601 instead? - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* not international, e.g. &amp;quot;Tu-Sa&amp;quot;. this could be addressed with ISO8601 usage instead. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't see anything in [https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601] to specify days of the week. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 17:02, 16 December 2020 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[opening-hours]]&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu&amp;diff=70332</id>
		<title>menu</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu&amp;diff=70332"/>
		<updated>2021-02-08T03:06:37Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Clarifies problem that a menu vocabulary could solve.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
Per [[process]] this page is for developing a microformat to markup restaurant menus as published on the web, for consumption by services that may provide various services such as [[food]] delivery.&lt;br /&gt;
* [[menu-examples]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
* [[menu-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
Most restaurants publish menus on their own websites. Many also publish them on third party sites (delivery services like Door Dash, reservation sites like Open Table, etc.), which often requires reentering the same data in several places. And menus are often out of sync between different websites. A microformat for menus could help solve, or at least alleviate, this problem.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[food]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=include-pattern-brainstorming&amp;diff=70324</id>
		<title>include-pattern-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=include-pattern-brainstorming&amp;diff=70324"/>
		<updated>2020-12-22T04:47:16Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Use data element */ Points out problem with data semantics and include pattern.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;include pattern brainstorming&amp;lt;/h1&amp;gt;&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
brainstorming to improve or extend the [[include-pattern]].&lt;br /&gt;
&lt;br /&gt;
== alternatives to using a or object ==&lt;br /&gt;
Here are possible variations on the [[include-pattern|include pattern]], attempting to resolve issues of accessibility (with empty anchors) and server load (with &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Non-Verbose Class-Based Solution ===&lt;br /&gt;
(Originally suggested by Toby Inkster, based on an earlier proposal by Andy Mabbett)&lt;br /&gt;
&lt;br /&gt;
An alternative way of implementing the include pattern in a less verbose, and hopefully more accessible manner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;We have three branches in &amp;lt;span class=&amp;quot;locality&amp;quot; id=&amp;quot;ldn&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt;,&lt;br /&gt;
 including our head office in &amp;lt;span class=&amp;quot;locality&amp;quot; id=&amp;quot;ken&amp;quot;&amp;gt;Kensington&amp;lt;/span&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Oxford Street&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ken #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;1 Pall Mall&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the space-delimited class attributes should be considered significant -- that is, in &amp;lt;foo class=&amp;quot;bar #baz&amp;quot;&amp;gt; the content referred to by #baz is logically included as the last child of the &amp;lt;foo&amp;gt; element, but in &amp;lt;foo class=&amp;quot;#baz bar&amp;quot;&amp;gt;, it is logically included as the first child. (See below for an example where the included element should occur in the middle of the element content.)&lt;br /&gt;
&lt;br /&gt;
Yes, the hash mark is valid in the class attribute, though rarely used because it won't work with CSS 1 selectors. &lt;br /&gt;
&lt;br /&gt;
If people can find real-life uses of the hash character in existing sites that would conflict with this proposed usage pattern, then perhaps another character could be used. I rather like '@foo', or maybe even a combination such as '@#foo'.&lt;br /&gt;
&lt;br /&gt;
==== Including data in the middle of an element ====&lt;br /&gt;
&lt;br /&gt;
Above, the examples show how an element can be logically included as the first or last child of another element. For including data into the middle of an element, we need to be a tiny bit more verbose and insert a dummy element (in this case a &amp;amp;lt;span&amp;gt; element) where the included content should go:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Our head office is in &amp;lt;span id=&amp;quot;ldn&amp;quot; class=&amp;quot;locality&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt; at:&lt;br /&gt;
 &amp;lt;p class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;#ldn&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;SW7 1AA&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== problems with ordered ids in class ====&lt;br /&gt;
Two problems:&lt;br /&gt;
&lt;br /&gt;
1. class is an unordered set of values per HTML4.  introducing ordering is a non-starter both from a violation of HTML4 spec perspective and likely requiring of rewriting HTML4 parsers to maintain an ordering where they currently don't.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:2em;border-left:thick solid #ccc;padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
A reading of HTML 4.01, section 7.5.2 doesn't seem to claim that the class list is unordered. &lt;br /&gt;
&lt;br /&gt;
It does claim that it's a &amp;quot;set&amp;quot; of class names, and in mathematical parlance sets are unordered by definition, and must not contain duplicates, but it's unlikely that the framers of the HTML 4.01 spec intended the world &amp;quot;set&amp;quot; to be interpreted in that way -- far more likely they were referring to the layman's definition of the word.&lt;br /&gt;
&lt;br /&gt;
As far as parsers are concerned, DOM Level 2 HTML provides as &amp;quot;className&amp;quot; property as part of the HTMLElement interface, which is either directly used or is inherited by all DOM element nodes. The className is a string exactly reflecting the contents of the HTML class attribute, so should reflect their original order.&lt;br /&gt;
&lt;br /&gt;
And any non-DOM, naive SGML or XML parser that encounters a class attribute will just parse it as a plain old string anyway, so the order should be retained. &lt;br /&gt;
&lt;br /&gt;
[[User:TobyInk|TobyInk]] 08:34, 5 Feb 2008 (PST)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. inclusion of arbitrary data (#baz) in the class attribute is a [[anti-patterns#data_in_class_attributes|documented anti-pattern]]. [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:2em;border-left:thick solid #ccc;padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
This anti-pattern is only mentioned as a subheading to the more general anti-pattern of invisble metadata. My suggested pattern for inclusions does not hide metadata -- it merely references metadata elsewhere on the page. It is no more guilty of hiding metadata than any other suggested include pattern, so I fail to see how this is relevant.&lt;br /&gt;
&lt;br /&gt;
[[User:TobyInk|TobyInk]] 08:36, 5 Feb 2008 (PST)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Simple class name===&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo id=&amp;quot;birmingham&amp;quot; class=&amp;quot;locality&amp;quot;&amp;gt;Birmingham&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr includes-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some other possible variants are:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr part-microformat birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr use-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr uses-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr include-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr locality-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo id=&amp;quot;birmingham&amp;quot;&amp;gt;Birmingham&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[...]&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr locality-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(originally suggested by [[User:AndyMabbett|Andy Mabbett]] in &amp;lt;http://microformats.org/discuss/mail/microformats-discuss/2008-January/011422.html et seq.)&lt;br /&gt;
&lt;br /&gt;
==== problems with arbitrary id values in class attributes ====&lt;br /&gt;
In short: similar to [[#problems_with_ordered_ids_in_class|problems with ordered ids in class]], inclusion of arbitrary data (birmingham) in the class attribute is a [[anti-patterns#data_in_class_attributes|documented anti-pattern]].&lt;br /&gt;
&lt;br /&gt;
Longer: The value of an &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attribute on an element is essentially an arbitrary string used to uniquely identify that element in the context of the document. Thus the re-use of such an arbitrary string (e.g. &amp;quot;birmingham&amp;quot;) in a class attribute is an instance of including arbitrary data in the class attribute, which is a [[anti-patterns#data_in_class_attributes|documented anti-pattern]].&lt;br /&gt;
&lt;br /&gt;
[[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
* In this proposal, the class name is not &amp;quot;arbitrary data&amp;quot;, since it uses a semantically valid IDs; and is semantically logical. In the cited page the use of data in class names is deprecated as &amp;quot;another form of invisible metadata&amp;quot;. This proposal involves no more &amp;quot;invisible metadata&amp;quot; than do the existing include patterns. [[User:AndyMabbett|Andy Mabbett]] 00:52, 4 Feb 2008 (PST)&lt;br /&gt;
** existing include patterns use &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; (not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;) attributes which are both of type URI to point to a fragment identifier.  arbitrary links are proper semantic use of URI attributes per HTML4. however in a class attribute, arbitrary links are no more than arbitrary data, and are thus an example of [[anti-patterns#data_in_class_attributes|the documented anti-pattern]]. (Unsigned comment by [[User:Tantek|Tantek]])&lt;br /&gt;
*** The fragment identifier is not data. Well, OK, it is data in the sense that virtually everything is data, but, in the example above, the link itself is not address data -- it's a pointer to data... information about where the real data might be found... it's ''metadata''. [[User:TobyInk|TobyInk]] 07:42, 6 Feb 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
===Use &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; to Reference IDs===&lt;br /&gt;
&lt;br /&gt;
Don't &amp;lt;code&amp;gt;&amp;quot;include&amp;quot;&amp;lt;/code&amp;gt; your data, you could perhaps just reference them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;foo id=&amp;quot;me&amp;quot; class=&amp;quot;fn&amp;quot;&amp;gt;Fred&amp;lt;/foo&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;bar class=&amp;quot;me@url&amp;quot;&amp;gt;http://wherever.com/&amp;lt;/bar&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
parsers instead of replacing data can then just append their data?&lt;br /&gt;
&lt;br /&gt;
Suggested in: [http://microformats.org/discuss/mail/microformats-discuss/2008-February/011470.html microformats-discuss/2008-February/011470.html]&lt;br /&gt;
&lt;br /&gt;
==== problems with using at ref to id ====&lt;br /&gt;
* Too verbose http://microformats.org/discuss/mail/microformats-discuss/2008-February/011473.html&lt;br /&gt;
* Inclusion of arbitrary data &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt;, &amp;quot;[[anti-patterns#data_in_class_attributes|documented anti-pattern]]&amp;quot; as pointed out on microformats discuss http://microformats.org/discuss/mail/microformats-discuss/2008-February/011479.html&lt;br /&gt;
&lt;br /&gt;
===Use a Class Create method===&lt;br /&gt;
&lt;br /&gt;
Create a class such as &amp;lt;code&amp;gt;&amp;quot;data&amp;quot;&amp;lt;/code&amp;gt; in the following example, or any unique class name much the same as we do already with &amp;lt;code&amp;gt;id=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Examples could be &amp;lt;code&amp;gt;&amp;quot;reviewer&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;me&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;    &lt;br /&gt;
        &amp;lt;span class=&amp;quot;data&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Foo&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:foo@bar.com&amp;quot;&amp;gt;email foo@bar.com&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use an empty span to reference your unique class name with class &amp;lt;code&amp;gt;&amp;quot;include *&amp;quot;&amp;lt;/code&amp;gt; anywhere you would&lt;br /&gt;
like the created class to be included.&lt;br /&gt;
&lt;br /&gt;
example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;include data&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:foo@baz.com&amp;quot;&amp;gt;email foo@baz.com&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result &amp;quot;could&amp;quot; turn out much like this:&lt;br /&gt;
&lt;br /&gt;
example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Foo&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:foo@baz.com&amp;quot;&amp;gt;email foo@baz.com&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Problems====&lt;br /&gt;
&lt;br /&gt;
* If class=&amp;quot;include data&amp;quot; is taken to mean &amp;quot;include all elements with a class name of 'data'&amp;quot;, then the element will include itself and potentially introduce problems with recursion. [[User:TobyInk|TobyInk]] 02:23, 11 Feb 2008 (PST)&lt;br /&gt;
** Not Necessarily so, It would depend on Parsing rules. [[User:WebOrganics|Martin McEvoy]] 17:19, 11 Feb 2008 (GMT)&lt;br /&gt;
&lt;br /&gt;
=== Use property inheritance from groups, implicit member/group relations (by containment) and explicit property/object relations (by reference) ===&lt;br /&gt;
&lt;br /&gt;
This proposal is only presented for the record. The main reason it has been discarded is because &amp;quot;the use of [[rev]], and any new microformats values for rev, has been deprecated for several reasons.  See [[rev#Should_rev_even_be_used|Should rev even be used]].&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It is really two proposals in one:&lt;br /&gt;
* property inheritance from group elements: if an object is part of a group, it inherits the properties associated with this group.&lt;br /&gt;
* explicit property referencing. This technique provides an alternative to the current technique of associating by containment a property with an object, or sub-property with parent property. With the suggested new technique, the property or sub-property does not have to be contained (resp.) by the object or parent property: the association is made explicitly via a rev link.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Our company has office locations in &amp;lt;a href=&amp;quot;#adrlist1&amp;quot; rev=&amp;quot;locality&amp;quot;&amp;gt;San Francisco&amp;lt;/a&amp;gt;: &lt;br /&gt;
&amp;lt;ul id=&amp;quot;adrlist1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li id=&amp;quot;adr1&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;665 3rd Street&amp;lt;/span&amp;gt;, and&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li id=&amp;quot;adr2&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Folsom&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example would be interpreted as:&lt;br /&gt;
* adr1 and adr2 belong to the group adrlist1 by containment.&lt;br /&gt;
* &amp;quot;San Francisco&amp;quot; is the locality property of the adrlist1 group.&lt;br /&gt;
* hence, adr1 and adr2 inherit the locality property from adrlist1 since they are not overriding it.&lt;br /&gt;
&lt;br /&gt;
=== Use property inheritance from groups, explicit group/member referencing and implicit property relations (by containment) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Our company has &amp;lt;span id=&amp;quot;#adrlist1&amp;gt;office locations in &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;San Francisco&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;: &lt;br /&gt;
&amp;lt;a id=&amp;quot;adr1&amp;quot; href=&amp;quot;#adrlist1&amp;quot; rel=&amp;quot;group&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;665 3rd Street&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;,&lt;br /&gt;
 and &amp;lt;a id=&amp;quot;adr2&amp;quot; href=&amp;quot;#adrlist1&amp;quot; rel=&amp;quot;group&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Folsom&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This technique use: property inheritance from group and explicit relationships between groups and members. The HTML code actual reflects the meaning of the sentence: the items following the columns belong to a group from which they inherit a property (locality).&lt;br /&gt;
&lt;br /&gt;
This example would be interpreted as:&lt;br /&gt;
* adr1 and adr2 belong to the #adrlist1 group (by reference).&lt;br /&gt;
* locality is associated with #adrlist1 by containment&lt;br /&gt;
* adr1 and adr2 inherit the locality property &amp;quot;San Francisco&amp;quot; from the group they belong to, since they are not overriding it.&lt;br /&gt;
&lt;br /&gt;
=== Use html5 custom element ===&lt;br /&gt;
An include pattern could use a [https://html.spec.whatwg.org/dev/custom-elements.html custom html5 element] without any semantics, perhaps &amp;lt;code&amp;gt;&amp;lt;mf-include&amp;gt;&amp;lt;/code&amp;gt;, with a custom attribute &amp;lt;code&amp;gt;includeid&amp;lt;/code&amp;gt;. This custom attribute would work similar to how the standard &amp;lt;code&amp;gt;[https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemref itemref]&amp;lt;/code&amp;gt; attribute works. Authors could place a space-separated list of tokens in &amp;lt;code&amp;gt;includeid&amp;lt;/code&amp;gt;. A microformats parser would then search the document for an element whose &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; matches one of those tokens, and include that matched element in the microformats element's sub-tree as if it appeared in that part of the DOM. Here's the first example on this page, marked up with the custom element instead of the class-based solution.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;We have three branches in &amp;lt;span id=&amp;quot;ldn&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt;,&lt;br /&gt;
 including our head office in &amp;lt;span id=&amp;quot;ken&amp;quot;&amp;gt;Kensington&amp;lt;/span&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Oxford Street&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;mf-include class=&amp;quot;locality&amp;quot; includeid=&amp;quot;ldn&amp;quot;&amp;gt;&amp;lt;/mf-include&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;mf-include class=&amp;quot;locality&amp;quot; includeid=&amp;quot;ken ldn&amp;quot;&amp;gt;&amp;lt;/mf-include&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;1 Pall Mall&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;mf-include class=&amp;quot;locality&amp;quot; includeid=&amp;quot;ldn&amp;quot;&amp;gt;&amp;lt;/mf-include&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's a [https://btrem.github.io/microformats/include-pattern/ full write up of this idea] with links to two pages showing how this include pattern might work with the h-recipe format. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:24, 14 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Use html5 itemref attribute ===&lt;br /&gt;
Of course, since the [[include-pattern-brainstorming#Use_html5_custom_element|custom element idea]] is essentially based on html5's &amp;lt;code&amp;gt;[https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemref itemref]&amp;lt;/code&amp;gt; attribute, we could just use that attribute and call it good. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:41, 14 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
See earlier [[microformats2-brainstorming#adopt_itemref]] which proposed considering itemref for include-pattern use-cases.&lt;br /&gt;
&lt;br /&gt;
=== Use &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; element ===&lt;br /&gt;
An include pattern could use the [[html5]] &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;We have three branches in &amp;lt;span id=&amp;quot;ldn&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt;,&lt;br /&gt;
 including our head office in &amp;lt;span id=&amp;quot;ken&amp;quot;&amp;gt;Kensington&amp;lt;/span&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Oxford Street&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;data class=&amp;quot;locality include&amp;quot; value=&amp;quot;ldn&amp;quot;&amp;gt;&amp;lt;/data&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;data class=&amp;quot;locality include&amp;quot; value=&amp;quot;ken ldn&amp;quot;&amp;gt;&amp;lt;/data&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;1 Pall Mall&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;data class=&amp;quot;locality include&amp;quot; value=&amp;quot;ldn&amp;quot;&amp;gt;&amp;lt;/data&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example would find elements with an id that matches a token in the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute and include them inside the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; tags. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 03:15, 22 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem with this approach is that it violates the semantics of the [https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data data element]: &amp;quot;The HTML &amp;lt;data&amp;gt; element links a given piece of content with a machine-readable translation.&amp;quot; The use suggested in this section does not provide a machine readable version of the content, because there is no content. The markup could be changed to include content in the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; element, and in some cases this might be desirable as fallback, but even in such cases, it's hard to see how that content is related to the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 04:47, 22 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== contributors ==&lt;br /&gt;
* [[User:TobyInk|Toby Inkster]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
* [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
* [[User:Guillaume Lebleu|Guillaume Lebleu]]&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
{{include-pattern-related-pages}}&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=include-pattern-brainstorming&amp;diff=70323</id>
		<title>include-pattern-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=include-pattern-brainstorming&amp;diff=70323"/>
		<updated>2020-12-22T03:15:02Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Adds proposal to use html5 data element.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;include pattern brainstorming&amp;lt;/h1&amp;gt;&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
brainstorming to improve or extend the [[include-pattern]].&lt;br /&gt;
&lt;br /&gt;
== alternatives to using a or object ==&lt;br /&gt;
Here are possible variations on the [[include-pattern|include pattern]], attempting to resolve issues of accessibility (with empty anchors) and server load (with &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Non-Verbose Class-Based Solution ===&lt;br /&gt;
(Originally suggested by Toby Inkster, based on an earlier proposal by Andy Mabbett)&lt;br /&gt;
&lt;br /&gt;
An alternative way of implementing the include pattern in a less verbose, and hopefully more accessible manner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;We have three branches in &amp;lt;span class=&amp;quot;locality&amp;quot; id=&amp;quot;ldn&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt;,&lt;br /&gt;
 including our head office in &amp;lt;span class=&amp;quot;locality&amp;quot; id=&amp;quot;ken&amp;quot;&amp;gt;Kensington&amp;lt;/span&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Oxford Street&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ken #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;1 Pall Mall&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the space-delimited class attributes should be considered significant -- that is, in &amp;lt;foo class=&amp;quot;bar #baz&amp;quot;&amp;gt; the content referred to by #baz is logically included as the last child of the &amp;lt;foo&amp;gt; element, but in &amp;lt;foo class=&amp;quot;#baz bar&amp;quot;&amp;gt;, it is logically included as the first child. (See below for an example where the included element should occur in the middle of the element content.)&lt;br /&gt;
&lt;br /&gt;
Yes, the hash mark is valid in the class attribute, though rarely used because it won't work with CSS 1 selectors. &lt;br /&gt;
&lt;br /&gt;
If people can find real-life uses of the hash character in existing sites that would conflict with this proposed usage pattern, then perhaps another character could be used. I rather like '@foo', or maybe even a combination such as '@#foo'.&lt;br /&gt;
&lt;br /&gt;
==== Including data in the middle of an element ====&lt;br /&gt;
&lt;br /&gt;
Above, the examples show how an element can be logically included as the first or last child of another element. For including data into the middle of an element, we need to be a tiny bit more verbose and insert a dummy element (in this case a &amp;amp;lt;span&amp;gt; element) where the included content should go:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Our head office is in &amp;lt;span id=&amp;quot;ldn&amp;quot; class=&amp;quot;locality&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt; at:&lt;br /&gt;
 &amp;lt;p class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;#ldn&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;SW7 1AA&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== problems with ordered ids in class ====&lt;br /&gt;
Two problems:&lt;br /&gt;
&lt;br /&gt;
1. class is an unordered set of values per HTML4.  introducing ordering is a non-starter both from a violation of HTML4 spec perspective and likely requiring of rewriting HTML4 parsers to maintain an ordering where they currently don't.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:2em;border-left:thick solid #ccc;padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
A reading of HTML 4.01, section 7.5.2 doesn't seem to claim that the class list is unordered. &lt;br /&gt;
&lt;br /&gt;
It does claim that it's a &amp;quot;set&amp;quot; of class names, and in mathematical parlance sets are unordered by definition, and must not contain duplicates, but it's unlikely that the framers of the HTML 4.01 spec intended the world &amp;quot;set&amp;quot; to be interpreted in that way -- far more likely they were referring to the layman's definition of the word.&lt;br /&gt;
&lt;br /&gt;
As far as parsers are concerned, DOM Level 2 HTML provides as &amp;quot;className&amp;quot; property as part of the HTMLElement interface, which is either directly used or is inherited by all DOM element nodes. The className is a string exactly reflecting the contents of the HTML class attribute, so should reflect their original order.&lt;br /&gt;
&lt;br /&gt;
And any non-DOM, naive SGML or XML parser that encounters a class attribute will just parse it as a plain old string anyway, so the order should be retained. &lt;br /&gt;
&lt;br /&gt;
[[User:TobyInk|TobyInk]] 08:34, 5 Feb 2008 (PST)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. inclusion of arbitrary data (#baz) in the class attribute is a [[anti-patterns#data_in_class_attributes|documented anti-pattern]]. [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:2em;border-left:thick solid #ccc;padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
This anti-pattern is only mentioned as a subheading to the more general anti-pattern of invisble metadata. My suggested pattern for inclusions does not hide metadata -- it merely references metadata elsewhere on the page. It is no more guilty of hiding metadata than any other suggested include pattern, so I fail to see how this is relevant.&lt;br /&gt;
&lt;br /&gt;
[[User:TobyInk|TobyInk]] 08:36, 5 Feb 2008 (PST)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Simple class name===&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo id=&amp;quot;birmingham&amp;quot; class=&amp;quot;locality&amp;quot;&amp;gt;Birmingham&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr includes-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some other possible variants are:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr part-microformat birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr use-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr uses-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr include-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr locality-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo id=&amp;quot;birmingham&amp;quot;&amp;gt;Birmingham&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[...]&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr locality-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(originally suggested by [[User:AndyMabbett|Andy Mabbett]] in &amp;lt;http://microformats.org/discuss/mail/microformats-discuss/2008-January/011422.html et seq.)&lt;br /&gt;
&lt;br /&gt;
==== problems with arbitrary id values in class attributes ====&lt;br /&gt;
In short: similar to [[#problems_with_ordered_ids_in_class|problems with ordered ids in class]], inclusion of arbitrary data (birmingham) in the class attribute is a [[anti-patterns#data_in_class_attributes|documented anti-pattern]].&lt;br /&gt;
&lt;br /&gt;
Longer: The value of an &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attribute on an element is essentially an arbitrary string used to uniquely identify that element in the context of the document. Thus the re-use of such an arbitrary string (e.g. &amp;quot;birmingham&amp;quot;) in a class attribute is an instance of including arbitrary data in the class attribute, which is a [[anti-patterns#data_in_class_attributes|documented anti-pattern]].&lt;br /&gt;
&lt;br /&gt;
[[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
* In this proposal, the class name is not &amp;quot;arbitrary data&amp;quot;, since it uses a semantically valid IDs; and is semantically logical. In the cited page the use of data in class names is deprecated as &amp;quot;another form of invisible metadata&amp;quot;. This proposal involves no more &amp;quot;invisible metadata&amp;quot; than do the existing include patterns. [[User:AndyMabbett|Andy Mabbett]] 00:52, 4 Feb 2008 (PST)&lt;br /&gt;
** existing include patterns use &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; (not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;) attributes which are both of type URI to point to a fragment identifier.  arbitrary links are proper semantic use of URI attributes per HTML4. however in a class attribute, arbitrary links are no more than arbitrary data, and are thus an example of [[anti-patterns#data_in_class_attributes|the documented anti-pattern]]. (Unsigned comment by [[User:Tantek|Tantek]])&lt;br /&gt;
*** The fragment identifier is not data. Well, OK, it is data in the sense that virtually everything is data, but, in the example above, the link itself is not address data -- it's a pointer to data... information about where the real data might be found... it's ''metadata''. [[User:TobyInk|TobyInk]] 07:42, 6 Feb 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
===Use &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; to Reference IDs===&lt;br /&gt;
&lt;br /&gt;
Don't &amp;lt;code&amp;gt;&amp;quot;include&amp;quot;&amp;lt;/code&amp;gt; your data, you could perhaps just reference them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;foo id=&amp;quot;me&amp;quot; class=&amp;quot;fn&amp;quot;&amp;gt;Fred&amp;lt;/foo&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;bar class=&amp;quot;me@url&amp;quot;&amp;gt;http://wherever.com/&amp;lt;/bar&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
parsers instead of replacing data can then just append their data?&lt;br /&gt;
&lt;br /&gt;
Suggested in: [http://microformats.org/discuss/mail/microformats-discuss/2008-February/011470.html microformats-discuss/2008-February/011470.html]&lt;br /&gt;
&lt;br /&gt;
==== problems with using at ref to id ====&lt;br /&gt;
* Too verbose http://microformats.org/discuss/mail/microformats-discuss/2008-February/011473.html&lt;br /&gt;
* Inclusion of arbitrary data &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt;, &amp;quot;[[anti-patterns#data_in_class_attributes|documented anti-pattern]]&amp;quot; as pointed out on microformats discuss http://microformats.org/discuss/mail/microformats-discuss/2008-February/011479.html&lt;br /&gt;
&lt;br /&gt;
===Use a Class Create method===&lt;br /&gt;
&lt;br /&gt;
Create a class such as &amp;lt;code&amp;gt;&amp;quot;data&amp;quot;&amp;lt;/code&amp;gt; in the following example, or any unique class name much the same as we do already with &amp;lt;code&amp;gt;id=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Examples could be &amp;lt;code&amp;gt;&amp;quot;reviewer&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;me&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;    &lt;br /&gt;
        &amp;lt;span class=&amp;quot;data&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Foo&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:foo@bar.com&amp;quot;&amp;gt;email foo@bar.com&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use an empty span to reference your unique class name with class &amp;lt;code&amp;gt;&amp;quot;include *&amp;quot;&amp;lt;/code&amp;gt; anywhere you would&lt;br /&gt;
like the created class to be included.&lt;br /&gt;
&lt;br /&gt;
example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;include data&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:foo@baz.com&amp;quot;&amp;gt;email foo@baz.com&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result &amp;quot;could&amp;quot; turn out much like this:&lt;br /&gt;
&lt;br /&gt;
example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Foo&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:foo@baz.com&amp;quot;&amp;gt;email foo@baz.com&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Problems====&lt;br /&gt;
&lt;br /&gt;
* If class=&amp;quot;include data&amp;quot; is taken to mean &amp;quot;include all elements with a class name of 'data'&amp;quot;, then the element will include itself and potentially introduce problems with recursion. [[User:TobyInk|TobyInk]] 02:23, 11 Feb 2008 (PST)&lt;br /&gt;
** Not Necessarily so, It would depend on Parsing rules. [[User:WebOrganics|Martin McEvoy]] 17:19, 11 Feb 2008 (GMT)&lt;br /&gt;
&lt;br /&gt;
=== Use property inheritance from groups, implicit member/group relations (by containment) and explicit property/object relations (by reference) ===&lt;br /&gt;
&lt;br /&gt;
This proposal is only presented for the record. The main reason it has been discarded is because &amp;quot;the use of [[rev]], and any new microformats values for rev, has been deprecated for several reasons.  See [[rev#Should_rev_even_be_used|Should rev even be used]].&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It is really two proposals in one:&lt;br /&gt;
* property inheritance from group elements: if an object is part of a group, it inherits the properties associated with this group.&lt;br /&gt;
* explicit property referencing. This technique provides an alternative to the current technique of associating by containment a property with an object, or sub-property with parent property. With the suggested new technique, the property or sub-property does not have to be contained (resp.) by the object or parent property: the association is made explicitly via a rev link.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Our company has office locations in &amp;lt;a href=&amp;quot;#adrlist1&amp;quot; rev=&amp;quot;locality&amp;quot;&amp;gt;San Francisco&amp;lt;/a&amp;gt;: &lt;br /&gt;
&amp;lt;ul id=&amp;quot;adrlist1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li id=&amp;quot;adr1&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;665 3rd Street&amp;lt;/span&amp;gt;, and&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li id=&amp;quot;adr2&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Folsom&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example would be interpreted as:&lt;br /&gt;
* adr1 and adr2 belong to the group adrlist1 by containment.&lt;br /&gt;
* &amp;quot;San Francisco&amp;quot; is the locality property of the adrlist1 group.&lt;br /&gt;
* hence, adr1 and adr2 inherit the locality property from adrlist1 since they are not overriding it.&lt;br /&gt;
&lt;br /&gt;
=== Use property inheritance from groups, explicit group/member referencing and implicit property relations (by containment) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Our company has &amp;lt;span id=&amp;quot;#adrlist1&amp;gt;office locations in &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;San Francisco&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;: &lt;br /&gt;
&amp;lt;a id=&amp;quot;adr1&amp;quot; href=&amp;quot;#adrlist1&amp;quot; rel=&amp;quot;group&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;665 3rd Street&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;,&lt;br /&gt;
 and &amp;lt;a id=&amp;quot;adr2&amp;quot; href=&amp;quot;#adrlist1&amp;quot; rel=&amp;quot;group&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Folsom&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This technique use: property inheritance from group and explicit relationships between groups and members. The HTML code actual reflects the meaning of the sentence: the items following the columns belong to a group from which they inherit a property (locality).&lt;br /&gt;
&lt;br /&gt;
This example would be interpreted as:&lt;br /&gt;
* adr1 and adr2 belong to the #adrlist1 group (by reference).&lt;br /&gt;
* locality is associated with #adrlist1 by containment&lt;br /&gt;
* adr1 and adr2 inherit the locality property &amp;quot;San Francisco&amp;quot; from the group they belong to, since they are not overriding it.&lt;br /&gt;
&lt;br /&gt;
=== Use html5 custom element ===&lt;br /&gt;
An include pattern could use a [https://html.spec.whatwg.org/dev/custom-elements.html custom html5 element] without any semantics, perhaps &amp;lt;code&amp;gt;&amp;lt;mf-include&amp;gt;&amp;lt;/code&amp;gt;, with a custom attribute &amp;lt;code&amp;gt;includeid&amp;lt;/code&amp;gt;. This custom attribute would work similar to how the standard &amp;lt;code&amp;gt;[https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemref itemref]&amp;lt;/code&amp;gt; attribute works. Authors could place a space-separated list of tokens in &amp;lt;code&amp;gt;includeid&amp;lt;/code&amp;gt;. A microformats parser would then search the document for an element whose &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; matches one of those tokens, and include that matched element in the microformats element's sub-tree as if it appeared in that part of the DOM. Here's the first example on this page, marked up with the custom element instead of the class-based solution.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;We have three branches in &amp;lt;span id=&amp;quot;ldn&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt;,&lt;br /&gt;
 including our head office in &amp;lt;span id=&amp;quot;ken&amp;quot;&amp;gt;Kensington&amp;lt;/span&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Oxford Street&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;mf-include class=&amp;quot;locality&amp;quot; includeid=&amp;quot;ldn&amp;quot;&amp;gt;&amp;lt;/mf-include&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;mf-include class=&amp;quot;locality&amp;quot; includeid=&amp;quot;ken ldn&amp;quot;&amp;gt;&amp;lt;/mf-include&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;1 Pall Mall&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;mf-include class=&amp;quot;locality&amp;quot; includeid=&amp;quot;ldn&amp;quot;&amp;gt;&amp;lt;/mf-include&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's a [https://btrem.github.io/microformats/include-pattern/ full write up of this idea] with links to two pages showing how this include pattern might work with the h-recipe format. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:24, 14 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Use html5 itemref attribute ===&lt;br /&gt;
Of course, since the [[include-pattern-brainstorming#Use_html5_custom_element|custom element idea]] is essentially based on html5's &amp;lt;code&amp;gt;[https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemref itemref]&amp;lt;/code&amp;gt; attribute, we could just use that attribute and call it good. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:41, 14 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
See earlier [[microformats2-brainstorming#adopt_itemref]] which proposed considering itemref for include-pattern use-cases.&lt;br /&gt;
&lt;br /&gt;
=== Use &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; element ===&lt;br /&gt;
An include pattern could use the [[html5]] &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;We have three branches in &amp;lt;span id=&amp;quot;ldn&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt;,&lt;br /&gt;
 including our head office in &amp;lt;span id=&amp;quot;ken&amp;quot;&amp;gt;Kensington&amp;lt;/span&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Oxford Street&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;data class=&amp;quot;locality include&amp;quot; value=&amp;quot;ldn&amp;quot;&amp;gt;&amp;lt;/data&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;data class=&amp;quot;locality include&amp;quot; value=&amp;quot;ken ldn&amp;quot;&amp;gt;&amp;lt;/data&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;1 Pall Mall&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;data class=&amp;quot;locality include&amp;quot; value=&amp;quot;ldn&amp;quot;&amp;gt;&amp;lt;/data&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example would find elements with an id that matches a token in the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute and include them inside the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; tags. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 03:15, 22 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== contributors ==&lt;br /&gt;
* [[User:TobyInk|Toby Inkster]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
* [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
* [[User:Guillaume Lebleu|Guillaume Lebleu]]&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
{{include-pattern-related-pages}}&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70322</id>
		<title>menu-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70322"/>
		<updated>2020-12-18T19:38:32Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Adds idea for menu sections with section element.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
Per [[process]], for documenting ideas towards a restaurant [[menu]] microformat, based on experience and research into:&lt;br /&gt;
* [[menu-examples]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
And of course using existing microformats as building blocks when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Brainstorming ==&lt;br /&gt;
There may be some similarities with [[h-resume]], which also has an [[h-card]] for the organization (e.g. restaurant) whom the resume belongs to.&lt;br /&gt;
&lt;br /&gt;
The obvious path forward is to use [[h-product]] for menu items. [[h-product]] offers pretty much everything a menu item microformat needs: p-name for the item name, (e.g. mushroom soup), u-photo, e-description, and p-price. There are some additional things in menus, notably calories, that might  require a new property. If a menu has a page for individual items, u-url is available. [[h-review]] might be useful for review sites like Yelp or Google (though that might be a disincentive for restaurants, which tend to harbor strong antipathy to review sites in general and Yelp in particular. I'm not sure if p-category can be reused, but some way to tag items -- as vegetarian, gluten-free, etc. -- would be useful. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:12, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes, p-category makes sense as a general tagging model. Gathering examples of categories used is useful to see what may be worth including as examples. [[User:Kevin Marks|Kevin Marks]] ([[User talk:Kevin Marks|talk]]) 15:04, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
What's missing is a container for the menu items. Such a menu container microformat could include meta information such as availability (e.g., a dinner menu is available 5pm -10pm). [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:14, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
A menu container needs a way to distinguish sections that is flexible to account for language differences and restaurant conventions. This could present challenges to third party consumers. However, I think a menu microformat should not get bogged down in such details. It's conceivable that a restaurant and third party could agree on a set of additional classnames for interoperability. So if menu aggregator Foo Delivery Service could look for a class name specific to its service in addition to any microformats, e.g., &amp;lt;code&amp;gt;section class=&amp;quot;starter foo-deliver&amp;quot;&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;starter&amp;lt;/code&amp;gt; classname would be a microformat spec, used by menus everywhere, while &amp;lt;code&amp;gt;foo-deliver&amp;lt;/code&amp;gt; would be specific to Foo Service, a way for a restaurant to specify that it offers items in this section for delivery by Foo. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 15:20, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
A simple solution might be to have a container for a menu section /instead of/ a container for a menu. That would allow a website to have a menu spread over several pages, each one with a single container element. If a website wants to put it on one page, they could place the container elements on one page, one after the other. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 16:31, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Ideas for property names:&lt;br /&gt;
* p-name for the name of menu, e.g. dinner, breakfast, etc.; or maybe desserts, wine list, appetizers, etc.&lt;br /&gt;
* p-seller - the retailer, i.e., restaurant, cafe, pub, etc, that is selling the menu items. This can be an embedded h-card. The name of this property should be generic enough to include a wide rage of food retailers, perhaps with the ability to include other types of businesses. Alternative property names for p-seller:&lt;br /&gt;
** p-brand - this has the advantage of reuse from h-product, but that might be a disadvantage, too: menu items will likely be nested h-products, so using p-brand on parent and nested type might cause confusion. There's an additional problem: p-brand as restaurant name might be confusing for authors who might reasonably assume that a property called p-brand refers to the item brand, not the restaurant brand. In other words, a restaurant called &amp;quot;Bavarian Pub&amp;quot; that sells Franziskaner beer might assign &amp;quot;Franziskaner&amp;quot; instead of &amp;quot;Bavarian Pub&amp;quot; to a p-brand property. Thus, p-brand is a strong &amp;quot;pass&amp;quot; for me.&lt;br /&gt;
** p-restaurant - simple and straightforward, but might give wrong impression of its intended use. I imagine a street vendor might not think of her/himself as a restaurant.&lt;br /&gt;
** p-organization - very adaptable, but not very intuitive.&lt;br /&gt;
** p-retailer - again, adaptable, but not as obvious as seller, and perhaps again might give wrong impression to street vendors or food kiosks.&lt;br /&gt;
* p-product -- the thing being sold, a beverage or dish, e.g., main dish, appetizer, dessert, beer, wine, etc. This can be an embedded h-product. The property name matches the embedded name, following the [[h-card]] convention which has a p-adr property that can be an embedded [[h-adr]]; and p-geo with optionally embedded h-geo. Also, p-product is both intuitive and adaptable. Obviously, a menu normally contains many items, so this would be a many-to-one relationship.&lt;br /&gt;
&lt;br /&gt;
I realize that h-menu is not ready for a draft, hence why I'm putting these ideas in menu-brainstorming. It's just me bouncing ideas off the wall. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:45, 8 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
One of the problems with coming up with a structure for h-menu is how to deal with menu sections. It seems like one simple solution is to allow [[h-menu]] to be nested. The outer container might have a p-name &amp;quot;Dinner&amp;quot;. Then nested sections could be themselves h-menu instances, each with their own p-name set to Appetizers, Salads, etc. That would allow for simple, flat menus with a list of h-product instances, or complex menus with sections, sub-sections, etc., as needed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:06, 10 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
For prix fixe menus, there's no way to mark up choices with microformats. It probably makes sense to just markup the entire menu as one h-product, with all choices for each course in one large e-description. That is an honest representation of the menu and probably is good enough. Something more specific would have to be done in h-product, and shouldn't be implemented unless it's really needed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 00:38, 11 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I just came across the p-nutrition property from [[h-recipe]], which could be reused for menu items that include calories or other (often required) nutritional information. There is, however, a problem: as proposed so far, h-menu would be a collection of p-products that could embed [[h-product]]. But p-nutrition is not part of [[h-product]]. Other h-menu properties would pertain to the menu as a whole, not to individual menu items. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 00:57, 16 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
There should be a way for publishers to indicate menu availability, so perhaps we should include a p-availability property. It would be nice if that could embed a machine readable format, but it doesn't look like there's been much work on [[opening-hours]]. Minus my contribution to earlier today, there hasn't been any contributions since 2017. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:42, 16 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Another idea for menu sections is to use the &amp;lt;code&amp;gt;section&amp;lt;/code&amp;gt; element without any class name. A nested &amp;lt;code&amp;gt;hx&amp;lt;/code&amp;gt; element would name the menu section (&amp;quot;appetizers&amp;quot;, &amp;quot;dinner&amp;quot;, etc.). It has the advantage of being native html5 and understood by or at least intuitive to authors. There are, however drawbacks. One is that it would require &amp;lt;code&amp;gt;section&amp;lt;/code&amp;gt; where it is not convenient. One example is a menu using table markup, where sections are delimited by the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element. That could work with &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt; standing in for &amp;lt;code&amp;gt;hx&amp;lt;/code&amp;gt;, but that might be confusing. Probably not workable, but worth mentioning. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 19:38, 18 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
... feel free to add more unstructured thoughts there.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu&amp;diff=70321</id>
		<title>menu</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu&amp;diff=70321"/>
		<updated>2020-12-18T12:53:34Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Fixes repeated word.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
Per [[process]] this page is for developing a microformat to markup restaurant menus as published on the web, for consumption by services that may provide various services such as [[food]] delivery.&lt;br /&gt;
* [[menu-examples]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
* [[menu-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
Most restaurants publish menus on their own websites. Many also publish their menus on third party sites (delivery services like Door Dash, reservation sites like Open Table). A microformat for menus could help solve, or at least alleviate, this problem.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[food]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70320</id>
		<title>menu-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70320"/>
		<updated>2020-12-16T22:42:01Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Added signature.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
Per [[process]], for documenting ideas towards a restaurant [[menu]] microformat, based on experience and research into:&lt;br /&gt;
* [[menu-examples]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
And of course using existing microformats as building blocks when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Brainstorming ==&lt;br /&gt;
There may be some similarities with [[h-resume]], which also has an [[h-card]] for the organization (e.g. restaurant) whom the resume belongs to.&lt;br /&gt;
&lt;br /&gt;
The obvious path forward is to use [[h-product]] for menu items. [[h-product]] offers pretty much everything a menu item microformat needs: p-name for the item name, (e.g. mushroom soup), u-photo, e-description, and p-price. There are some additional things in menus, notably calories, that might  require a new property. If a menu has a page for individual items, u-url is available. [[h-review]] might be useful for review sites like Yelp or Google (though that might be a disincentive for restaurants, which tend to harbor strong antipathy to review sites in general and Yelp in particular. I'm not sure if p-category can be reused, but some way to tag items -- as vegetarian, gluten-free, etc. -- would be useful. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:12, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes, p-category makes sense as a general tagging model. Gathering examples of categories used is useful to see what may be worth including as examples. [[User:Kevin Marks|Kevin Marks]] ([[User talk:Kevin Marks|talk]]) 15:04, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
What's missing is a container for the menu items. Such a menu container microformat could include meta information such as availability (e.g., a dinner menu is available 5pm -10pm). [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:14, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
A menu container needs a way to distinguish sections that is flexible to account for language differences and restaurant conventions. This could present challenges to third party consumers. However, I think a menu microformat should not get bogged down in such details. It's conceivable that a restaurant and third party could agree on a set of additional classnames for interoperability. So if menu aggregator Foo Delivery Service could look for a class name specific to its service in addition to any microformats, e.g., &amp;lt;code&amp;gt;section class=&amp;quot;starter foo-deliver&amp;quot;&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;starter&amp;lt;/code&amp;gt; classname would be a microformat spec, used by menus everywhere, while &amp;lt;code&amp;gt;foo-deliver&amp;lt;/code&amp;gt; would be specific to Foo Service, a way for a restaurant to specify that it offers items in this section for delivery by Foo. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 15:20, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
A simple solution might be to have a container for a menu section /instead of/ a container for a menu. That would allow a website to have a menu spread over several pages, each one with a single container element. If a website wants to put it on one page, they could place the container elements on one page, one after the other. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 16:31, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Ideas for property names:&lt;br /&gt;
* p-name for the name of menu, e.g. dinner, breakfast, etc.; or maybe desserts, wine list, appetizers, etc.&lt;br /&gt;
* p-seller - the retailer, i.e., restaurant, cafe, pub, etc, that is selling the menu items. This can be an embedded h-card. The name of this property should be generic enough to include a wide rage of food retailers, perhaps with the ability to include other types of businesses. Alternative property names for p-seller:&lt;br /&gt;
** p-brand - this has the advantage of reuse from h-product, but that might be a disadvantage, too: menu items will likely be nested h-products, so using p-brand on parent and nested type might cause confusion. There's an additional problem: p-brand as restaurant name might be confusing for authors who might reasonably assume that a property called p-brand refers to the item brand, not the restaurant brand. In other words, a restaurant called &amp;quot;Bavarian Pub&amp;quot; that sells Franziskaner beer might assign &amp;quot;Franziskaner&amp;quot; instead of &amp;quot;Bavarian Pub&amp;quot; to a p-brand property. Thus, p-brand is a strong &amp;quot;pass&amp;quot; for me.&lt;br /&gt;
** p-restaurant - simple and straightforward, but might give wrong impression of its intended use. I imagine a street vendor might not think of her/himself as a restaurant.&lt;br /&gt;
** p-organization - very adaptable, but not very intuitive.&lt;br /&gt;
** p-retailer - again, adaptable, but not as obvious as seller, and perhaps again might give wrong impression to street vendors or food kiosks.&lt;br /&gt;
* p-product -- the thing being sold, a beverage or dish, e.g., main dish, appetizer, dessert, beer, wine, etc. This can be an embedded h-product. The property name matches the embedded name, following the [[h-card]] convention which has a p-adr property that can be an embedded [[h-adr]]; and p-geo with optionally embedded h-geo. Also, p-product is both intuitive and adaptable. Obviously, a menu normally contains many items, so this would be a many-to-one relationship.&lt;br /&gt;
&lt;br /&gt;
I realize that h-menu is not ready for a draft, hence why I'm putting these ideas in menu-brainstorming. It's just me bouncing ideas off the wall. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:45, 8 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
One of the problems with coming up with a structure for h-menu is how to deal with menu sections. It seems like one simple solution is to allow [[h-menu]] to be nested. The outer container might have a p-name &amp;quot;Dinner&amp;quot;. Then nested sections could be themselves h-menu instances, each with their own p-name set to Appetizers, Salads, etc. That would allow for simple, flat menus with a list of h-product instances, or complex menus with sections, sub-sections, etc., as needed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:06, 10 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
For prix fixe menus, there's no way to mark up choices with microformats. It probably makes sense to just markup the entire menu as one h-product, with all choices for each course in one large e-description. That is an honest representation of the menu and probably is good enough. Something more specific would have to be done in h-product, and shouldn't be implemented unless it's really needed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 00:38, 11 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I just came across the p-nutrition property from [[h-recipe]], which could be reused for menu items that include calories or other (often required) nutritional information. There is, however, a problem: as proposed so far, h-menu would be a collection of p-products that could embed [[h-product]]. But p-nutrition is not part of [[h-product]]. Other h-menu properties would pertain to the menu as a whole, not to individual menu items. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 00:57, 16 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
There should be a way for publishers to indicate menu availability, so perhaps we should include a p-availability property. It would be nice if that could embed a machine readable format, but it doesn't look like there's been much work on [[opening-hours]]. Minus my contribution to earlier today, there hasn't been any contributions since 2017. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:42, 16 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
... feel free to add more unstructured thoughts there.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70319</id>
		<title>menu-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70319"/>
		<updated>2020-12-16T22:10:36Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Adds suggestion for availability property.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
Per [[process]], for documenting ideas towards a restaurant [[menu]] microformat, based on experience and research into:&lt;br /&gt;
* [[menu-examples]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
And of course using existing microformats as building blocks when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Brainstorming ==&lt;br /&gt;
There may be some similarities with [[h-resume]], which also has an [[h-card]] for the organization (e.g. restaurant) whom the resume belongs to.&lt;br /&gt;
&lt;br /&gt;
The obvious path forward is to use [[h-product]] for menu items. [[h-product]] offers pretty much everything a menu item microformat needs: p-name for the item name, (e.g. mushroom soup), u-photo, e-description, and p-price. There are some additional things in menus, notably calories, that might  require a new property. If a menu has a page for individual items, u-url is available. [[h-review]] might be useful for review sites like Yelp or Google (though that might be a disincentive for restaurants, which tend to harbor strong antipathy to review sites in general and Yelp in particular. I'm not sure if p-category can be reused, but some way to tag items -- as vegetarian, gluten-free, etc. -- would be useful. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:12, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes, p-category makes sense as a general tagging model. Gathering examples of categories used is useful to see what may be worth including as examples. [[User:Kevin Marks|Kevin Marks]] ([[User talk:Kevin Marks|talk]]) 15:04, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
What's missing is a container for the menu items. Such a menu container microformat could include meta information such as availability (e.g., a dinner menu is available 5pm -10pm). [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:14, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
A menu container needs a way to distinguish sections that is flexible to account for language differences and restaurant conventions. This could present challenges to third party consumers. However, I think a menu microformat should not get bogged down in such details. It's conceivable that a restaurant and third party could agree on a set of additional classnames for interoperability. So if menu aggregator Foo Delivery Service could look for a class name specific to its service in addition to any microformats, e.g., &amp;lt;code&amp;gt;section class=&amp;quot;starter foo-deliver&amp;quot;&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;starter&amp;lt;/code&amp;gt; classname would be a microformat spec, used by menus everywhere, while &amp;lt;code&amp;gt;foo-deliver&amp;lt;/code&amp;gt; would be specific to Foo Service, a way for a restaurant to specify that it offers items in this section for delivery by Foo. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 15:20, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
A simple solution might be to have a container for a menu section /instead of/ a container for a menu. That would allow a website to have a menu spread over several pages, each one with a single container element. If a website wants to put it on one page, they could place the container elements on one page, one after the other. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 16:31, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Ideas for property names:&lt;br /&gt;
* p-name for the name of menu, e.g. dinner, breakfast, etc.; or maybe desserts, wine list, appetizers, etc.&lt;br /&gt;
* p-seller - the retailer, i.e., restaurant, cafe, pub, etc, that is selling the menu items. This can be an embedded h-card. The name of this property should be generic enough to include a wide rage of food retailers, perhaps with the ability to include other types of businesses. Alternative property names for p-seller:&lt;br /&gt;
** p-brand - this has the advantage of reuse from h-product, but that might be a disadvantage, too: menu items will likely be nested h-products, so using p-brand on parent and nested type might cause confusion. There's an additional problem: p-brand as restaurant name might be confusing for authors who might reasonably assume that a property called p-brand refers to the item brand, not the restaurant brand. In other words, a restaurant called &amp;quot;Bavarian Pub&amp;quot; that sells Franziskaner beer might assign &amp;quot;Franziskaner&amp;quot; instead of &amp;quot;Bavarian Pub&amp;quot; to a p-brand property. Thus, p-brand is a strong &amp;quot;pass&amp;quot; for me.&lt;br /&gt;
** p-restaurant - simple and straightforward, but might give wrong impression of its intended use. I imagine a street vendor might not think of her/himself as a restaurant.&lt;br /&gt;
** p-organization - very adaptable, but not very intuitive.&lt;br /&gt;
** p-retailer - again, adaptable, but not as obvious as seller, and perhaps again might give wrong impression to street vendors or food kiosks.&lt;br /&gt;
* p-product -- the thing being sold, a beverage or dish, e.g., main dish, appetizer, dessert, beer, wine, etc. This can be an embedded h-product. The property name matches the embedded name, following the [[h-card]] convention which has a p-adr property that can be an embedded [[h-adr]]; and p-geo with optionally embedded h-geo. Also, p-product is both intuitive and adaptable. Obviously, a menu normally contains many items, so this would be a many-to-one relationship.&lt;br /&gt;
&lt;br /&gt;
I realize that h-menu is not ready for a draft, hence why I'm putting these ideas in menu-brainstorming. It's just me bouncing ideas off the wall. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:45, 8 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
One of the problems with coming up with a structure for h-menu is how to deal with menu sections. It seems like one simple solution is to allow [[h-menu]] to be nested. The outer container might have a p-name &amp;quot;Dinner&amp;quot;. Then nested sections could be themselves h-menu instances, each with their own p-name set to Appetizers, Salads, etc. That would allow for simple, flat menus with a list of h-product instances, or complex menus with sections, sub-sections, etc., as needed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:06, 10 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
For prix fixe menus, there's no way to mark up choices with microformats. It probably makes sense to just markup the entire menu as one h-product, with all choices for each course in one large e-description. That is an honest representation of the menu and probably is good enough. Something more specific would have to be done in h-product, and shouldn't be implemented unless it's really needed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 00:38, 11 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I just came across the p-nutrition property from [[h-recipe]], which could be reused for menu items that include calories or other (often required) nutritional information. There is, however, a problem: as proposed so far, h-menu would be a collection of p-products that could embed [[h-product]]. But p-nutrition is not part of [[h-product]]. Other h-menu properties would pertain to the menu as a whole, not to individual menu items. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 00:57, 16 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
There should be a way for publishers to indicate menu availability, so perhaps we should include a p-availability property. It would be nice if that could embed a machine readable format, but it doesn't look like there's been much work on [[opening-hours]]. Minus my contribution to earlier today, there hasn't been any contributions since 2017.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
... feel free to add more unstructured thoughts there.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70318</id>
		<title>menu-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70318"/>
		<updated>2020-12-16T21:59:52Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* third party services */ Adds Toast Tab POS.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Per [[process]] this page is for collecting real world [[examples]] of restaurant [[menu]] publishing, publishing information about menu items ([[food]]) intended for human consumption in an organized manner, towards the development of a menu microformat.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Menus on the web have many of the same features as printed menus used in restaurants. They are a list of products organized by type. On the web, some menus include items on one page, with sections for different categories, e.g., appetizers, salads, main dishes, desserts, etc. On other sites, different menu sections are on different pages, e.g. /menu/salads, /menu/soups, etc. Some web site menus contain cocktails, either in a separate page or in its own section. Wine lists are quite common too, usually on a separate page.&lt;br /&gt;
&lt;br /&gt;
There is no uniform set of category names. Some restaurants use &amp;quot;main dish&amp;quot;, others denote main dish with &amp;quot;entree&amp;quot;. Some use &amp;quot;starter&amp;quot;, others &amp;quot;appetizer&amp;quot;, to denote a first course. Also, larger menus often break up main dishes into categories, e.g., &amp;quot;pasta&amp;quot;, &amp;quot;steak&amp;quot;, etc. There are of course language differences, e.g., in French one finds &amp;quot;entrée&amp;quot; for first course and &amp;quot;plat principal&amp;quot; for the main dish.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Example menus are organized by location.&lt;br /&gt;
&lt;br /&gt;
=== France ===&lt;br /&gt;
French menus are sometimes organized by course instead of category, i.e., entrée (first course), plat principal (main course), and dessert. Many French restaurants offer à la carte and prix fixe menus. À la carte are structured like American menus, with individually priced items. Prix fixe menus are priced per person, with sections for each course that offer a limited number of choices.&lt;br /&gt;
&lt;br /&gt;
==== Break Restaurant ====&lt;br /&gt;
Each item on [https://www.break-paris.fr/menus-cartes Break's menu] have a name, description, and price. Some also include tags like &amp;quot;&amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;Végétalien&amp;lt;/span&amp;gt;&amp;quot; (vegan) and &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;épicé&amp;lt;/span&amp;gt; (spicy). The categories are simplified: &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;plats&amp;lt;/span&amp;gt; (plates), sides, and desserts. There is also a sections for drinks, broken up into several subsections: cocktails, wine, beer, aperitifs, etc. On some of the drink sections, each item has its own price. On several -- alcool, cocktails classiques, and cocktails création -- there is only one price printed below the heading, with that price applying to all the items beneath it.&lt;br /&gt;
&lt;br /&gt;
==== Benoit ====&lt;br /&gt;
Benoit has two different menus. One is a [https://www.benoit-paris.com/sites/default/files/menus/2020_03_06_benoit_menu_dejeuner_fr.pdf prix fixe lunch menu] with three unnamed, implicit sections for first course, main course, and dessert. Each section offers three choices. The [https://www.benoit-paris.com/sites/default/files/menus/2020_01_16_benoit_paris_-_carte_food_truffe_fr.pdf à la carte menu] has sections like &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;hors d'œuvre froids&amp;lt;/span&amp;gt; (cold appetizers), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;poissons&amp;lt;/span&amp;gt; (fish), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;viandes&amp;lt;/span&amp;gt; (meat), etc.&lt;br /&gt;
&lt;br /&gt;
=== Italy ===&lt;br /&gt;
As in France, some Italian menus are organized by course, e.g., primo for first course, secondo for second course. Some menu sections, however, are based on a food cagegory, e.g. carne for meat, pesce for fish.&lt;br /&gt;
&lt;br /&gt;
==== 'A Taverna Do' Re ====&lt;br /&gt;
[https://atavernadore.com/menu 'A Taverna Do' Re's menu] has 3 sections: &amp;quot;Antipasti&amp;quot;, &amp;quot;I primi&amp;quot;, and &amp;quot;La carne alla brace&amp;quot;. The items have a long name that functions as a name-and-description, and a price.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== United States ===&lt;br /&gt;
&lt;br /&gt;
==== T.S. McHugh's Irish Pub ====&lt;br /&gt;
[https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf This pub menu]'s food items have a name, description, and price. Some items have two sizes (small and large) with a price for each. Also, some items contain a base price, and one or more &amp;quot;upsell&amp;quot; options with an upcharge price, e.g., nachos $8.75, add guacamole $2.00.&lt;br /&gt;
&lt;br /&gt;
The draughts on the menu are organized into four categories. Each listing includes a name. The microbrew draughts include two additional pieces of information: &amp;lt;abbr title=&amp;quot;international bitterness units&amp;quot;&amp;gt;ibus&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;alcohol by volume&amp;quot;&amp;gt;abv&amp;lt;/abbr&amp;gt;. There are also two prices (one for pint, one for pitcher) for each draught category. Those prices are listed in the heading for each category, rather than repeated in each individual listing.&lt;br /&gt;
&lt;br /&gt;
==== Sal Y Limon ====&lt;br /&gt;
[https://www.salylimonseattle.com/menu Sal Y Limon's menu] is one page that changes when you click different categories. Each item has only a name and description, no price.&lt;br /&gt;
&lt;br /&gt;
==== Canlis  ====&lt;br /&gt;
The [https://canlis.com/menu menu at Canlis] has only name and description for each item.&lt;br /&gt;
&lt;br /&gt;
==== Tavolata ====&lt;br /&gt;
[https://www.ethanstowellrestaurants.com/locations/tavolata-capitol-hill/takeout-menu/ Tavolata's menu] items each have a name, price, and description.&lt;br /&gt;
&lt;br /&gt;
==== 99 Restaurant ====&lt;br /&gt;
Their menu is spread out over several pages. The menu for [https://www.99restaurants.com/menu/steak/ steaks] is a good example. Each menu item includes a name, a description, and calories. Photos of the items are linked, but not part of the initial view of the page. Also, there are no prices, presumably because the price changes by location. There are also options for many items, like adding a salad or ordering a larger portion.&lt;br /&gt;
&lt;br /&gt;
==== Bertucci's ====&lt;br /&gt;
[https://www.bertuccis.com/menu/ Bertucci's menu] is on one page, with sections for salads, soups, entrees, etc. Each section has a picture, but individual items do not. They contain only a name, description, and price.&lt;br /&gt;
&lt;br /&gt;
=== international restaurant chains  ===&lt;br /&gt;
Large restaurants/chains must supply nutritional information on their menus in the United States. All the entries in this section show calories for each menu item.&lt;br /&gt;
&lt;br /&gt;
==== Applebee's ====&lt;br /&gt;
They use one page, where the url changes as you scroll. Each part works the same. The [https://www.applebees.com/en/menu/sandwiches-and-more sandwiches section] to take one example has a list of items with name, picture, price, and calories, and, when you hover a mouse pointer over it, order buttons.&lt;br /&gt;
&lt;br /&gt;
==== Olive Garden ====&lt;br /&gt;
The Olive Garden's [https://www.olivegarden.com/menu-listing/classic-entrees dinner entrees] menu (N.B. you may have to supply a location before they'll show you a menu) has a name, photo, price, and calories for each item, along with an order button, a bookmark-like &amp;quot;mark this as a favorite&amp;quot; button, and a tag if the item is &amp;quot;new&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== third party services ===&lt;br /&gt;
&lt;br /&gt;
==== Open Table ====&lt;br /&gt;
Open Table is a third party reservation site that publishes information about each restaurant that uses their service. To take one example, here's [https://www.opentable.com/ts-mchughs?originId=2&amp;amp;corrid=ce749341-1486-4d6c-96b4-2c4311ac6fb5&amp;amp;avt=eyJ2IjoyLCJtIjowLCJwIjowLCJzIjowLCJuIjowfQ&amp;amp;p=2020-12-03T00%3A00%3A00 T.S. McHugh's Pub on Open Table]. The menu is duplicated from [https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf their web site].&lt;br /&gt;
&lt;br /&gt;
==== Grub Hub ====&lt;br /&gt;
Grub Hub is a delivery service. Like Open Table, it publishes menus for restaurants that they provide delivery for. For example, here's [https://www.grubhub.com/restaurant/sal-y-limon-10-mercer-street-seattle/1579529 Grub Hub's Sal Y Limon menu]. It has the same items as the [https://www.salylimonseattle.com/menu restaurant's own website], though the Grub Hub version includes prices.&lt;br /&gt;
&lt;br /&gt;
==== Toast Tab ====&lt;br /&gt;
Toast Tab is a restaurant &amp;lt;abbr title=&amp;quot;point of sales&amp;gt;P.O.S.&amp;lt;/abbr&amp;gt; system. It offers an online ordering for pickup service that publishes the restaurant's menu. Since Toast Tab is publishing from the restaurant's POS system -- i.e., the same system that employees use to enter an order for patrons in the restaurant -- their menus are likely to be accurate.&lt;br /&gt;
&lt;br /&gt;
=== menu duplication ===&lt;br /&gt;
Many restaurants publish their menu on more than one site, usually because they subscribe to a third party service which copies their menu for the convenience of that service's customers. At minimum, this entails reentering data. Often, the menus are out of sync.&lt;br /&gt;
&lt;br /&gt;
==== The Sitting Room ====&lt;br /&gt;
The Sitting Room is a wine bar in Seattle, Washington, United States.&lt;br /&gt;
* [https://www.the-sitting-room.com/food restaurant website menu]&lt;br /&gt;
* [https://www.yelp.com/biz_photos/the-sitting-room-seattle?select=dRxYnz9hzLQ4o-VZ1yTPSg photo of menu on Yelp]&lt;br /&gt;
* [https://www.toasttab.com/thesittingroom/v3 Toast Tab menu]&lt;br /&gt;
* [https://www.opentable.com/restaurant/profile/206647 Open Table menu]&lt;br /&gt;
* [https://www.tripadvisor.com/Restaurant_Review-g60878-d432572-Reviews-The_Sitting_Room-Seattle_Washington.html Trip Advisor menu]&lt;br /&gt;
These five urls appear to contain three different menus:&lt;br /&gt;
# Trip Advisor and Open Table&lt;br /&gt;
# Sitting Room (i.e. their own website) and Toast Tab&lt;br /&gt;
# Yelp&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
* [[menu-brainstorming]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70317</id>
		<title>menu-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70317"/>
		<updated>2020-12-16T21:53:29Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Adds section on menu duplication with one example.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Per [[process]] this page is for collecting real world [[examples]] of restaurant [[menu]] publishing, publishing information about menu items ([[food]]) intended for human consumption in an organized manner, towards the development of a menu microformat.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Menus on the web have many of the same features as printed menus used in restaurants. They are a list of products organized by type. On the web, some menus include items on one page, with sections for different categories, e.g., appetizers, salads, main dishes, desserts, etc. On other sites, different menu sections are on different pages, e.g. /menu/salads, /menu/soups, etc. Some web site menus contain cocktails, either in a separate page or in its own section. Wine lists are quite common too, usually on a separate page.&lt;br /&gt;
&lt;br /&gt;
There is no uniform set of category names. Some restaurants use &amp;quot;main dish&amp;quot;, others denote main dish with &amp;quot;entree&amp;quot;. Some use &amp;quot;starter&amp;quot;, others &amp;quot;appetizer&amp;quot;, to denote a first course. Also, larger menus often break up main dishes into categories, e.g., &amp;quot;pasta&amp;quot;, &amp;quot;steak&amp;quot;, etc. There are of course language differences, e.g., in French one finds &amp;quot;entrée&amp;quot; for first course and &amp;quot;plat principal&amp;quot; for the main dish.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Example menus are organized by location.&lt;br /&gt;
&lt;br /&gt;
=== France ===&lt;br /&gt;
French menus are sometimes organized by course instead of category, i.e., entrée (first course), plat principal (main course), and dessert. Many French restaurants offer à la carte and prix fixe menus. À la carte are structured like American menus, with individually priced items. Prix fixe menus are priced per person, with sections for each course that offer a limited number of choices.&lt;br /&gt;
&lt;br /&gt;
==== Break Restaurant ====&lt;br /&gt;
Each item on [https://www.break-paris.fr/menus-cartes Break's menu] have a name, description, and price. Some also include tags like &amp;quot;&amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;Végétalien&amp;lt;/span&amp;gt;&amp;quot; (vegan) and &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;épicé&amp;lt;/span&amp;gt; (spicy). The categories are simplified: &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;plats&amp;lt;/span&amp;gt; (plates), sides, and desserts. There is also a sections for drinks, broken up into several subsections: cocktails, wine, beer, aperitifs, etc. On some of the drink sections, each item has its own price. On several -- alcool, cocktails classiques, and cocktails création -- there is only one price printed below the heading, with that price applying to all the items beneath it.&lt;br /&gt;
&lt;br /&gt;
==== Benoit ====&lt;br /&gt;
Benoit has two different menus. One is a [https://www.benoit-paris.com/sites/default/files/menus/2020_03_06_benoit_menu_dejeuner_fr.pdf prix fixe lunch menu] with three unnamed, implicit sections for first course, main course, and dessert. Each section offers three choices. The [https://www.benoit-paris.com/sites/default/files/menus/2020_01_16_benoit_paris_-_carte_food_truffe_fr.pdf à la carte menu] has sections like &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;hors d'œuvre froids&amp;lt;/span&amp;gt; (cold appetizers), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;poissons&amp;lt;/span&amp;gt; (fish), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;viandes&amp;lt;/span&amp;gt; (meat), etc.&lt;br /&gt;
&lt;br /&gt;
=== Italy ===&lt;br /&gt;
As in France, some Italian menus are organized by course, e.g., primo for first course, secondo for second course. Some menu sections, however, are based on a food cagegory, e.g. carne for meat, pesce for fish.&lt;br /&gt;
&lt;br /&gt;
==== 'A Taverna Do' Re ====&lt;br /&gt;
[https://atavernadore.com/menu 'A Taverna Do' Re's menu] has 3 sections: &amp;quot;Antipasti&amp;quot;, &amp;quot;I primi&amp;quot;, and &amp;quot;La carne alla brace&amp;quot;. The items have a long name that functions as a name-and-description, and a price.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== United States ===&lt;br /&gt;
&lt;br /&gt;
==== T.S. McHugh's Irish Pub ====&lt;br /&gt;
[https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf This pub menu]'s food items have a name, description, and price. Some items have two sizes (small and large) with a price for each. Also, some items contain a base price, and one or more &amp;quot;upsell&amp;quot; options with an upcharge price, e.g., nachos $8.75, add guacamole $2.00.&lt;br /&gt;
&lt;br /&gt;
The draughts on the menu are organized into four categories. Each listing includes a name. The microbrew draughts include two additional pieces of information: &amp;lt;abbr title=&amp;quot;international bitterness units&amp;quot;&amp;gt;ibus&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;alcohol by volume&amp;quot;&amp;gt;abv&amp;lt;/abbr&amp;gt;. There are also two prices (one for pint, one for pitcher) for each draught category. Those prices are listed in the heading for each category, rather than repeated in each individual listing.&lt;br /&gt;
&lt;br /&gt;
==== Sal Y Limon ====&lt;br /&gt;
[https://www.salylimonseattle.com/menu Sal Y Limon's menu] is one page that changes when you click different categories. Each item has only a name and description, no price.&lt;br /&gt;
&lt;br /&gt;
==== Canlis  ====&lt;br /&gt;
The [https://canlis.com/menu menu at Canlis] has only name and description for each item.&lt;br /&gt;
&lt;br /&gt;
==== Tavolata ====&lt;br /&gt;
[https://www.ethanstowellrestaurants.com/locations/tavolata-capitol-hill/takeout-menu/ Tavolata's menu] items each have a name, price, and description.&lt;br /&gt;
&lt;br /&gt;
==== 99 Restaurant ====&lt;br /&gt;
Their menu is spread out over several pages. The menu for [https://www.99restaurants.com/menu/steak/ steaks] is a good example. Each menu item includes a name, a description, and calories. Photos of the items are linked, but not part of the initial view of the page. Also, there are no prices, presumably because the price changes by location. There are also options for many items, like adding a salad or ordering a larger portion.&lt;br /&gt;
&lt;br /&gt;
==== Bertucci's ====&lt;br /&gt;
[https://www.bertuccis.com/menu/ Bertucci's menu] is on one page, with sections for salads, soups, entrees, etc. Each section has a picture, but individual items do not. They contain only a name, description, and price.&lt;br /&gt;
&lt;br /&gt;
=== international restaurant chains  ===&lt;br /&gt;
Large restaurants/chains must supply nutritional information on their menus in the United States. All the entries in this section show calories for each menu item.&lt;br /&gt;
&lt;br /&gt;
==== Applebee's ====&lt;br /&gt;
They use one page, where the url changes as you scroll. Each part works the same. The [https://www.applebees.com/en/menu/sandwiches-and-more sandwiches section] to take one example has a list of items with name, picture, price, and calories, and, when you hover a mouse pointer over it, order buttons.&lt;br /&gt;
&lt;br /&gt;
==== Olive Garden ====&lt;br /&gt;
The Olive Garden's [https://www.olivegarden.com/menu-listing/classic-entrees dinner entrees] menu (N.B. you may have to supply a location before they'll show you a menu) has a name, photo, price, and calories for each item, along with an order button, a bookmark-like &amp;quot;mark this as a favorite&amp;quot; button, and a tag if the item is &amp;quot;new&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== third party services ===&lt;br /&gt;
&lt;br /&gt;
==== Open Table ====&lt;br /&gt;
Open Table is a third party reservation site that publishes information about each restaurant that uses their service. To take one example, here's [https://www.opentable.com/ts-mchughs?originId=2&amp;amp;corrid=ce749341-1486-4d6c-96b4-2c4311ac6fb5&amp;amp;avt=eyJ2IjoyLCJtIjowLCJwIjowLCJzIjowLCJuIjowfQ&amp;amp;p=2020-12-03T00%3A00%3A00 T.S. McHugh's Pub on Open Table]. The menu is duplicated from [https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf their web site].&lt;br /&gt;
&lt;br /&gt;
==== Grub Hub ====&lt;br /&gt;
Grub Hub is a delivery service. Like Open Table, it publishes menus for restaurants that they provide delivery for. For example, here's [https://www.grubhub.com/restaurant/sal-y-limon-10-mercer-street-seattle/1579529 Grub Hub's Sal Y Limon menu]. It has the same items as the [https://www.salylimonseattle.com/menu restaurant's own website], though the Grub Hub version includes prices.&lt;br /&gt;
&lt;br /&gt;
=== menu duplication ===&lt;br /&gt;
Many restaurants publish their menu on more than one site, usually because they subscribe to a third party service which copies their menu for the convenience of that service's customers. At minimum, this entails reentering data. Often, the menus are out of sync.&lt;br /&gt;
&lt;br /&gt;
==== The Sitting Room ====&lt;br /&gt;
The Sitting Room is a wine bar in Seattle, Washington, United States.&lt;br /&gt;
* [https://www.the-sitting-room.com/food restaurant website menu]&lt;br /&gt;
* [https://www.yelp.com/biz_photos/the-sitting-room-seattle?select=dRxYnz9hzLQ4o-VZ1yTPSg photo of menu on Yelp]&lt;br /&gt;
* [https://www.toasttab.com/thesittingroom/v3 Toast Tab menu]&lt;br /&gt;
* [https://www.opentable.com/restaurant/profile/206647 Open Table menu]&lt;br /&gt;
* [https://www.tripadvisor.com/Restaurant_Review-g60878-d432572-Reviews-The_Sitting_Room-Seattle_Washington.html Trip Advisor menu]&lt;br /&gt;
These five urls appear to contain three different menus:&lt;br /&gt;
# Trip Advisor and Open Table&lt;br /&gt;
# Sitting Room (i.e. their own website) and Toast Tab&lt;br /&gt;
# Yelp&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
* [[menu-brainstorming]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=opening-hours-formats&amp;diff=70316</id>
		<title>opening-hours-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=opening-hours-formats&amp;diff=70316"/>
		<updated>2020-12-16T18:25:35Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Adds section for schema.org's opening hours type and properties.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:opening hours formats}}&lt;br /&gt;
&lt;br /&gt;
This is part of an effort per the microformats [[process]] to research, gather examples, and brainstorm for a microformat for marking up the [[opening-hours]] for a business or organization.&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenStreetMap ==&lt;br /&gt;
OpenStreetMap allows venues to be tagged with the [https://wiki.openstreetmap.org/wiki/Opening_hours &amp;lt;var&amp;gt;opening_hours&amp;lt;/var&amp;gt;] tag. The value of this tag has been formalized and is defined in the [http://www.netzwolf.info/en/cartography/osm/time_domain/ TimeDomain specification], where there is also a JavaScript implementation.&lt;br /&gt;
&lt;br /&gt;
[http://wiki.openstreetmap.org/wiki/Key:opening_hours Key:opening_hours] is also defined on the OSM Wiki. &lt;br /&gt;
&lt;br /&gt;
The same string-based format is used to mark the times of religious services in places of worship using the [https://wiki.openstreetmap.org/wiki/Key:service_times &amp;lt;var&amp;gt;service_times&amp;lt;/var&amp;gt;] tag, the times of collections from post boxes with the [https://wiki.openstreetmap.org/wiki/Key:collection_times &amp;lt;var&amp;gt;collection-times&amp;lt;/var&amp;gt;] tag, and there is a proposal to mark venues which allow smoking (possibly in a separate area) with the [https://wiki.openstreetmap.org/wiki/Key:smoking_hours &amp;lt;var&amp;gt;smoking_hours&amp;lt;/var&amp;gt;] tag, and also with the 'lit' tag to specify when a feature (e.g. building) is lit up.&lt;br /&gt;
&lt;br /&gt;
A broader proposal also exists for using the &amp;lt;var&amp;gt;opening_hours&amp;lt;/var&amp;gt; format for describing [https://wiki.openstreetmap.org/wiki/Conditional_restrictions conditional restrictions], for instance roads that have speed limits that vary depending on time of day, and roads that allow only specific types of traffic (buses and bicycles, for instance) during periods of the day.&lt;br /&gt;
&lt;br /&gt;
Comments can also be added in quotations.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* Tu-Su 08:00-15:00;Sa 08:00-12:00 – see [http://www.openstreetmap.org/browse/node/624582426 node:624582426], a cafe in Terlizzi, Italy.&lt;br /&gt;
&lt;br /&gt;
== Google maps display ==&lt;br /&gt;
Google places uses this format to *display* the opening hours, and then applies some javascript to hide the lines which are not immediately useful:&lt;br /&gt;
The translate the day names and the time formats into the users locale. &lt;br /&gt;
&lt;br /&gt;
This is clearly rendered data for end user consumption and not a format one can use to establish a standard.&lt;br /&gt;
 &lt;br /&gt;
See an example here with opening hours: http://maps.google.com/maps/place?cid=17374953169507020841&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;&amp;quot; id=&amp;quot;oh-ov-table&amp;quot; class=&amp;quot;oh-table&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tbody&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;oh-highlight-day&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Montag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            11:00-16:00&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Dienstag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            11:00-22:00&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Mittwoch&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            11:00-22:00&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Donnerstag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            11:00-22:00&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Freitag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            11:00-16:00&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Samstag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            Geschlossen&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
          &amp;lt;td class=&amp;quot;oh-day&amp;quot;&amp;gt;&lt;br /&gt;
            Sonntag&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;td dir=&amp;quot;ltr&amp;quot;&amp;gt;&lt;br /&gt;
            Geschlossen&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/tbody&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== schema.org ==&lt;br /&gt;
=== opening hours property===&lt;br /&gt;
schema.org has an [https://schema.org/openingHours opening hours] &amp;lt;dfn&amp;gt;property&amp;lt;/dfn&amp;gt;. Days are specified with two letter abbreviations, e.g. &amp;lt;abbr title=&amp;quot;Monday&amp;quot;&amp;gt;Mo&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Tuesday&amp;quot;&amp;gt;Tu&amp;lt;/abbr&amp;gt;, etc.; days can be comma separated for separate days or a range can be specified with a range. Times are specified in 24 hour format. Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;data lang=&amp;quot;en&amp;quot; itemprop=&amp;quot;openingHours&amp;quot; value=&amp;quot;Mo,We,Fr 09:00-13:00&amp;quot;&amp;gt;Open Monday, Wednesday, Friday 9am-1pm&amp;lt;/data&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;data lang=&amp;quot;en&amp;quot; itemprop=&amp;quot;openingHours&amp;quot; value=&amp;quot;Mo-Fr 09:00-13:00&amp;quot;&amp;gt;Open Monday-Friday 9am-1pm&amp;lt;/data&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;data lang=&amp;quot;fr&amp;quot; itemprop=&amp;quot;openingHours&amp;quot; value=&amp;quot;Mo,We,Fr 09:00-13:00&amp;quot;&amp;gt;Disponible lundi, mercredi, vendredi 9:00-13:00&amp;lt;/data&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;data lang=&amp;quot;de&amp;quot; itemprop=&amp;quot;openingHours&amp;quot; value=&amp;quot;Mo,We,Fr 09:00-13:00&amp;quot;&amp;gt;Montag, Mittwoch, Freitag 9:00-13:00&amp;lt;/data&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the examples from the [https://schema.org/openingHours schema website] use the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; attribute on the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element. This does not appear to be allowed in [https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes html]. These examples were changed to use the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; element with the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
&lt;br /&gt;
=== opening hours type ===&lt;br /&gt;
There is also a [https://schema.org/OpeningHoursSpecification Opening Hours Specification] &amp;lt;dfn&amp;gt;type&amp;lt;/dfn&amp;gt;, which can use the opening hours property along with more granular properties to specify exceptions, e.g., &amp;quot;open 9-6 except on New Year's Day.&amp;quot; This type has a more complex syntax. There is a dayOfWeek property that uses a url to specify the day, e.g. https://schema.org/Tuesday. There are separate properties for opens and closes. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Opening hours&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p itemprop=&amp;quot;openingHoursSpecification&amp;quot; itemscope itemtype=&amp;quot;https://schema.org/OpeningHoursSpecification&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span itemprop=&amp;quot;dayOfWeek&amp;quot; href=&amp;quot;https://schema.org/Monday&amp;quot;&amp;gt;Monday&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;time itemprop=&amp;quot;opens&amp;quot; content=&amp;quot;09:00&amp;quot;&amp;gt;9:00 AM&amp;lt;/time&amp;gt; - &amp;lt;time itemprop=&amp;quot;closes&amp;quot; content=&amp;quot;17:00&amp;quot;&amp;gt;5:00 PM&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p itemprop=&amp;quot;openingHoursSpecification&amp;quot; itemscope itemtype=&amp;quot;https://schema.org/OpeningHoursSpecification&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span itemprop=&amp;quot;dayOfWeek&amp;quot; href=&amp;quot;https://schema.org/Tuesday&amp;quot;&amp;gt;Tuesday&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;time itemprop=&amp;quot;opens&amp;quot; content=&amp;quot;09:00:00&amp;quot;&amp;gt;9:00 AM&amp;lt;/time&amp;gt; - &amp;lt;time itemprop=&amp;quot;closes&amp;quot; content=&amp;quot;17:00:00&amp;quot;&amp;gt;5:00 PM&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[opening-hours]]&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70315</id>
		<title>opening-hours-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=opening-hours-brainstorming&amp;diff=70315"/>
		<updated>2020-12-16T17:02:41Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* simple class proposal */ Adds not that iso8601 lacks dow support.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:opening hours brainstorming}}&lt;br /&gt;
This is part of an effort per the microformats [[process]] to research, gather examples, and brainstorm for a microformat for marking up the '''opening hours''' for a business or organization.&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== brainstorming ==&lt;br /&gt;
Brainstorming proposals should only be written up after examples and formats research has been completed per the [[process]].&lt;br /&gt;
&lt;br /&gt;
=== simple class proposal ===&lt;br /&gt;
proposed format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;operating-hours&amp;quot;&amp;gt;&lt;br /&gt;
 Tu-Sa 08:00-15:00; Sa 08:00-12:00&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
see it here: http://www.geodatacheck.com/p/2&lt;br /&gt;
&lt;br /&gt;
Use a semicolon to separate the different days or or time ranges. &lt;br /&gt;
Use two letter english day names. Times are local times with leading zero&lt;br /&gt;
&lt;br /&gt;
This is the format as used in openstreetmap.org for a node description with opening hours. Openstreetmap has very rigid semantics, so it makes sense to follow their format.&lt;br /&gt;
There are several issues with proposal:&lt;br /&gt;
&amp;lt;div class=&amp;quot;issues discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''citation needed''' - please provide a link to where Openstreetmap defines this format on the [[opening-hours-formats]] page. - [[User:Tantek|Tantek]] 18:08, 21 December 2012 (UTC)&lt;br /&gt;
* no real world use case.  how would such a microformat help users? this should be documented in the introduction to an [[opening-hours]] effort. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* proposal is 'a priori' - that is proposal has been made without documentation of real world examples per the [[process]].  please document real world [[examples]] of pages that would benefit from this markup so we can design the format only for their needs and no more. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* did not research previous formats. we have no idea if this effort is reinventing various wheels or not. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* uses new datetime formats, e.g. &amp;quot;Tu-Sa&amp;quot;. Is there some way to re-use ISO8601 instead? - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
* not international, e.g. &amp;quot;Tu-Sa&amp;quot;. this could be addressed with ISO8601 usage instead. - [[User:Tantek|Tantek]] 21:17, 21 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don't see anything in [https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601] to specify days of the week. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 17:02, 16 December 2020 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[opening-hours]]&lt;br /&gt;
* [[opening-hours-examples]]&lt;br /&gt;
* [[opening-hours-formats]]&lt;br /&gt;
* [[opening-hours-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=irc&amp;diff=70314</id>
		<title>irc</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=irc&amp;diff=70314"/>
		<updated>2020-12-16T02:47:37Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Cross-platform */ Removes link to chatzilla extension which is no longer available.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:#microformats on freenode}}&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
;shortURL&lt;br /&gt;
:http://ufs.cc/w/irc&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
You may use a IRC client application such as [http://colloquy.info/ Colloquy] (Mac or iOS) or [https://market.android.com/details?id=org.yaaic&amp;amp;feature=search_result Yaaic on Android] to join:&lt;br /&gt;
* irc://irc.freenode.net/microformats&lt;br /&gt;
&lt;br /&gt;
Alternatively you may use a browser to quickly join and chat:&lt;br /&gt;
* http://webchat.freenode.net/?channels=microformats&amp;amp;nick=uf-wiki-visitor&lt;br /&gt;
&amp;lt;!--* Firefox users: install [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ Chatzilla] IRC plugin.&lt;br /&gt;
As of 2020-12-15 this plugin no longer exists: &amp;quot;If you’ve followed a link from another site for an extension or theme, that item is no longer available.&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!--* http://leafychat.com/#microformats@irc.freenode.net&lt;br /&gt;
** (Leafy Chat redirects to Convore and doesn't appear to connect as of 2011-07-06)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The microformats IRC channel is hosted on the freenode.net server.  See [[irc#Joining_a_server_and_channel|Joining a server and channel]] help for further information and use of client applications which provide additional services (authenticated nicknames, logging, etc.).&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
Recent logs of the Freenode #microformats IRC channel can be found at:&lt;br /&gt;
* https://chat.indieweb.org/microformats/&lt;br /&gt;
* [http://logbot.glob.com.au/?c=freenode%23microformats&amp;amp;s=today logbot.glob.com.au microformats IRC Logs]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
&lt;br /&gt;
If the krijnhoetmer logs have stopped logging or have any other problems:&lt;br /&gt;
# try this in the IRC channel: &amp;lt;br/&amp;gt;&amp;lt;kbd&amp;gt;/invite krijnh #microformats&amp;lt;/kbd&amp;gt;&amp;lt;br/&amp;gt; if you see &amp;lt;br/&amp;gt;&amp;lt;samp&amp;gt;krijnh joined the chat room.&amp;lt;/samp&amp;gt;&amp;lt;br/&amp;gt; then the krijnhoetmer logs should start working again. if you don't see that, then:&lt;br /&gt;
# go http://krijnhoetmer.nl/#contact&lt;br /&gt;
# leave a message in the Contact box in the right column for Krijn, e.g. &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;looks like the logs at http://krijnhoetmer.nl/irc-logs/microformats have stopped working, could you take a look?&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
# Krijn is fairly responsive, expect that logging will resume shortly.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
Older logs can be found at the following locations for the following periods:&lt;br /&gt;
* [https://chat.indieweb.org/microformats/2011-02-12 2011-02-12]–[https://chat.indieweb.org/microformats current] at https://chat.indieweb.org/microformats&lt;br /&gt;
* [http://logbot.glob.com.au/?c=freenode%23microformats&amp;amp;s=20090220&amp;amp;e=20090220 2009-02-20] - [http://logbot.glob.com.au/?c=freenode%23microformats&amp;amp;s=today current] at [http://logbot.glob.com.au/?c=freenode%23microformats&amp;amp;s=today logbot.glob.com.au microformats IRC Logs]&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20131028 2013-10-28] (partial) - [http://krijnhoetmer.nl/irc-logs/microformats/ current] at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
----&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20130811 2013-08-11] (partial) - [http://krijnhoetmer.nl/irc-logs/microformats/20130917 2013-09-17] (partial) at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20120726 2012-10-09] (partial) - [http://krijnhoetmer.nl/irc-logs/microformats/20130807 2013-08-07] at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20120726 2012-07-26] - [http://krijnhoetmer.nl/irc-logs/microformats/20120916 2012-09-16] (partial) at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20090220 2009-02-20] - [http://krijnhoetmer.nl/irc-logs/microformats/20120621 2012-06-21] (partial) at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2011-04-05 2011-04-05] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2011-02-24 2011-02-24] - [http://rbach.priv.at/Microformats/IRC/2011-03-03 2011-03-03] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2009-08-28 2009-08-28] - [http://rbach.priv.at/Microformats/IRC/2010-09-27 2010-09-27] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2009-03-26 2009-03-26] - [http://rbach.priv.at/Microformats/IRC/2009-06-29 2009-06-29] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
* 2009-02-09 - 2009-02-20 '''missing'''. if anyone has any logs for this time period, please upload them and add links here.&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2009-01-14 2009-01-14] - [http://rbach.priv.at/Microformats/IRC/2009-02-09 2009-02-09] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20080825 2008-08-25] - [http://krijnhoetmer.nl/irc-logs/microformats/20090114 2009-01-14] at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
* 2008-08-16 - 2008-08-24 '''missing'''. if anyone has any logs for this time period, please upload them and add links here.&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2005-11-16 2005-11-16] - [http://rbach.priv.at/Microformats/IRC/2008-08-16 2008-08-16] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
&lt;br /&gt;
Until sometime on 2007-07-16, there was an [http://microformat.makedatamakesense.com/log_feed/ atom feed] provided for the [http://rbach.priv.at/Microformats-IRC/ rbach IRC Logs]. &lt;br /&gt;
&lt;br /&gt;
=== logs status ===&lt;br /&gt;
* [http://logbot.glob.com.au/?c=freenode%23microformats logbot.glob.com.au microformats IRC Logs] are current and live&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs] appears to have stopped logging as of 2016-01.&lt;br /&gt;
** I emailed and heard back from Krijn on 2016-03-19 &amp;quot;Yeah, sorry, I know, server resources are very low for that (old) machine. I think it's sort of EOL..&amp;quot; [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=21+Mar+2016&amp;amp;e=21+Mar+2016&amp;amp;h=Krijn#c86411] -- gRegor&lt;br /&gt;
* [http://rbach.priv.at/Microformats-IRC/ rbach IRC Logs] appear to have stopped logging as of 2009-06-29.&lt;br /&gt;
&lt;br /&gt;
== People on IRC ==&lt;br /&gt;
See our [[irc-people|list of IRC regulars]] and their normal timezones.&lt;br /&gt;
&lt;br /&gt;
Our channel has regular admins, who are also mailing list and wiki admins. If you want to get their attention, just say &amp;quot;adminhelp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Bots on IRC==&lt;br /&gt;
The IRC channel uses these bots:&lt;br /&gt;
* [[Loqi]] - logs IRC, posts notifications to IRC of wiki edits&lt;br /&gt;
** If Loqi is missing, see https://indieweb.org/Loqi for instructions&lt;br /&gt;
** If Wiki edits are missing, ask an admin for &amp;quot;adminhelp&amp;quot;, and reference [[admin-how-to#irc]]&lt;br /&gt;
&lt;br /&gt;
=== Previous Bots ===&lt;br /&gt;
These bots were active ~2005-2009? (actual dates can likely be confirmed by checking old IRC logs)&lt;br /&gt;
* [[mfbot]] - logs all edits to this wiki. (Contact: [[User:RyanKing|Ryan King]])&lt;br /&gt;
* [[mflogbot]] - logs the irc channel itself to archives on the web. (Contact: [[User:RobertBachmann|Robert Bachmann]])&lt;br /&gt;
* [http://joiwiki.ito.com/joiwiki/index.cgi?jibot jibot]&lt;br /&gt;
&lt;br /&gt;
==== Greeting Bot ====&lt;br /&gt;
To display a brief description of who you are each time you join the channel, you can use “JiBot” to create a definition for your username. To do so pass the &amp;lt;tt&amp;gt;?def&amp;lt;/tt&amp;gt; command using something like the following convention (be brief):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;?def jdoe is John Doe and can be found online at &amp;lt;nowiki&amp;gt;http://www.example.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More information about using JiBot commands can be found on the [http://joiwiki.ito.com/joiwiki/index.cgi?jibot jibot website]&lt;br /&gt;
&lt;br /&gt;
== Getting started with IRC ==&lt;br /&gt;
'''Please note:''' These directions relate specifically to the services that [http://freenode.net/ Freenode] offers.  Other IRC servers may differ with the services they offer and how to operate them.  &lt;br /&gt;
&lt;br /&gt;
===Joining a server and channel===&lt;br /&gt;
Most clients will offer you a connection dialogue showing the required fields for connection.  The details to connect to the server are:&lt;br /&gt;
&lt;br /&gt;
*Server: &amp;lt;code&amp;gt;irc.freenode.net&amp;lt;/code&amp;gt;&lt;br /&gt;
*Port: &amp;lt;code&amp;gt;6667&amp;lt;/code&amp;gt; (usually default)&lt;br /&gt;
&lt;br /&gt;
You should also fill in any fields to set your alias, real name and email address.  If available, save these settings for later to speed up connecting in future.&lt;br /&gt;
&lt;br /&gt;
More on setting a password protected alias can be [[irc#Creating_a_registered_nickname|read here]].&lt;br /&gt;
&lt;br /&gt;
Once connected, you will most likely be presented with the &amp;quot;MOTD&amp;quot; (message of the day).  For the first visit, it is advisable to read this to find out about the server's policies and other important pieces of news and help, otherwise it can be ignored and you can either [[irc#Creating_a_registered_nickname|authenticate your alias]] or join a channel.&lt;br /&gt;
&lt;br /&gt;
Your client may display to you a listing of all available channels.  Locate &amp;lt;code&amp;gt;#microformats&amp;lt;/code&amp;gt; and select to join, or type &amp;lt;code&amp;gt;'''/join #microformats'''&amp;lt;/code&amp;gt; into the command line available to you in your client (where you've just been shown your connection).&lt;br /&gt;
&lt;br /&gt;
Assuming you've connected correctly, you should now find youself in the microformats channel!&lt;br /&gt;
&lt;br /&gt;
More detailed, but general, advice can be [http://www.irchelp.org/irchelp/irctutorial.html#intro read here].&lt;br /&gt;
&lt;br /&gt;
===Creating a registered nickname===&lt;br /&gt;
Registration means that a password becomes associated with your alias/nickname/sign-in name and from the point of registration authorisation is required to communicate using that alias.&lt;br /&gt;
&lt;br /&gt;
Registration of a nickname is required for some channels, and should be done to protect your identity.&lt;br /&gt;
&lt;br /&gt;
To register with [http://freenode.net Freenode], you must communicate with their service known as NickServ.  The two basic command you will need to get started are:&lt;br /&gt;
&lt;br /&gt;
For registration: &amp;lt;code&amp;gt;/msg nickserv register ''password''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For authentication (login): &amp;lt;code&amp;gt;/msg nickserv identify ''password''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With &amp;lt;code&amp;gt;''password''&amp;lt;/code&amp;gt; being a value of your choice.  You can also associate an email address with your nickname, which is optional, but advisable, should you want to request a password retrieval:&lt;br /&gt;
&lt;br /&gt;
To add your email address: &amp;lt;code&amp;gt;/msg nickserv set email ''email''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;code&amp;gt;''email''&amp;lt;/code&amp;gt; is your email address.&lt;br /&gt;
&lt;br /&gt;
Your client may offer you an option to set your alias and password, so that you will not have to manually enter this information on each join.  Refer to your client's help files for more on this.&lt;br /&gt;
&lt;br /&gt;
These commands can be typed directly into the server window upon join, or whilst in a channel, just as you would normally send a message.&lt;br /&gt;
&lt;br /&gt;
More detailed user registration command information can be found in [http://freenode.net/faq.shtml#userregistration Freenode's FAQ]&lt;br /&gt;
&lt;br /&gt;
===Communicating===&lt;br /&gt;
Sending a message to a channel may be as simple as joining the channel and typing into the window, just as you would with an Instant Messenger.  You can refer to your client's help files for quicker/alternative methods of doing the following.  For all clients the following commands are available (the parts in bold must be used, but are not seen by others):&lt;br /&gt;
&lt;br /&gt;
'''Sending a message to the entire channel you are currently in:'''&lt;br /&gt;
&lt;br /&gt;
Command: &amp;lt;kbd&amp;gt;'''/msg''' Hello world!&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Result: &amp;lt;samp&amp;gt;&amp;lt;Bill&amp;gt; Hello world!&amp;lt;/samp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Sending an action/emotive/3rd person statement:'''&lt;br /&gt;
&lt;br /&gt;
Command: &amp;lt;kbd&amp;gt;'''/me''' dances a code jig&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Result: &amp;lt;samp&amp;gt;Bill dances a code jig&amp;lt;/samp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Sending a message to one person only (private chat):'''&lt;br /&gt;
&lt;br /&gt;
Command: &amp;lt;kbd&amp;gt;'''/msg Bob''' Hi, would you like to code jig?&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Result (for Bob only): &amp;lt;samp&amp;gt;&amp;lt;Bill&amp;gt; Hi, would you like to code jig?&amp;lt;/samp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Clients==&lt;br /&gt;
The following clients are recommended by #microformats participants:&lt;br /&gt;
&lt;br /&gt;
=== Web ===&lt;br /&gt;
* [http://leafychat.com/#microformats@irc.freenode.net Leafy Chat]&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
* [http://www.mirc.com/ mIRC] — Popular Windows client. Trial version only.&lt;br /&gt;
* [http://xchat.org/ X-Chat] — Popular cross-platform client. [http://www.silverex.org/download/ Free Windows version] available.&lt;br /&gt;
* [http://www.adiirc.com/ AdiIRC] — Simple C# based IRC client.&lt;br /&gt;
* [http://www.miranda-im.org/ Miranda] — Lightweight, muti-protocol instant messenger.&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
* [http://colloquy.info Colloquy] — open source, free&lt;br /&gt;
* [http://homepage.mac.com/philrobin/conversation/ Conversation]&lt;br /&gt;
* [http://sourceforge.net/projects/fire Fire] — open source, free&lt;br /&gt;
* [http://www.conceitedsoftware.com/products/linkinus Linkinus]&lt;br /&gt;
* [http://www.chipersoft.com/minerva/ Minerva]&lt;br /&gt;
* [http://www.snak.com/ Snak]&lt;br /&gt;
* [http://xchataqua.sourceforge.net/twiki/bin/view/Main/WebHome X-Chat Aqua]&lt;br /&gt;
** now has [http://www.portableapps.org PortableApps] version &amp;amp;#8212; [http://www.macupdate.com/info.php/id/21685/portable-x-chat-aqua MacUpdate link]&lt;br /&gt;
* [http://www.aquaticx.com/ Xirc]&lt;br /&gt;
&lt;br /&gt;
===Cross-platform===&lt;br /&gt;
* [http://pidgin.im/ Pidgin] — Popular open-source multi-protocol windows client, using libpurple&lt;br /&gt;
* [http://irssi.org/ Irssi] — Unix client, often run from a shell, sometimes [http://f0rked.com/articles/irssi in conjunction with 'screen'].&lt;br /&gt;
* [http://jirc.hick.org/jirc/ jIRCii]&lt;br /&gt;
&lt;br /&gt;
== meetups ==&lt;br /&gt;
The idea of having IRC meetups (a set time for a meeting on IRC) has been suggested by [[User:RyanKing|Ryan King]], as it appears to work well for the WordPress community and may help us from time-to-time. As of yet, there are no plans to have meetups.&lt;br /&gt;
&lt;br /&gt;
==IRC and microformats==&lt;br /&gt;
=== hCard ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* ''How do we maintain info about ircing in our hCards (nick, network, fav-channels?)?''&lt;br /&gt;
** presumably this would be done with a URL. - [[User:Tantek|Tantek]] 18:42, 30 July 2009 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related discussions ==&lt;br /&gt;
* [[chat]] [[chat-examples|chat examples]], [[chat-formats|chat formats]], and [[chat-brainstorming|chat brainstorming]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[irc-meetups]]&lt;br /&gt;
*[[discuss|Other discussion fora]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=irc&amp;diff=70313</id>
		<title>irc</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=irc&amp;diff=70313"/>
		<updated>2020-12-16T02:44:03Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Removes link to Chatzilla, which is no longer available according to addons.mozilla.org.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:#microformats on freenode}}&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
;shortURL&lt;br /&gt;
:http://ufs.cc/w/irc&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
You may use a IRC client application such as [http://colloquy.info/ Colloquy] (Mac or iOS) or [https://market.android.com/details?id=org.yaaic&amp;amp;feature=search_result Yaaic on Android] to join:&lt;br /&gt;
* irc://irc.freenode.net/microformats&lt;br /&gt;
&lt;br /&gt;
Alternatively you may use a browser to quickly join and chat:&lt;br /&gt;
* http://webchat.freenode.net/?channels=microformats&amp;amp;nick=uf-wiki-visitor&lt;br /&gt;
&amp;lt;!--* Firefox users: install [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ Chatzilla] IRC plugin.&lt;br /&gt;
As of 2020-12-15 this plugin no longer exists: &amp;quot;If you’ve followed a link from another site for an extension or theme, that item is no longer available.&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!--* http://leafychat.com/#microformats@irc.freenode.net&lt;br /&gt;
** (Leafy Chat redirects to Convore and doesn't appear to connect as of 2011-07-06)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The microformats IRC channel is hosted on the freenode.net server.  See [[irc#Joining_a_server_and_channel|Joining a server and channel]] help for further information and use of client applications which provide additional services (authenticated nicknames, logging, etc.).&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
Recent logs of the Freenode #microformats IRC channel can be found at:&lt;br /&gt;
* https://chat.indieweb.org/microformats/&lt;br /&gt;
* [http://logbot.glob.com.au/?c=freenode%23microformats&amp;amp;s=today logbot.glob.com.au microformats IRC Logs]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
&lt;br /&gt;
If the krijnhoetmer logs have stopped logging or have any other problems:&lt;br /&gt;
# try this in the IRC channel: &amp;lt;br/&amp;gt;&amp;lt;kbd&amp;gt;/invite krijnh #microformats&amp;lt;/kbd&amp;gt;&amp;lt;br/&amp;gt; if you see &amp;lt;br/&amp;gt;&amp;lt;samp&amp;gt;krijnh joined the chat room.&amp;lt;/samp&amp;gt;&amp;lt;br/&amp;gt; then the krijnhoetmer logs should start working again. if you don't see that, then:&lt;br /&gt;
# go http://krijnhoetmer.nl/#contact&lt;br /&gt;
# leave a message in the Contact box in the right column for Krijn, e.g. &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;looks like the logs at http://krijnhoetmer.nl/irc-logs/microformats have stopped working, could you take a look?&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
# Krijn is fairly responsive, expect that logging will resume shortly.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
Older logs can be found at the following locations for the following periods:&lt;br /&gt;
* [https://chat.indieweb.org/microformats/2011-02-12 2011-02-12]–[https://chat.indieweb.org/microformats current] at https://chat.indieweb.org/microformats&lt;br /&gt;
* [http://logbot.glob.com.au/?c=freenode%23microformats&amp;amp;s=20090220&amp;amp;e=20090220 2009-02-20] - [http://logbot.glob.com.au/?c=freenode%23microformats&amp;amp;s=today current] at [http://logbot.glob.com.au/?c=freenode%23microformats&amp;amp;s=today logbot.glob.com.au microformats IRC Logs]&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20131028 2013-10-28] (partial) - [http://krijnhoetmer.nl/irc-logs/microformats/ current] at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
----&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20130811 2013-08-11] (partial) - [http://krijnhoetmer.nl/irc-logs/microformats/20130917 2013-09-17] (partial) at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20120726 2012-10-09] (partial) - [http://krijnhoetmer.nl/irc-logs/microformats/20130807 2013-08-07] at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20120726 2012-07-26] - [http://krijnhoetmer.nl/irc-logs/microformats/20120916 2012-09-16] (partial) at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20090220 2009-02-20] - [http://krijnhoetmer.nl/irc-logs/microformats/20120621 2012-06-21] (partial) at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2011-04-05 2011-04-05] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2011-02-24 2011-02-24] - [http://rbach.priv.at/Microformats/IRC/2011-03-03 2011-03-03] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2009-08-28 2009-08-28] - [http://rbach.priv.at/Microformats/IRC/2010-09-27 2010-09-27] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2009-03-26 2009-03-26] - [http://rbach.priv.at/Microformats/IRC/2009-06-29 2009-06-29] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
* 2009-02-09 - 2009-02-20 '''missing'''. if anyone has any logs for this time period, please upload them and add links here.&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2009-01-14 2009-01-14] - [http://rbach.priv.at/Microformats/IRC/2009-02-09 2009-02-09] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats/20080825 2008-08-25] - [http://krijnhoetmer.nl/irc-logs/microformats/20090114 2009-01-14] at [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs]&lt;br /&gt;
* 2008-08-16 - 2008-08-24 '''missing'''. if anyone has any logs for this time period, please upload them and add links here.&lt;br /&gt;
* [http://rbach.priv.at/Microformats/IRC/2005-11-16 2005-11-16] - [http://rbach.priv.at/Microformats/IRC/2008-08-16 2008-08-16] at [http://rbach.priv.at/Microformats-IRC/ rbach microformats IRC Logs]&lt;br /&gt;
&lt;br /&gt;
Until sometime on 2007-07-16, there was an [http://microformat.makedatamakesense.com/log_feed/ atom feed] provided for the [http://rbach.priv.at/Microformats-IRC/ rbach IRC Logs]. &lt;br /&gt;
&lt;br /&gt;
=== logs status ===&lt;br /&gt;
* [http://logbot.glob.com.au/?c=freenode%23microformats logbot.glob.com.au microformats IRC Logs] are current and live&lt;br /&gt;
* [http://krijnhoetmer.nl/irc-logs/microformats krijnhoetmer microformats IRC Logs] appears to have stopped logging as of 2016-01.&lt;br /&gt;
** I emailed and heard back from Krijn on 2016-03-19 &amp;quot;Yeah, sorry, I know, server resources are very low for that (old) machine. I think it's sort of EOL..&amp;quot; [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=21+Mar+2016&amp;amp;e=21+Mar+2016&amp;amp;h=Krijn#c86411] -- gRegor&lt;br /&gt;
* [http://rbach.priv.at/Microformats-IRC/ rbach IRC Logs] appear to have stopped logging as of 2009-06-29.&lt;br /&gt;
&lt;br /&gt;
== People on IRC ==&lt;br /&gt;
See our [[irc-people|list of IRC regulars]] and their normal timezones.&lt;br /&gt;
&lt;br /&gt;
Our channel has regular admins, who are also mailing list and wiki admins. If you want to get their attention, just say &amp;quot;adminhelp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Bots on IRC==&lt;br /&gt;
The IRC channel uses these bots:&lt;br /&gt;
* [[Loqi]] - logs IRC, posts notifications to IRC of wiki edits&lt;br /&gt;
** If Loqi is missing, see https://indieweb.org/Loqi for instructions&lt;br /&gt;
** If Wiki edits are missing, ask an admin for &amp;quot;adminhelp&amp;quot;, and reference [[admin-how-to#irc]]&lt;br /&gt;
&lt;br /&gt;
=== Previous Bots ===&lt;br /&gt;
These bots were active ~2005-2009? (actual dates can likely be confirmed by checking old IRC logs)&lt;br /&gt;
* [[mfbot]] - logs all edits to this wiki. (Contact: [[User:RyanKing|Ryan King]])&lt;br /&gt;
* [[mflogbot]] - logs the irc channel itself to archives on the web. (Contact: [[User:RobertBachmann|Robert Bachmann]])&lt;br /&gt;
* [http://joiwiki.ito.com/joiwiki/index.cgi?jibot jibot]&lt;br /&gt;
&lt;br /&gt;
==== Greeting Bot ====&lt;br /&gt;
To display a brief description of who you are each time you join the channel, you can use “JiBot” to create a definition for your username. To do so pass the &amp;lt;tt&amp;gt;?def&amp;lt;/tt&amp;gt; command using something like the following convention (be brief):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;?def jdoe is John Doe and can be found online at &amp;lt;nowiki&amp;gt;http://www.example.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More information about using JiBot commands can be found on the [http://joiwiki.ito.com/joiwiki/index.cgi?jibot jibot website]&lt;br /&gt;
&lt;br /&gt;
== Getting started with IRC ==&lt;br /&gt;
'''Please note:''' These directions relate specifically to the services that [http://freenode.net/ Freenode] offers.  Other IRC servers may differ with the services they offer and how to operate them.  &lt;br /&gt;
&lt;br /&gt;
===Joining a server and channel===&lt;br /&gt;
Most clients will offer you a connection dialogue showing the required fields for connection.  The details to connect to the server are:&lt;br /&gt;
&lt;br /&gt;
*Server: &amp;lt;code&amp;gt;irc.freenode.net&amp;lt;/code&amp;gt;&lt;br /&gt;
*Port: &amp;lt;code&amp;gt;6667&amp;lt;/code&amp;gt; (usually default)&lt;br /&gt;
&lt;br /&gt;
You should also fill in any fields to set your alias, real name and email address.  If available, save these settings for later to speed up connecting in future.&lt;br /&gt;
&lt;br /&gt;
More on setting a password protected alias can be [[irc#Creating_a_registered_nickname|read here]].&lt;br /&gt;
&lt;br /&gt;
Once connected, you will most likely be presented with the &amp;quot;MOTD&amp;quot; (message of the day).  For the first visit, it is advisable to read this to find out about the server's policies and other important pieces of news and help, otherwise it can be ignored and you can either [[irc#Creating_a_registered_nickname|authenticate your alias]] or join a channel.&lt;br /&gt;
&lt;br /&gt;
Your client may display to you a listing of all available channels.  Locate &amp;lt;code&amp;gt;#microformats&amp;lt;/code&amp;gt; and select to join, or type &amp;lt;code&amp;gt;'''/join #microformats'''&amp;lt;/code&amp;gt; into the command line available to you in your client (where you've just been shown your connection).&lt;br /&gt;
&lt;br /&gt;
Assuming you've connected correctly, you should now find youself in the microformats channel!&lt;br /&gt;
&lt;br /&gt;
More detailed, but general, advice can be [http://www.irchelp.org/irchelp/irctutorial.html#intro read here].&lt;br /&gt;
&lt;br /&gt;
===Creating a registered nickname===&lt;br /&gt;
Registration means that a password becomes associated with your alias/nickname/sign-in name and from the point of registration authorisation is required to communicate using that alias.&lt;br /&gt;
&lt;br /&gt;
Registration of a nickname is required for some channels, and should be done to protect your identity.&lt;br /&gt;
&lt;br /&gt;
To register with [http://freenode.net Freenode], you must communicate with their service known as NickServ.  The two basic command you will need to get started are:&lt;br /&gt;
&lt;br /&gt;
For registration: &amp;lt;code&amp;gt;/msg nickserv register ''password''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For authentication (login): &amp;lt;code&amp;gt;/msg nickserv identify ''password''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With &amp;lt;code&amp;gt;''password''&amp;lt;/code&amp;gt; being a value of your choice.  You can also associate an email address with your nickname, which is optional, but advisable, should you want to request a password retrieval:&lt;br /&gt;
&lt;br /&gt;
To add your email address: &amp;lt;code&amp;gt;/msg nickserv set email ''email''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where &amp;lt;code&amp;gt;''email''&amp;lt;/code&amp;gt; is your email address.&lt;br /&gt;
&lt;br /&gt;
Your client may offer you an option to set your alias and password, so that you will not have to manually enter this information on each join.  Refer to your client's help files for more on this.&lt;br /&gt;
&lt;br /&gt;
These commands can be typed directly into the server window upon join, or whilst in a channel, just as you would normally send a message.&lt;br /&gt;
&lt;br /&gt;
More detailed user registration command information can be found in [http://freenode.net/faq.shtml#userregistration Freenode's FAQ]&lt;br /&gt;
&lt;br /&gt;
===Communicating===&lt;br /&gt;
Sending a message to a channel may be as simple as joining the channel and typing into the window, just as you would with an Instant Messenger.  You can refer to your client's help files for quicker/alternative methods of doing the following.  For all clients the following commands are available (the parts in bold must be used, but are not seen by others):&lt;br /&gt;
&lt;br /&gt;
'''Sending a message to the entire channel you are currently in:'''&lt;br /&gt;
&lt;br /&gt;
Command: &amp;lt;kbd&amp;gt;'''/msg''' Hello world!&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Result: &amp;lt;samp&amp;gt;&amp;lt;Bill&amp;gt; Hello world!&amp;lt;/samp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Sending an action/emotive/3rd person statement:'''&lt;br /&gt;
&lt;br /&gt;
Command: &amp;lt;kbd&amp;gt;'''/me''' dances a code jig&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Result: &amp;lt;samp&amp;gt;Bill dances a code jig&amp;lt;/samp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Sending a message to one person only (private chat):'''&lt;br /&gt;
&lt;br /&gt;
Command: &amp;lt;kbd&amp;gt;'''/msg Bob''' Hi, would you like to code jig?&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Result (for Bob only): &amp;lt;samp&amp;gt;&amp;lt;Bill&amp;gt; Hi, would you like to code jig?&amp;lt;/samp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Clients==&lt;br /&gt;
The following clients are recommended by #microformats participants:&lt;br /&gt;
&lt;br /&gt;
=== Web ===&lt;br /&gt;
* [http://leafychat.com/#microformats@irc.freenode.net Leafy Chat]&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
* [http://www.mirc.com/ mIRC] — Popular Windows client. Trial version only.&lt;br /&gt;
* [http://xchat.org/ X-Chat] — Popular cross-platform client. [http://www.silverex.org/download/ Free Windows version] available.&lt;br /&gt;
* [http://www.adiirc.com/ AdiIRC] — Simple C# based IRC client.&lt;br /&gt;
* [http://www.miranda-im.org/ Miranda] — Lightweight, muti-protocol instant messenger.&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
* [http://colloquy.info Colloquy] — open source, free&lt;br /&gt;
* [http://homepage.mac.com/philrobin/conversation/ Conversation]&lt;br /&gt;
* [http://sourceforge.net/projects/fire Fire] — open source, free&lt;br /&gt;
* [http://www.conceitedsoftware.com/products/linkinus Linkinus]&lt;br /&gt;
* [http://www.chipersoft.com/minerva/ Minerva]&lt;br /&gt;
* [http://www.snak.com/ Snak]&lt;br /&gt;
* [http://xchataqua.sourceforge.net/twiki/bin/view/Main/WebHome X-Chat Aqua]&lt;br /&gt;
** now has [http://www.portableapps.org PortableApps] version &amp;amp;#8212; [http://www.macupdate.com/info.php/id/21685/portable-x-chat-aqua MacUpdate link]&lt;br /&gt;
* [http://www.aquaticx.com/ Xirc]&lt;br /&gt;
&lt;br /&gt;
===Cross-platform===&lt;br /&gt;
* [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ Chatzilla] — Cross-platform IRC extension for Firefox&lt;br /&gt;
* [http://pidgin.im/ Pidgin] — Popular open-source multi-protocol windows client, using libpurple&lt;br /&gt;
* [http://irssi.org/ Irssi] — Unix client, often run from a shell, sometimes [http://f0rked.com/articles/irssi in conjunction with 'screen'].&lt;br /&gt;
* [http://jirc.hick.org/jirc/ jIRCii]&lt;br /&gt;
&lt;br /&gt;
== meetups ==&lt;br /&gt;
The idea of having IRC meetups (a set time for a meeting on IRC) has been suggested by [[User:RyanKing|Ryan King]], as it appears to work well for the WordPress community and may help us from time-to-time. As of yet, there are no plans to have meetups.&lt;br /&gt;
&lt;br /&gt;
==IRC and microformats==&lt;br /&gt;
=== hCard ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* ''How do we maintain info about ircing in our hCards (nick, network, fav-channels?)?''&lt;br /&gt;
** presumably this would be done with a URL. - [[User:Tantek|Tantek]] 18:42, 30 July 2009 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related discussions ==&lt;br /&gt;
* [[chat]] [[chat-examples|chat examples]], [[chat-formats|chat formats]], and [[chat-brainstorming|chat brainstorming]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[irc-meetups]]&lt;br /&gt;
*[[discuss|Other discussion fora]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70312</id>
		<title>menu-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70312"/>
		<updated>2020-12-16T00:57:30Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Adds sig to most recent addition.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
Per [[process]], for documenting ideas towards a restaurant [[menu]] microformat, based on experience and research into:&lt;br /&gt;
* [[menu-examples]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
And of course using existing microformats as building blocks when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Brainstorming ==&lt;br /&gt;
There may be some similarities with [[h-resume]], which also has an [[h-card]] for the organization (e.g. restaurant) whom the resume belongs to.&lt;br /&gt;
&lt;br /&gt;
The obvious path forward is to use [[h-product]] for menu items. [[h-product]] offers pretty much everything a menu item microformat needs: p-name for the item name, (e.g. mushroom soup), u-photo, e-description, and p-price. There are some additional things in menus, notably calories, that might  require a new property. If a menu has a page for individual items, u-url is available. [[h-review]] might be useful for review sites like Yelp or Google (though that might be a disincentive for restaurants, which tend to harbor strong antipathy to review sites in general and Yelp in particular. I'm not sure if p-category can be reused, but some way to tag items -- as vegetarian, gluten-free, etc. -- would be useful. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:12, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes, p-category makes sense as a general tagging model. Gathering examples of categories used is useful to see what may be worth including as examples. [[User:Kevin Marks|Kevin Marks]] ([[User talk:Kevin Marks|talk]]) 15:04, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
What's missing is a container for the menu items. Such a menu container microformat could include meta information such as availability (e.g., a dinner menu is available 5pm -10pm). [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:14, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
A menu container needs a way to distinguish sections that is flexible to account for language differences and restaurant conventions. This could present challenges to third party consumers. However, I think a menu microformat should not get bogged down in such details. It's conceivable that a restaurant and third party could agree on a set of additional classnames for interoperability. So if menu aggregator Foo Delivery Service could look for a class name specific to its service in addition to any microformats, e.g., &amp;lt;code&amp;gt;section class=&amp;quot;starter foo-deliver&amp;quot;&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;starter&amp;lt;/code&amp;gt; classname would be a microformat spec, used by menus everywhere, while &amp;lt;code&amp;gt;foo-deliver&amp;lt;/code&amp;gt; would be specific to Foo Service, a way for a restaurant to specify that it offers items in this section for delivery by Foo. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 15:20, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
A simple solution might be to have a container for a menu section /instead of/ a container for a menu. That would allow a website to have a menu spread over several pages, each one with a single container element. If a website wants to put it on one page, they could place the container elements on one page, one after the other. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 16:31, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Ideas for property names:&lt;br /&gt;
* p-name for the name of menu, e.g. dinner, breakfast, etc.; or maybe desserts, wine list, appetizers, etc.&lt;br /&gt;
* p-seller - the retailer, i.e., restaurant, cafe, pub, etc, that is selling the menu items. This can be an embedded h-card. The name of this property should be generic enough to include a wide rage of food retailers, perhaps with the ability to include other types of businesses. Alternative property names for p-seller:&lt;br /&gt;
** p-brand - this has the advantage of reuse from h-product, but that might be a disadvantage, too: menu items will likely be nested h-products, so using p-brand on parent and nested type might cause confusion. There's an additional problem: p-brand as restaurant name might be confusing for authors who might reasonably assume that a property called p-brand refers to the item brand, not the restaurant brand. In other words, a restaurant called &amp;quot;Bavarian Pub&amp;quot; that sells Franziskaner beer might assign &amp;quot;Franziskaner&amp;quot; instead of &amp;quot;Bavarian Pub&amp;quot; to a p-brand property. Thus, p-brand is a strong &amp;quot;pass&amp;quot; for me.&lt;br /&gt;
** p-restaurant - simple and straightforward, but might give wrong impression of its intended use. I imagine a street vendor might not think of her/himself as a restaurant.&lt;br /&gt;
** p-organization - very adaptable, but not very intuitive.&lt;br /&gt;
** p-retailer - again, adaptable, but not as obvious as seller, and perhaps again might give wrong impression to street vendors or food kiosks.&lt;br /&gt;
* p-product -- the thing being sold, a beverage or dish, e.g., main dish, appetizer, dessert, beer, wine, etc. This can be an embedded h-product. The property name matches the embedded name, following the [[h-card]] convention which has a p-adr property that can be an embedded [[h-adr]]; and p-geo with optionally embedded h-geo. Also, p-product is both intuitive and adaptable. Obviously, a menu normally contains many items, so this would be a many-to-one relationship.&lt;br /&gt;
&lt;br /&gt;
I realize that h-menu is not ready for a draft, hence why I'm putting these ideas in menu-brainstorming. It's just me bouncing ideas off the wall. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:45, 8 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
One of the problems with coming up with a structure for h-menu is how to deal with menu sections. It seems like one simple solution is to allow [[h-menu]] to be nested. The outer container might have a p-name &amp;quot;Dinner&amp;quot;. Then nested sections could be themselves h-menu instances, each with their own p-name set to Appetizers, Salads, etc. That would allow for simple, flat menus with a list of h-product instances, or complex menus with sections, sub-sections, etc., as needed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:06, 10 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
For prix fixe menus, there's no way to mark up choices with microformats. It probably makes sense to just markup the entire menu as one h-product, with all choices for each course in one large e-description. That is an honest representation of the menu and probably is good enough. Something more specific would have to be done in h-product, and shouldn't be implemented unless it's really needed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 00:38, 11 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I just came across the p-nutrition property from [[h-recipe]], which could be reused for menu items that include calories or other (often required) nutritional information. There is, however, a problem: as proposed so far, h-menu would be a collection of p-products that could embed [[h-product]]. But p-nutrition is not part of [[h-product]]. Other h-menu properties would pertain to the menu as a whole, not to individual menu items. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 00:57, 16 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
... feel free to add more unstructured thoughts there.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70311</id>
		<title>menu-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70311"/>
		<updated>2020-12-15T00:53:26Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* international restaurant chains */ Specifies that nutritional info must appear on menus in the U.S.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Per [[process]] this page is for collecting real world [[examples]] of restaurant [[menu]] publishing, publishing information about menu items ([[food]]) intended for human consumption in an organized manner, towards the development of a menu microformat.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Menus on the web have many of the same features as printed menus used in restaurants. They are a list of products organized by type. On the web, some menus include items on one page, with sections for different categories, e.g., appetizers, salads, main dishes, desserts, etc. On other sites, different menu sections are on different pages, e.g. /menu/salads, /menu/soups, etc. Some web site menus contain cocktails, either in a separate page or in its own section. Wine lists are quite common too, usually on a separate page.&lt;br /&gt;
&lt;br /&gt;
There is no uniform set of category names. Some restaurants use &amp;quot;main dish&amp;quot;, others denote main dish with &amp;quot;entree&amp;quot;. Some use &amp;quot;starter&amp;quot;, others &amp;quot;appetizer&amp;quot;, to denote a first course. Also, larger menus often break up main dishes into categories, e.g., &amp;quot;pasta&amp;quot;, &amp;quot;steak&amp;quot;, etc. There are of course language differences, e.g., in French one finds &amp;quot;entrée&amp;quot; for first course and &amp;quot;plat principal&amp;quot; for the main dish.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Example menus are organized by location.&lt;br /&gt;
&lt;br /&gt;
=== France ===&lt;br /&gt;
French menus are sometimes organized by course instead of category, i.e., entrée (first course), plat principal (main course), and dessert. Many French restaurants offer à la carte and prix fixe menus. À la carte are structured like American menus, with individually priced items. Prix fixe menus are priced per person, with sections for each course that offer a limited number of choices.&lt;br /&gt;
&lt;br /&gt;
==== Break Restaurant ====&lt;br /&gt;
Each item on [https://www.break-paris.fr/menus-cartes Break's menu] have a name, description, and price. Some also include tags like &amp;quot;&amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;Végétalien&amp;lt;/span&amp;gt;&amp;quot; (vegan) and &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;épicé&amp;lt;/span&amp;gt; (spicy). The categories are simplified: &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;plats&amp;lt;/span&amp;gt; (plates), sides, and desserts. There is also a sections for drinks, broken up into several subsections: cocktails, wine, beer, aperitifs, etc. On some of the drink sections, each item has its own price. On several -- alcool, cocktails classiques, and cocktails création -- there is only one price printed below the heading, with that price applying to all the items beneath it.&lt;br /&gt;
&lt;br /&gt;
==== Benoit ====&lt;br /&gt;
Benoit has two different menus. One is a [https://www.benoit-paris.com/sites/default/files/menus/2020_03_06_benoit_menu_dejeuner_fr.pdf prix fixe lunch menu] with three unnamed, implicit sections for first course, main course, and dessert. Each section offers three choices. The [https://www.benoit-paris.com/sites/default/files/menus/2020_01_16_benoit_paris_-_carte_food_truffe_fr.pdf à la carte menu] has sections like &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;hors d'œuvre froids&amp;lt;/span&amp;gt; (cold appetizers), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;poissons&amp;lt;/span&amp;gt; (fish), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;viandes&amp;lt;/span&amp;gt; (meat), etc.&lt;br /&gt;
&lt;br /&gt;
=== Italy ===&lt;br /&gt;
As in France, some Italian menus are organized by course, e.g., primo for first course, secondo for second course. Some menu sections, however, are based on a food cagegory, e.g. carne for meat, pesce for fish.&lt;br /&gt;
&lt;br /&gt;
==== 'A Taverna Do' Re ====&lt;br /&gt;
[https://atavernadore.com/menu 'A Taverna Do' Re's menu] has 3 sections: &amp;quot;Antipasti&amp;quot;, &amp;quot;I primi&amp;quot;, and &amp;quot;La carne alla brace&amp;quot;. The items have a long name that functions as a name-and-description, and a price.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== United States ===&lt;br /&gt;
&lt;br /&gt;
==== T.S. McHugh's Irish Pub ====&lt;br /&gt;
[https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf This pub menu]'s food items have a name, description, and price. Some items have two sizes (small and large) with a price for each. Also, some items contain a base price, and one or more &amp;quot;upsell&amp;quot; options with an upcharge price, e.g., nachos $8.75, add guacamole $2.00.&lt;br /&gt;
&lt;br /&gt;
The draughts on the menu are organized into four categories. Each listing includes a name. The microbrew draughts include two additional pieces of information: &amp;lt;abbr title=&amp;quot;international bitterness units&amp;quot;&amp;gt;ibus&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;alcohol by volume&amp;quot;&amp;gt;abv&amp;lt;/abbr&amp;gt;. There are also two prices (one for pint, one for pitcher) for each draught category. Those prices are listed in the heading for each category, rather than repeated in each individual listing.&lt;br /&gt;
&lt;br /&gt;
==== Sal Y Limon ====&lt;br /&gt;
[https://www.salylimonseattle.com/menu Sal Y Limon's menu] is one page that changes when you click different categories. Each item has only a name and description, no price.&lt;br /&gt;
&lt;br /&gt;
==== Canlis  ====&lt;br /&gt;
The [https://canlis.com/menu menu at Canlis] has only name and description for each item.&lt;br /&gt;
&lt;br /&gt;
==== Tavolata ====&lt;br /&gt;
[https://www.ethanstowellrestaurants.com/locations/tavolata-capitol-hill/takeout-menu/ Tavolata's menu] items each have a name, price, and description.&lt;br /&gt;
&lt;br /&gt;
==== 99 Restaurant ====&lt;br /&gt;
Their menu is spread out over several pages. The menu for [https://www.99restaurants.com/menu/steak/ steaks] is a good example. Each menu item includes a name, a description, and calories. Photos of the items are linked, but not part of the initial view of the page. Also, there are no prices, presumably because the price changes by location. There are also options for many items, like adding a salad or ordering a larger portion.&lt;br /&gt;
&lt;br /&gt;
==== Bertucci's ====&lt;br /&gt;
[https://www.bertuccis.com/menu/ Bertucci's menu] is on one page, with sections for salads, soups, entrees, etc. Each section has a picture, but individual items do not. They contain only a name, description, and price.&lt;br /&gt;
&lt;br /&gt;
=== international restaurant chains  ===&lt;br /&gt;
Large restaurants/chains must supply nutritional information on their menus in the United States. All the entries in this section show calories for each menu item.&lt;br /&gt;
&lt;br /&gt;
==== Applebee's ====&lt;br /&gt;
They use one page, where the url changes as you scroll. Each part works the same. The [https://www.applebees.com/en/menu/sandwiches-and-more sandwiches section] to take one example has a list of items with name, picture, price, and calories, and, when you hover a mouse pointer over it, order buttons.&lt;br /&gt;
&lt;br /&gt;
==== Olive Garden ====&lt;br /&gt;
The Olive Garden's [https://www.olivegarden.com/menu-listing/classic-entrees dinner entrees] menu (N.B. you may have to supply a location before they'll show you a menu) has a name, photo, price, and calories for each item, along with an order button, a bookmark-like &amp;quot;mark this as a favorite&amp;quot; button, and a tag if the item is &amp;quot;new&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== third party services ===&lt;br /&gt;
&lt;br /&gt;
==== Open Table ====&lt;br /&gt;
Open Table is a third party reservation site that publishes information about each restaurant that uses their service. To take one example, here's [https://www.opentable.com/ts-mchughs?originId=2&amp;amp;corrid=ce749341-1486-4d6c-96b4-2c4311ac6fb5&amp;amp;avt=eyJ2IjoyLCJtIjowLCJwIjowLCJzIjowLCJuIjowfQ&amp;amp;p=2020-12-03T00%3A00%3A00 T.S. McHugh's Pub on Open Table]. The menu is duplicated from [https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf their web site].&lt;br /&gt;
&lt;br /&gt;
==== Grub Hub ====&lt;br /&gt;
Grub Hub is a delivery service. Like Open Table, it publishes menus for restaurants that they provide delivery for. For example, here's [https://www.grubhub.com/restaurant/sal-y-limon-10-mercer-street-seattle/1579529 Grub Hub's Sal Y Limon menu]. It has the same items as the [https://www.salylimonseattle.com/menu restaurant's own website], though the Grub Hub version includes prices.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
* [[menu-brainstorming]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70309</id>
		<title>menu-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70309"/>
		<updated>2020-12-15T00:35:35Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Benoit */ Fixes link format.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Per [[process]] this page is for collecting real world [[examples]] of restaurant [[menu]] publishing, publishing information about menu items ([[food]]) intended for human consumption in an organized manner, towards the development of a menu microformat.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Menus on the web have many of the same features as printed menus used in restaurants. They are a list of products organized by type. On the web, some menus include items on one page, with sections for different categories, e.g., appetizers, salads, main dishes, desserts, etc. On other sites, different menu sections are on different pages, e.g. /menu/salads, /menu/soups, etc. Some web site menus contain cocktails, either in a separate page or in its own section. Wine lists are quite common too, usually on a separate page.&lt;br /&gt;
&lt;br /&gt;
There is no uniform set of category names. Some restaurants use &amp;quot;main dish&amp;quot;, others denote main dish with &amp;quot;entree&amp;quot;. Some use &amp;quot;starter&amp;quot;, others &amp;quot;appetizer&amp;quot;, to denote a first course. Also, larger menus often break up main dishes into categories, e.g., &amp;quot;pasta&amp;quot;, &amp;quot;steak&amp;quot;, etc. There are of course language differences, e.g., in French one finds &amp;quot;entrée&amp;quot; for first course and &amp;quot;plat principal&amp;quot; for the main dish.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Example menus are organized by location.&lt;br /&gt;
&lt;br /&gt;
=== France ===&lt;br /&gt;
French menus are sometimes organized by course instead of category, i.e., entrée (first course), plat principal (main course), and dessert. Many French restaurants offer à la carte and prix fixe menus. À la carte are structured like American menus, with individually priced items. Prix fixe menus are priced per person, with sections for each course that offer a limited number of choices.&lt;br /&gt;
&lt;br /&gt;
==== Break Restaurant ====&lt;br /&gt;
Each item on [https://www.break-paris.fr/menus-cartes Break's menu] have a name, description, and price. Some also include tags like &amp;quot;&amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;Végétalien&amp;lt;/span&amp;gt;&amp;quot; (vegan) and &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;épicé&amp;lt;/span&amp;gt; (spicy). The categories are simplified: &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;plats&amp;lt;/span&amp;gt; (plates), sides, and desserts. There is also a sections for drinks, broken up into several subsections: cocktails, wine, beer, aperitifs, etc. On some of the drink sections, each item has its own price. On several -- alcool, cocktails classiques, and cocktails création -- there is only one price printed below the heading, with that price applying to all the items beneath it.&lt;br /&gt;
&lt;br /&gt;
==== Benoit ====&lt;br /&gt;
Benoit has two different menus. One is a [https://www.benoit-paris.com/sites/default/files/menus/2020_03_06_benoit_menu_dejeuner_fr.pdf prix fixe lunch menu] with three unnamed, implicit sections for first course, main course, and dessert. Each section offers three choices. The [https://www.benoit-paris.com/sites/default/files/menus/2020_01_16_benoit_paris_-_carte_food_truffe_fr.pdf à la carte menu] has sections like &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;hors d'œuvre froids&amp;lt;/span&amp;gt; (cold appetizers), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;poissons&amp;lt;/span&amp;gt; (fish), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;viandes&amp;lt;/span&amp;gt; (meat), etc.&lt;br /&gt;
&lt;br /&gt;
=== Italy ===&lt;br /&gt;
As in France, some Italian menus are organized by course, e.g., primo for first course, secondo for second course. Some menu sections, however, are based on a food cagegory, e.g. carne for meat, pesce for fish.&lt;br /&gt;
&lt;br /&gt;
==== 'A Taverna Do' Re ====&lt;br /&gt;
[https://atavernadore.com/menu 'A Taverna Do' Re's menu] has 3 sections: &amp;quot;Antipasti&amp;quot;, &amp;quot;I primi&amp;quot;, and &amp;quot;La carne alla brace&amp;quot;. The items have a long name that functions as a name-and-description, and a price.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== United States ===&lt;br /&gt;
&lt;br /&gt;
==== T.S. McHugh's Irish Pub ====&lt;br /&gt;
[https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf This pub menu]'s food items have a name, description, and price. Some items have two sizes (small and large) with a price for each. Also, some items contain a base price, and one or more &amp;quot;upsell&amp;quot; options with an upcharge price, e.g., nachos $8.75, add guacamole $2.00.&lt;br /&gt;
&lt;br /&gt;
The draughts on the menu are organized into four categories. Each listing includes a name. The microbrew draughts include two additional pieces of information: &amp;lt;abbr title=&amp;quot;international bitterness units&amp;quot;&amp;gt;ibus&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;alcohol by volume&amp;quot;&amp;gt;abv&amp;lt;/abbr&amp;gt;. There are also two prices (one for pint, one for pitcher) for each draught category. Those prices are listed in the heading for each category, rather than repeated in each individual listing.&lt;br /&gt;
&lt;br /&gt;
==== Sal Y Limon ====&lt;br /&gt;
[https://www.salylimonseattle.com/menu Sal Y Limon's menu] is one page that changes when you click different categories. Each item has only a name and description, no price.&lt;br /&gt;
&lt;br /&gt;
==== Canlis  ====&lt;br /&gt;
The [https://canlis.com/menu menu at Canlis] has only name and description for each item.&lt;br /&gt;
&lt;br /&gt;
==== Tavolata ====&lt;br /&gt;
[https://www.ethanstowellrestaurants.com/locations/tavolata-capitol-hill/takeout-menu/ Tavolata's menu] items each have a name, price, and description.&lt;br /&gt;
&lt;br /&gt;
==== 99 Restaurant ====&lt;br /&gt;
Their menu is spread out over several pages. The menu for [https://www.99restaurants.com/menu/steak/ steaks] is a good example. Each menu item includes a name, a description, and calories. Photos of the items are linked, but not part of the initial view of the page. Also, there are no prices, presumably because the price changes by location. There are also options for many items, like adding a salad or ordering a larger portion.&lt;br /&gt;
&lt;br /&gt;
==== Bertucci's ====&lt;br /&gt;
[https://www.bertuccis.com/menu/ Bertucci's menu] is on one page, with sections for salads, soups, entrees, etc. Each section has a picture, but individual items do not. They contain only a name, description, and price.&lt;br /&gt;
&lt;br /&gt;
=== international restaurant chains  ===&lt;br /&gt;
Large restaurants/chains must supply nutritional information on their menus. All the entries in this section show calories for each menu item.&lt;br /&gt;
&lt;br /&gt;
==== Applebee's ====&lt;br /&gt;
They use one page, where the url changes as you scroll. Each part works the same. The [https://www.applebees.com/en/menu/sandwiches-and-more sandwiches section] to take one example has a list of items with name, picture, price, and calories, and, when you hover a mouse pointer over it, order buttons.&lt;br /&gt;
&lt;br /&gt;
==== Olive Garden ====&lt;br /&gt;
The Olive Garden's [https://www.olivegarden.com/menu-listing/classic-entrees dinner entrees] menu (N.B. you may have to supply a location before they'll show you a menu) has a name, photo, price, and calories for each item, along with an order button, a bookmark-like &amp;quot;mark this as a favorite&amp;quot; button, and a tag if the item is &amp;quot;new&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== third party services ===&lt;br /&gt;
&lt;br /&gt;
==== Open Table ====&lt;br /&gt;
Open Table is a third party reservation site that publishes information about each restaurant that uses their service. To take one example, here's [https://www.opentable.com/ts-mchughs?originId=2&amp;amp;corrid=ce749341-1486-4d6c-96b4-2c4311ac6fb5&amp;amp;avt=eyJ2IjoyLCJtIjowLCJwIjowLCJzIjowLCJuIjowfQ&amp;amp;p=2020-12-03T00%3A00%3A00 T.S. McHugh's Pub on Open Table]. The menu is duplicated from [https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf their web site].&lt;br /&gt;
&lt;br /&gt;
==== Grub Hub ====&lt;br /&gt;
Grub Hub is a delivery service. Like Open Table, it publishes menus for restaurants that they provide delivery for. For example, here's [https://www.grubhub.com/restaurant/sal-y-limon-10-mercer-street-seattle/1579529 Grub Hub's Sal Y Limon menu]. It has the same items as the [https://www.salylimonseattle.com/menu restaurant's own website], though the Grub Hub version includes prices.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
* [[menu-brainstorming]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70308</id>
		<title>menu-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-examples&amp;diff=70308"/>
		<updated>2020-12-15T00:34:25Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* Break Restaurant */ Adds not about pricing multiple items by type.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Per [[process]] this page is for collecting real world [[examples]] of restaurant [[menu]] publishing, publishing information about menu items ([[food]]) intended for human consumption in an organized manner, towards the development of a menu microformat.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Menus on the web have many of the same features as printed menus used in restaurants. They are a list of products organized by type. On the web, some menus include items on one page, with sections for different categories, e.g., appetizers, salads, main dishes, desserts, etc. On other sites, different menu sections are on different pages, e.g. /menu/salads, /menu/soups, etc. Some web site menus contain cocktails, either in a separate page or in its own section. Wine lists are quite common too, usually on a separate page.&lt;br /&gt;
&lt;br /&gt;
There is no uniform set of category names. Some restaurants use &amp;quot;main dish&amp;quot;, others denote main dish with &amp;quot;entree&amp;quot;. Some use &amp;quot;starter&amp;quot;, others &amp;quot;appetizer&amp;quot;, to denote a first course. Also, larger menus often break up main dishes into categories, e.g., &amp;quot;pasta&amp;quot;, &amp;quot;steak&amp;quot;, etc. There are of course language differences, e.g., in French one finds &amp;quot;entrée&amp;quot; for first course and &amp;quot;plat principal&amp;quot; for the main dish.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Example menus are organized by location.&lt;br /&gt;
&lt;br /&gt;
=== France ===&lt;br /&gt;
French menus are sometimes organized by course instead of category, i.e., entrée (first course), plat principal (main course), and dessert. Many French restaurants offer à la carte and prix fixe menus. À la carte are structured like American menus, with individually priced items. Prix fixe menus are priced per person, with sections for each course that offer a limited number of choices.&lt;br /&gt;
&lt;br /&gt;
==== Break Restaurant ====&lt;br /&gt;
Each item on [https://www.break-paris.fr/menus-cartes Break's menu] have a name, description, and price. Some also include tags like &amp;quot;&amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;Végétalien&amp;lt;/span&amp;gt;&amp;quot; (vegan) and &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;épicé&amp;lt;/span&amp;gt; (spicy). The categories are simplified: &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;plats&amp;lt;/span&amp;gt; (plates), sides, and desserts. There is also a sections for drinks, broken up into several subsections: cocktails, wine, beer, aperitifs, etc. On some of the drink sections, each item has its own price. On several -- alcool, cocktails classiques, and cocktails création -- there is only one price printed below the heading, with that price applying to all the items beneath it.&lt;br /&gt;
&lt;br /&gt;
==== Benoit ====&lt;br /&gt;
Benoit has two different menus. One is a [https://www.benoit-paris.com/sites/default/files/menus/2020_03_06_benoit_menu_dejeuner_fr.pdf prix fixe lunch menu] with three unnamed, implicit sections for first course, main course, and dessert. Each section offers three choices. The ]https://www.benoit-paris.com/sites/default/files/menus/2020_01_16_benoit_paris_-_carte_food_truffe_fr.pdf à la carte menu] has sections like &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;hors d'œuvre froids&amp;lt;/span&amp;gt; (cold appetizers), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;poissons&amp;lt;/span&amp;gt; (fish), &amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;viandes&amp;lt;/span&amp;gt; (meat), etc.&lt;br /&gt;
&lt;br /&gt;
=== Italy ===&lt;br /&gt;
As in France, some Italian menus are organized by course, e.g., primo for first course, secondo for second course. Some menu sections, however, are based on a food cagegory, e.g. carne for meat, pesce for fish.&lt;br /&gt;
&lt;br /&gt;
==== 'A Taverna Do' Re ====&lt;br /&gt;
[https://atavernadore.com/menu 'A Taverna Do' Re's menu] has 3 sections: &amp;quot;Antipasti&amp;quot;, &amp;quot;I primi&amp;quot;, and &amp;quot;La carne alla brace&amp;quot;. The items have a long name that functions as a name-and-description, and a price.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== United States ===&lt;br /&gt;
&lt;br /&gt;
==== T.S. McHugh's Irish Pub ====&lt;br /&gt;
[https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf This pub menu]'s food items have a name, description, and price. Some items have two sizes (small and large) with a price for each. Also, some items contain a base price, and one or more &amp;quot;upsell&amp;quot; options with an upcharge price, e.g., nachos $8.75, add guacamole $2.00.&lt;br /&gt;
&lt;br /&gt;
The draughts on the menu are organized into four categories. Each listing includes a name. The microbrew draughts include two additional pieces of information: &amp;lt;abbr title=&amp;quot;international bitterness units&amp;quot;&amp;gt;ibus&amp;lt;/abbr&amp;gt; and &amp;lt;abbr title=&amp;quot;alcohol by volume&amp;quot;&amp;gt;abv&amp;lt;/abbr&amp;gt;. There are also two prices (one for pint, one for pitcher) for each draught category. Those prices are listed in the heading for each category, rather than repeated in each individual listing.&lt;br /&gt;
&lt;br /&gt;
==== Sal Y Limon ====&lt;br /&gt;
[https://www.salylimonseattle.com/menu Sal Y Limon's menu] is one page that changes when you click different categories. Each item has only a name and description, no price.&lt;br /&gt;
&lt;br /&gt;
==== Canlis  ====&lt;br /&gt;
The [https://canlis.com/menu menu at Canlis] has only name and description for each item.&lt;br /&gt;
&lt;br /&gt;
==== Tavolata ====&lt;br /&gt;
[https://www.ethanstowellrestaurants.com/locations/tavolata-capitol-hill/takeout-menu/ Tavolata's menu] items each have a name, price, and description.&lt;br /&gt;
&lt;br /&gt;
==== 99 Restaurant ====&lt;br /&gt;
Their menu is spread out over several pages. The menu for [https://www.99restaurants.com/menu/steak/ steaks] is a good example. Each menu item includes a name, a description, and calories. Photos of the items are linked, but not part of the initial view of the page. Also, there are no prices, presumably because the price changes by location. There are also options for many items, like adding a salad or ordering a larger portion.&lt;br /&gt;
&lt;br /&gt;
==== Bertucci's ====&lt;br /&gt;
[https://www.bertuccis.com/menu/ Bertucci's menu] is on one page, with sections for salads, soups, entrees, etc. Each section has a picture, but individual items do not. They contain only a name, description, and price.&lt;br /&gt;
&lt;br /&gt;
=== international restaurant chains  ===&lt;br /&gt;
Large restaurants/chains must supply nutritional information on their menus. All the entries in this section show calories for each menu item.&lt;br /&gt;
&lt;br /&gt;
==== Applebee's ====&lt;br /&gt;
They use one page, where the url changes as you scroll. Each part works the same. The [https://www.applebees.com/en/menu/sandwiches-and-more sandwiches section] to take one example has a list of items with name, picture, price, and calories, and, when you hover a mouse pointer over it, order buttons.&lt;br /&gt;
&lt;br /&gt;
==== Olive Garden ====&lt;br /&gt;
The Olive Garden's [https://www.olivegarden.com/menu-listing/classic-entrees dinner entrees] menu (N.B. you may have to supply a location before they'll show you a menu) has a name, photo, price, and calories for each item, along with an order button, a bookmark-like &amp;quot;mark this as a favorite&amp;quot; button, and a tag if the item is &amp;quot;new&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== third party services ===&lt;br /&gt;
&lt;br /&gt;
==== Open Table ====&lt;br /&gt;
Open Table is a third party reservation site that publishes information about each restaurant that uses their service. To take one example, here's [https://www.opentable.com/ts-mchughs?originId=2&amp;amp;corrid=ce749341-1486-4d6c-96b4-2c4311ac6fb5&amp;amp;avt=eyJ2IjoyLCJtIjowLCJwIjowLCJzIjowLCJuIjowfQ&amp;amp;p=2020-12-03T00%3A00%3A00 T.S. McHugh's Pub on Open Table]. The menu is duplicated from [https://tsmchughs.com/wp-content/uploads/2020/06/TSs-Placemat.pdf their web site].&lt;br /&gt;
&lt;br /&gt;
==== Grub Hub ====&lt;br /&gt;
Grub Hub is a delivery service. Like Open Table, it publishes menus for restaurants that they provide delivery for. For example, here's [https://www.grubhub.com/restaurant/sal-y-limon-10-mercer-street-seattle/1579529 Grub Hub's Sal Y Limon menu]. It has the same items as the [https://www.salylimonseattle.com/menu restaurant's own website], though the Grub Hub version includes prices.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
* [[menu-brainstorming]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-brainstorming&amp;diff=70307</id>
		<title>microformats2-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-brainstorming&amp;diff=70307"/>
		<updated>2020-12-14T23:41:26Z</updated>

		<summary type="html">&lt;p&gt;Btrem: /* adopt itemref */ Adds quote about itemref from whatwg html5 spec.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Brainstorming experimental / undeveloped / rejected ideas for [[microformats-2]].&lt;br /&gt;
&lt;br /&gt;
For the original brainstorming of microformats2 itself, see:&lt;br /&gt;
* [[microformats2-origins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== brainstorms to consider ==&lt;br /&gt;
=== document url ===&lt;br /&gt;
Since [[microformats2-parsing]] produces JSON with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot;, it may be useful to have a root context object which provides the URL of the document itself.&lt;br /&gt;
&lt;br /&gt;
=== adopt itemref ===&lt;br /&gt;
There many existing real-world use-cases where either:&lt;br /&gt;
* several microformats in a page want to share some common data without repeating it.&lt;br /&gt;
** e.g. a page about a product with multiple reviews of that product (very common, products sites, Amazon/CNET et al, review aggregators, Yelp et al)&lt;br /&gt;
** e.g. representing the author of multiple hAtom entries on a page. Currently this is possible with the &amp;lt;code&amp;gt;&amp;amp;lt;address class=&amp;quot;hcard&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; optimisation, which would be rendered obsolete by the proposed new generic parsing rules.&lt;br /&gt;
* a microformat in a page needs to incorporate information spread across different parts of a page, without assigning the entire page to that microformat&lt;br /&gt;
&lt;br /&gt;
The [[include-pattern]] provides the necessary functionality for existing microformats (1.0).&lt;br /&gt;
&lt;br /&gt;
For 2.0 it may be reasonable to simply re-use the nice &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; attribute from microdata, with identical/analogous functionality.&lt;br /&gt;
&lt;br /&gt;
That is, when present on the root element of a microformat, the &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; attribute provides a space separated list of ids of elements in the document which are then incorporated as children of the microformat, before its actual children in the document. This is a simple coarse summary of course, and the actual itemref inclusion algorithm should be followed.&lt;br /&gt;
&lt;br /&gt;
Questions and possible issues:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Does use of 'itemref' mean requiring [[HTML5]]? &lt;br /&gt;
** No, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; is not part of the HTML5 specification, it is currently only part of the [[microdata]] ''last call'' working draft. Thus we would be adding a &amp;quot;new&amp;quot; attribute to HTML above and beyond HTML5, though one that is already specified, and validated by current HTML validators.&lt;br /&gt;
* Is 'itemref' documented as a stable draft?&lt;br /&gt;
** 'itemref' is defined in the Last Call Working Draft of microdata. Being &amp;quot;last call&amp;quot; it has some amount of stability, but could still change before it goes to candidate recommendation (CR).&lt;br /&gt;
* Doesn't microformats try to avoid introducing new attributes? (e.g. from RDFa in the past).&lt;br /&gt;
** Yes, in general microformats try to avoid introducing new attributes. It may be ok for the set of use-cases that need &amp;quot;itemref&amp;quot;. That is, they *are* a minority of actual use-cases, and thus making them use a new attribute is probably ok.&lt;br /&gt;
* Wouldn't it be dangerous to adopt features of separate technologies that are unstable, may change, or may disappear?&lt;br /&gt;
** Indeed any time we consider adopting anything from technologies in working drafts we should consider their stability and dependability on a case-by-case basis. When we do decide to re-use such technologies, we should be sure to ''copy'' their definition/functionality and provide a non-normative reference to the source, rather than normatively depend on anything that could change or disappear. In the case of 'itemref', it's been stable for a while, and if we believe the [[schema.org]] implementation announcements, there are multiple real-world implementations that surface it in common ([[search]]) user interfaces.&lt;br /&gt;
* Wasn't RDFa a ''stable'' augmentation of HTML, and yet we resisted incorporated attributes from it?&lt;br /&gt;
** In practice, no, RDFa has continued to change evolve (which is good) in response to market feedback about its complexity. There was very little real world use (and thus exercising) of RDFa until Google provided it as a Rich Snippets alternative syntax in 2009. At this point, it may be reasonable to also consider attributes from RDFa (e.g. 'vocab' instead of 'profile'), however for this particular purpose (providing inclusion functionality), the 'itemref' attribute/feature makes the most sense.&lt;br /&gt;
&lt;br /&gt;
Note that itemref is only sort of part of microdata. According to the [https://html.spec.whatwg.org/multipage/microdata.html#attr-itemref whatwg html spec]:&lt;br /&gt;
&amp;lt;blockquote cite=&amp;quot;https://html.spec.whatwg.org/multipage/microdata.html#attr-itemref&amp;quot;&amp;gt;&lt;br /&gt;
The itemref attribute is not part of the microdata data model. It is merely a syntactic construct to aid authors in adding annotations to pages where the data to be annotated does not follow a convenient tree structure. For example, it allows authors to mark up data in a table so that each column defines a separate item, while keeping the properties in the cells.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== hReview item backward compatibility ===&lt;br /&gt;
It maybe necessary (pending research/evidence) to add backward compatible parsing for the class name &amp;quot;item&amp;quot; inside the backward compatible parsing for the root class name &amp;quot;hreview&amp;quot;. If so, here are some notes on how to add that to the [[microformats2]] spec on v2 vocabularies.&lt;br /&gt;
&lt;br /&gt;
==== h-item ====&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
For backward compatibility, microformats 2 parsers {{should}}, when parsing an &amp;quot;hreview&amp;quot; for backwards compatibility, detect the following root class name and property names. A microformats 2 parser may use existing microformats [[parsers]] to extract these properties. If an &amp;quot;h-item&amp;quot; is found, don't look for an &amp;quot;item&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
compat root class name: &amp;lt;code id=&amp;quot;item&amp;quot;&amp;gt;item&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
properties: (parsed as '''p-''' plain text unless otherwise specified)&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Note: we should analyze [[hreview-examples-in-wild]] to see if there are any that actually depend on parsing for &amp;quot;item&amp;quot;, or if simply looking for &amp;quot;fn&amp;quot;, &amp;quot;photo&amp;quot;, and &amp;quot;url&amp;quot; directly inside a root class name of &amp;quot;hreview&amp;quot; is sufficient. If so, we should '''DROP''' this backward-compat parsing for the class name &amp;quot;item&amp;quot; as it may otherwise produce too many false positives (&amp;quot;item&amp;quot; is a fairly common term).&lt;br /&gt;
&lt;br /&gt;
==== h-review ====&lt;br /&gt;
...&lt;br /&gt;
* &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; - including compat root vcard|vevent in the absence of h-card|h-event&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Note: we should analyze [[hreview-examples-in-wild]] to see if there are any that actually depend on parsing for &amp;quot;item&amp;quot;, or if simply looking for &amp;quot;fn&amp;quot;, &amp;quot;photo&amp;quot;, and &amp;quot;url&amp;quot; directly inside a root class name of &amp;quot;hreview&amp;quot; is sufficient. If so, we should '''DROP''' the backward-compat parsing for the class name &amp;quot;item&amp;quot; as it may otherwise produce too many false positives (&amp;quot;item&amp;quot; is a fairly common term).&lt;br /&gt;
&lt;br /&gt;
=== register a mime type? ===&lt;br /&gt;
See [[microformats2-mime-type]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== accepted ideas ==&lt;br /&gt;
=== more on allow root class name only ===&lt;br /&gt;
This has been stable for a while, see:&lt;br /&gt;
* [[microformats-2-implied-properties]]&lt;br /&gt;
&lt;br /&gt;
== rejected ideas ==&lt;br /&gt;
=== n prefix for multiple numbers ===&lt;br /&gt;
Idea:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;quot;n-*&amp;quot; for (one or more) numbers''', e.g. &amp;quot;n-rating&amp;quot;, &amp;quot;n-geo&amp;quot;, leaving the semantics of more than one number up to specific format. e.g. for an &amp;quot;n-rating&amp;quot; inside an &amp;quot;h-review&amp;quot;, the first number would presumably be the rating value, when only two numbers the second would be the &amp;quot;best&amp;quot; value (e.g. rated &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;n-rating&amp;quot;&amp;amp;gt;3 out of 4&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;), when three numbers the second would be the &amp;quot;worst&amp;quot; and the third would be the &amp;quot;best&amp;quot; (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;n-rating&amp;quot;&amp;amp;gt;7.5 out of 1 to 10&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;).  similarly &amp;quot;n-geo&amp;quot; would specify the first number to be the latitude and the second to be the longitude.&lt;br /&gt;
&lt;br /&gt;
Rejected because while this *might* work for some properties in *English* it will NOT localize/internationalize well (orders of numbers in phrases change in different languages), and it will also limit the human expressivity of the plain text.  Thanks to Ben Ward for this feedback at the 2011-06-02 microformats dinner. [[User:Tantek|Tantek]] 14:25, 9 June 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== incorporate rel ===&lt;br /&gt;
Update: requiring rel with class tends to confuse web authors (lots of anecdotal experience here), thus [[microformats2]] itself does not require any use of rel by publishers, and keeps it only as part of backcompat handling of a small handful of classic microformats (e.g. [[rel-tag]] in [[hAtom]], [[hCard]]).&lt;br /&gt;
&lt;br /&gt;
The rest of this proposal (of formally adding rel-* handling inside of microformats root class names) was rejected long ago.&lt;br /&gt;
&lt;br /&gt;
==== profile h-card rel-me ====&lt;br /&gt;
Many sites have profile pages (personal home pages, and social networks), marked up with hCard, and permitting one or more rel-me values to other profiles, e.g. if this content were on &amp;lt;nowiki&amp;gt;http://tantek.com/&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
Tantek Çelik ([https://twitter.com/t @t], [http://github.com/tantek github.com/tantek])&lt;br /&gt;
&lt;br /&gt;
with source:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;Tantek Çelik&amp;lt;/span&amp;gt;&lt;br /&gt;
 (&amp;lt;a class=&amp;quot;u-url&amp;quot; rel=&amp;quot;me&amp;quot;&lt;br /&gt;
     href=&amp;quot;https://twitter.com/t&amp;quot;&lt;br /&gt;
     &amp;gt;@t&amp;lt;/a&amp;gt;, &lt;br /&gt;
  &amp;lt;a class=&amp;quot;u-url&amp;quot; rel=&amp;quot;me&amp;quot;&lt;br /&gt;
     href=&amp;quot;http://github.com/tantek&amp;quot;&lt;br /&gt;
     &amp;gt;github.com/tantek&amp;lt;/a&amp;gt;)&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON per microformats2 properties:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&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;name&amp;quot;: [&amp;quot;Tantek Çelik&amp;quot;],&lt;br /&gt;
      &amp;quot;url&amp;quot;: [&amp;quot;https://twitter.com/t&amp;quot;, &lt;br /&gt;
              &amp;quot;http://github.com/tantek&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We could incorporate rel property parsing either as just another property (like a 'u-' property) scoped to the microformat:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&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;name&amp;quot;: [&amp;quot;Tantek Çelik&amp;quot;],&lt;br /&gt;
      &amp;quot;url&amp;quot;: [&amp;quot;https://twitter.com/t&amp;quot;, &lt;br /&gt;
              &amp;quot;http://github.com/tantek&amp;quot;],&lt;br /&gt;
      &amp;quot;rel-me&amp;quot;: [&amp;quot;https://twitter.com/t&amp;quot;, &lt;br /&gt;
              &amp;quot;http://github.com/tantek&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;
Or as always within global scope (closer to HTML5's currently defined scoping for 'rel' attributed links in a document):&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [{&lt;br /&gt;
    &amp;quot;url&amp;quot;: &amp;quot;http://tantek.com/&amp;quot;,&lt;br /&gt;
    &amp;quot;rel-stylesheet&amp;quot;: [&amp;quot;...&amp;quot;, &amp;quot;...&amp;quot;],&lt;br /&gt;
    &amp;quot;rel-me&amp;quot;: [&amp;quot;https://twitter.com/t&amp;quot;, &lt;br /&gt;
               &amp;quot;http://github.com/tantek&amp;quot;]&lt;br /&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;name&amp;quot;: [&amp;quot;Tantek Çelik&amp;quot;],&lt;br /&gt;
      &amp;quot;url&amp;quot;: [&amp;quot;https://twitter.com/t&amp;quot;, &lt;br /&gt;
              &amp;quot;http://github.com/tantek&amp;quot;],&lt;br /&gt;
    }&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;quot;url&amp;quot; in that root level object is the URL of the document itself, which is necessary for:&lt;br /&gt;
* 'rel' semantics: which URL from to which other URL the rels apply to.&lt;br /&gt;
* vCard .vcf export &amp;quot;SOURCE:&amp;quot; property (URL that the vCards were derived from).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2-brainstorming]]&lt;br /&gt;
* [[microformats2-experimental-properties]]&lt;br /&gt;
* [[microformats2-prefixes]]&lt;br /&gt;
* [[microformats2-implied-properties]]&lt;br /&gt;
* [[microformats2-faq]]&lt;br /&gt;
* [[html-stripping-examples]]&lt;br /&gt;
* [[microformats2-origins]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microdata&amp;diff=70305</id>
		<title>microdata</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microdata&amp;diff=70305"/>
		<updated>2020-12-14T21:37:01Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Corrects status of microdata at W3C (editors for microdata were found, so the standard survived. Rumours of its death were greatly exagerated.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:microdata}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dfn style=&amp;quot;font-style:italic;font-weight:bold&amp;quot;&amp;gt;microdata&amp;lt;/dfn&amp;gt; is part of [[WHATWG]]'s [[HTML]] living specification that provides another way to embed [[microformats]] and [[poshformats]] vocabularies, and has been superseded by [[microformats2]].&lt;br /&gt;
&lt;br /&gt;
microdata was due to be dropped by the W3C (and was therefore no longer going to be part of W3C [[HTML5]]) due to a lack of interest by anyone to edit the spec and keep it up to date.[http://lists.w3.org/Archives/Public/public-html-admin/2013Oct/0018.html] However, the W3C has a current [https://www.w3.org/TR/microdata/ microdata working draft].&lt;br /&gt;
&lt;br /&gt;
== summary ==&lt;br /&gt;
microdata consists of a set of attribute extensions to [[HTML]]:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;itemprop&amp;lt;/code&amp;gt; attribute is a more specific version of &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;, for field names&lt;br /&gt;
* &amp;lt;del&amp;gt;&amp;lt;code&amp;gt;subject&amp;lt;/code&amp;gt; attribute allows semantically linking within the page. Conceptually similar to the [[include-pattern]].&amp;lt;/del&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; attribute allows including properties elsewhere on the page that are not descendants of &amp;lt;code&amp;gt;itemscope&amp;lt;/code&amp;gt;. Takes space-separated ids (for example &amp;lt;code&amp;gt;itemref=&amp;quot;address phone&amp;quot;&amp;lt;/code&amp;gt; would include the elements with &amp;lt;code&amp;gt;id=&amp;quot;address&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;id=&amp;quot;phone&amp;quot;&amp;lt;/code&amp;gt;). Conceptually similar to the [[include-pattern]].&lt;br /&gt;
* &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; attribute on the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element can be used to include invisible data that is not part of the content. As current browsers move &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;&amp;amp;lt;head&amp;amp;gt;&amp;lt;/code&amp;gt;, make sure to include via &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt;. Conceptually similar to the 'value-title' feature of the [[value-class-pattern]].&lt;br /&gt;
* &amp;lt;code&amp;gt;itemscope&amp;lt;/code&amp;gt; attribute identifies blocks to be marked as structured data. Conceptually similar to the [[mfo]] brainstorming.&lt;br /&gt;
* &amp;lt;code&amp;gt;itemtype&amp;lt;/code&amp;gt; attribute to specify the type for an item (for example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;itemtype=&amp;quot;http://microformats.org/profile/hcard&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
For common semantics on the web (e.g. [[hcard|people+organizations]], [[hcalendar|events]], [[hreview|reviews]], [[hatom|syndicated content]]), [[microformats]] are still simpler and easier than [[microdata]], and are already well implemented across numerous tools and services.&lt;br /&gt;
&lt;br /&gt;
For uncommon, rare, experimental, or one-off semantics:&lt;br /&gt;
* [[microdata]] offers a simpler and easier to understand solution than alternatives that use [[namespaces]] like XML/RDF/RDFa.  Developers may consider [[microdata]] as another way of expressing semantics that they may otherwise use [[poshformats]] for.&lt;br /&gt;
* '''[[microformats2#VENDOR_EXTENSIONS|microformats2 offers extension methods]]''' for adding both vendor extensions (e.g. h-vnd-* p-vnd-* etc.) and experimental extensions (e.g. h-x-* p-x-* etc.) and as such should be considered for another simpler way of expressing extended, one-off, custom, or site-specific semantics.&lt;br /&gt;
Either way, such uncommon, rare, experimental, or one-off semantics in the wild should be documented so they may inform possible future microformats vocabularies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== history ==&lt;br /&gt;
microdata didn't happen overnight.  Much of the design and simplicity of microdata is based on years of work on microformats [[principles]] deliberately designed to help guide and create simpler, more usable and accessible solutions. It happened so quickly because Ian Hickson designed microdata based upon years of work by both the microformats community, and the concept of using reverse-domain-names as unique qualifiers (popularized perhaps by Java programming language naming conventions).&lt;br /&gt;
&lt;br /&gt;
most recently, lessons learned from the microdata parsing/data model were incorporated into [[microformats2]] which now serves as a functional replacement thanks to the [[microformats2-parsing]] specification.&lt;br /&gt;
&lt;br /&gt;
== parsers and tools ==&lt;br /&gt;
[http://schema.rdfs.org/tools.html schema.rdfs.org has a list of tools].&lt;br /&gt;
&lt;br /&gt;
* Python: [https://github.com/edsu/rdflib-microdata rdflib-microdata]&lt;br /&gt;
* Ruby: [https://github.com/gkellogg/rdf-microdata RDF::Microdata]&lt;br /&gt;
* Ruby: [http://lawrencewoodman.github.com/mida/ Mida]&lt;br /&gt;
* PHP: [https://github.com/linclark/MicrodataPHP MicrodataPHP]&lt;br /&gt;
* JavaScript (jQuery): [https://gitorious.org/microdatajs/ MicrodataJS]&lt;br /&gt;
* Java: [https://any23.apache.org/ Any23]&lt;br /&gt;
&lt;br /&gt;
== microdata vocabularies ==&lt;br /&gt;
Separate from the [[microdata]] specification, there are a number of microdata vocabularies, based on microformats and previous formats like vCard and iCalendar.&lt;br /&gt;
&lt;br /&gt;
=== microdata vCard vocabulary ===&lt;br /&gt;
Formerly documented as a separate specification at &amp;lt;nowiki&amp;gt;http://dev.w3.org/html5/mdvcard/&amp;lt;/nowiki&amp;gt;, the microdata vCard vocabulary is currently available as [http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#vcard part of WHATWG additions to HTML].&lt;br /&gt;
&lt;br /&gt;
* Recommendation: use [[h-card]] directly instead.&lt;br /&gt;
&lt;br /&gt;
If you're specifically looking to produce Google Rich Snippets, use [[hCard]] in addition to [[h-card]].&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Avoid the &amp;quot;microdata vCard vocabulary&amp;quot; as in many ways it is an out-of-date fork/snapshot of hCard, even though portions of it appear to based directly on the vCard RFC. as well.&lt;br /&gt;
* Avoid Google’s Rich Snippets vocabularies ([http://www.data-vocabulary.org/Person/ Person] and [http://www.data-vocabulary.org/Organization/ Organization]), which are also forks of  hCard/vCard, and are only implemented by Google currently.&lt;br /&gt;
&lt;br /&gt;
=== microdata vEvent vocabulary ===&lt;br /&gt;
Formerly documented as a separate specification at &amp;lt;nowiki&amp;gt;http://dev.w3.org/html5/mdvevent/&amp;lt;/nowiki&amp;gt;, the microdata vEvent vocabulary is currently available as [http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#vevent part of WHATWG additions to HTML].&lt;br /&gt;
&lt;br /&gt;
* Recommendation: use [[h-event]] directly instead.&lt;br /&gt;
&lt;br /&gt;
If you're specifically looking to produce Google Rich Snippets, use [[hCalendar]] in addition to [[h-event]].&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* Avoid the &amp;quot;microdata vEvent vocabulary&amp;quot; as in many ways it is an out-of-date fork/snapshot of hCalendar's vevent root class name and applicable properties, even though portions of it appear to based directly on the iCalendar RFC.&lt;br /&gt;
* Avoid Google’s Rich Snippets vocabulary ([http://www.data-vocabulary.org/Event/ Event]), which is also a fork of hCalendar/iCalendar, and are only implemented by Google currently.&lt;br /&gt;
&lt;br /&gt;
=== microdata Licensing Works vocabulary ===&lt;br /&gt;
Formerly documented as a separate specification at &amp;lt;nowiki&amp;gt;http://dev.w3.org/html5/mdwork/&amp;lt;/nowiki&amp;gt;, the microdata Licensing Works vocabulary is currently available as [http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#licensing-works part of WHATWG additions to HTML5].&lt;br /&gt;
&lt;br /&gt;
The [[licensing]] microformat work provides a potential microformat alternative to the microdata Licensing Works vocabulary.&lt;br /&gt;
&lt;br /&gt;
Please see: [[licensing-brainstorming]] and provide feedback.&lt;br /&gt;
&lt;br /&gt;
== microformats in microdata ==&lt;br /&gt;
For those that are ok with going with an [[HTML5]] only solution, it may be interesting to consider and document a consistent way to use microformats and microformats vocabulary in microdata.&lt;br /&gt;
&lt;br /&gt;
A possible simple implementation could look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Corey Mwamba&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;section itemtype=&amp;quot;http://microformats.org/profile/h-card&amp;quot; itemscope&amp;gt;&lt;br /&gt;
&amp;lt;h1 itemprop=&amp;quot;name&amp;quot;&amp;gt;Corey Mwamba&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p itemprop=&amp;quot;street-address&amp;quot;&amp;gt;56 Nowhere Road&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p itemprop=&amp;quot;locality&amp;quot;&amp;gt;Nowhere&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p itemprop=&amp;quot;postal-code&amp;quot;&amp;gt;NO1 6QT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://www.coreymwamba.co.uk/&amp;quot; itemprop=&amp;quot;url&amp;quot;&amp;gt;My web site&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And here's an simple [[h-event]] example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Web 2.0 Conference&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;div itemtype=&amp;quot;http://microformats.org/profile/h-event&amp;quot; itemscope&amp;gt;&lt;br /&gt;
 &amp;lt;a itemprop=&amp;quot;url&amp;quot; href=&amp;quot;http://conferences.oreillynet.com/pub/w/40/program.html&amp;quot;&amp;gt;&lt;br /&gt;
  http://conferences.oreillynet.com/pub/w/40/program.html&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;span itemprop=&amp;quot;summary&amp;quot;&amp;gt;Web 2.0 Conference&amp;lt;/span&amp;gt;: &lt;br /&gt;
 &amp;lt;time itemprop=&amp;quot;start&amp;quot; datetime=&amp;quot;2005-10-05&amp;quot;&amp;gt;October 5&amp;lt;/time&amp;gt;-&lt;br /&gt;
 &amp;lt;time itemprop=&amp;quot;end&amp;quot; datetime=&amp;quot;2005-10-07&amp;quot;&amp;gt;7&amp;lt;/time&amp;gt;,&lt;br /&gt;
 at the &amp;lt;span itemprop=&amp;quot;location&amp;quot;&amp;gt;Argent Hotel, San Francisco, CA&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The advantage is that no major re-wiring in thinking is required to adjust real-world usage - but would parsers be able to deal with the change? And in fact, would this require a recasting of microformats themselves? --[[User:Epicurious|Epicurious]] 19:16, 16 August 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== alternatives ==&lt;br /&gt;
Since the introduction of [[XMDP]], web authors have been able to define their specific uses of rel attribute values and class names.&lt;br /&gt;
&lt;br /&gt;
(needs expansion with examples)&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[HTML5]]&lt;br /&gt;
* [[poshformats]]&lt;br /&gt;
* [[principles]]&lt;br /&gt;
* [[XMDP]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70303</id>
		<title>menu-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70303"/>
		<updated>2020-12-14T19:00:08Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Proposes using p-nutrition for recipe items that have calories added to it, with caveat that it is not part of h-product.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
Per [[process]], for documenting ideas towards a restaurant [[menu]] microformat, based on experience and research into:&lt;br /&gt;
* [[menu-examples]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
And of course using existing microformats as building blocks when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Brainstorming ==&lt;br /&gt;
There may be some similarities with [[h-resume]], which also has an [[h-card]] for the organization (e.g. restaurant) whom the resume belongs to.&lt;br /&gt;
&lt;br /&gt;
The obvious path forward is to use [[h-product]] for menu items. [[h-product]] offers pretty much everything a menu item microformat needs: p-name for the item name, (e.g. mushroom soup), u-photo, e-description, and p-price. There are some additional things in menus, notably calories, that might  require a new property. If a menu has a page for individual items, u-url is available. [[h-review]] might be useful for review sites like Yelp or Google (though that might be a disincentive for restaurants, which tend to harbor strong antipathy to review sites in general and Yelp in particular. I'm not sure if p-category can be reused, but some way to tag items -- as vegetarian, gluten-free, etc. -- would be useful. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:12, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes, p-category makes sense as a general tagging model. Gathering examples of categories used is useful to see what may be worth including as examples. [[User:Kevin Marks|Kevin Marks]] ([[User talk:Kevin Marks|talk]]) 15:04, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
What's missing is a container for the menu items. Such a menu container microformat could include meta information such as availability (e.g., a dinner menu is available 5pm -10pm). [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:14, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
A menu container needs a way to distinguish sections that is flexible to account for language differences and restaurant conventions. This could present challenges to third party consumers. However, I think a menu microformat should not get bogged down in such details. It's conceivable that a restaurant and third party could agree on a set of additional classnames for interoperability. So if menu aggregator Foo Delivery Service could look for a class name specific to its service in addition to any microformats, e.g., &amp;lt;code&amp;gt;section class=&amp;quot;starter foo-deliver&amp;quot;&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;starter&amp;lt;/code&amp;gt; classname would be a microformat spec, used by menus everywhere, while &amp;lt;code&amp;gt;foo-deliver&amp;lt;/code&amp;gt; would be specific to Foo Service, a way for a restaurant to specify that it offers items in this section for delivery by Foo. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 15:20, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
A simple solution might be to have a container for a menu section /instead of/ a container for a menu. That would allow a website to have a menu spread over several pages, each one with a single container element. If a website wants to put it on one page, they could place the container elements on one page, one after the other. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 16:31, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Ideas for property names:&lt;br /&gt;
* p-name for the name of menu, e.g. dinner, breakfast, etc.; or maybe desserts, wine list, appetizers, etc.&lt;br /&gt;
* p-seller - the retailer, i.e., restaurant, cafe, pub, etc, that is selling the menu items. This can be an embedded h-card. The name of this property should be generic enough to include a wide rage of food retailers, perhaps with the ability to include other types of businesses. Alternative property names for p-seller:&lt;br /&gt;
** p-brand - this has the advantage of reuse from h-product, but that might be a disadvantage, too: menu items will likely be nested h-products, so using p-brand on parent and nested type might cause confusion. There's an additional problem: p-brand as restaurant name might be confusing for authors who might reasonably assume that a property called p-brand refers to the item brand, not the restaurant brand. In other words, a restaurant called &amp;quot;Bavarian Pub&amp;quot; that sells Franziskaner beer might assign &amp;quot;Franziskaner&amp;quot; instead of &amp;quot;Bavarian Pub&amp;quot; to a p-brand property. Thus, p-brand is a strong &amp;quot;pass&amp;quot; for me.&lt;br /&gt;
** p-restaurant - simple and straightforward, but might give wrong impression of its intended use. I imagine a street vendor might not think of her/himself as a restaurant.&lt;br /&gt;
** p-organization - very adaptable, but not very intuitive.&lt;br /&gt;
** p-retailer - again, adaptable, but not as obvious as seller, and perhaps again might give wrong impression to street vendors or food kiosks.&lt;br /&gt;
* p-product -- the thing being sold, a beverage or dish, e.g., main dish, appetizer, dessert, beer, wine, etc. This can be an embedded h-product. The property name matches the embedded name, following the [[h-card]] convention which has a p-adr property that can be an embedded [[h-adr]]; and p-geo with optionally embedded h-geo. Also, p-product is both intuitive and adaptable. Obviously, a menu normally contains many items, so this would be a many-to-one relationship.&lt;br /&gt;
&lt;br /&gt;
I realize that h-menu is not ready for a draft, hence why I'm putting these ideas in menu-brainstorming. It's just me bouncing ideas off the wall. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:45, 8 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
One of the problems with coming up with a structure for h-menu is how to deal with menu sections. It seems like one simple solution is to allow [[h-menu]] to be nested. The outer container might have a p-name &amp;quot;Dinner&amp;quot;. Then nested sections could be themselves h-menu instances, each with their own p-name set to Appetizers, Salads, etc. That would allow for simple, flat menus with a list of h-product instances, or complex menus with sections, sub-sections, etc., as needed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 22:06, 10 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
For prix fixe menus, there's no way to mark up choices with microformats. It probably makes sense to just markup the entire menu as one h-product, with all choices for each course in one large e-description. That is an honest representation of the menu and probably is good enough. Something more specific would have to be done in h-product, and shouldn't be implemented unless it's really needed. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 00:38, 11 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I just came across the p-nutrition property from [[h-recipe]], which could be reused for menu items that include calories or other (often required) nutritional information. There is, however, a problem: as proposed so far, h-menu would be a collection of p-products that could embed [[h-product]]. But p-nutrition is not part of [[h-product]]. Other h-menu properties would pertain to the menu as a whole, not to individual menu items.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
... feel free to add more unstructured thoughts there.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=include-pattern-brainstorming&amp;diff=70302</id>
		<title>include-pattern-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=include-pattern-brainstorming&amp;diff=70302"/>
		<updated>2020-12-14T18:41:48Z</updated>

		<summary type="html">&lt;p&gt;Btrem: Adds proposal for itemref attribute.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;include pattern brainstorming&amp;lt;/h1&amp;gt;&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
brainstorming to improve or extend the [[include-pattern]].&lt;br /&gt;
&lt;br /&gt;
== alternatives to using a or object ==&lt;br /&gt;
Here are possible variations on the [[include-pattern|include pattern]], attempting to resolve issues of accessibility (with empty anchors) and server load (with &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Non-Verbose Class-Based Solution ===&lt;br /&gt;
(Originally suggested by Toby Inkster, based on an earlier proposal by Andy Mabbett)&lt;br /&gt;
&lt;br /&gt;
An alternative way of implementing the include pattern in a less verbose, and hopefully more accessible manner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;We have three branches in &amp;lt;span class=&amp;quot;locality&amp;quot; id=&amp;quot;ldn&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt;,&lt;br /&gt;
 including our head office in &amp;lt;span class=&amp;quot;locality&amp;quot; id=&amp;quot;ken&amp;quot;&amp;gt;Kensington&amp;lt;/span&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Oxford Street&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ken #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;1 Pall Mall&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The order of the space-delimited class attributes should be considered significant -- that is, in &amp;lt;foo class=&amp;quot;bar #baz&amp;quot;&amp;gt; the content referred to by #baz is logically included as the last child of the &amp;lt;foo&amp;gt; element, but in &amp;lt;foo class=&amp;quot;#baz bar&amp;quot;&amp;gt;, it is logically included as the first child. (See below for an example where the included element should occur in the middle of the element content.)&lt;br /&gt;
&lt;br /&gt;
Yes, the hash mark is valid in the class attribute, though rarely used because it won't work with CSS 1 selectors. &lt;br /&gt;
&lt;br /&gt;
If people can find real-life uses of the hash character in existing sites that would conflict with this proposed usage pattern, then perhaps another character could be used. I rather like '@foo', or maybe even a combination such as '@#foo'.&lt;br /&gt;
&lt;br /&gt;
==== Including data in the middle of an element ====&lt;br /&gt;
&lt;br /&gt;
Above, the examples show how an element can be logically included as the first or last child of another element. For including data into the middle of an element, we need to be a tiny bit more verbose and insert a dummy element (in this case a &amp;amp;lt;span&amp;gt; element) where the included content should go:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Our head office is in &amp;lt;span id=&amp;quot;ldn&amp;quot; class=&amp;quot;locality&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt; at:&lt;br /&gt;
 &amp;lt;p class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;#ldn&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;SW7 1AA&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== problems with ordered ids in class ====&lt;br /&gt;
Two problems:&lt;br /&gt;
&lt;br /&gt;
1. class is an unordered set of values per HTML4.  introducing ordering is a non-starter both from a violation of HTML4 spec perspective and likely requiring of rewriting HTML4 parsers to maintain an ordering where they currently don't.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:2em;border-left:thick solid #ccc;padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
A reading of HTML 4.01, section 7.5.2 doesn't seem to claim that the class list is unordered. &lt;br /&gt;
&lt;br /&gt;
It does claim that it's a &amp;quot;set&amp;quot; of class names, and in mathematical parlance sets are unordered by definition, and must not contain duplicates, but it's unlikely that the framers of the HTML 4.01 spec intended the world &amp;quot;set&amp;quot; to be interpreted in that way -- far more likely they were referring to the layman's definition of the word.&lt;br /&gt;
&lt;br /&gt;
As far as parsers are concerned, DOM Level 2 HTML provides as &amp;quot;className&amp;quot; property as part of the HTMLElement interface, which is either directly used or is inherited by all DOM element nodes. The className is a string exactly reflecting the contents of the HTML class attribute, so should reflect their original order.&lt;br /&gt;
&lt;br /&gt;
And any non-DOM, naive SGML or XML parser that encounters a class attribute will just parse it as a plain old string anyway, so the order should be retained. &lt;br /&gt;
&lt;br /&gt;
[[User:TobyInk|TobyInk]] 08:34, 5 Feb 2008 (PST)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. inclusion of arbitrary data (#baz) in the class attribute is a [[anti-patterns#data_in_class_attributes|documented anti-pattern]]. [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:2em;border-left:thick solid #ccc;padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
This anti-pattern is only mentioned as a subheading to the more general anti-pattern of invisble metadata. My suggested pattern for inclusions does not hide metadata -- it merely references metadata elsewhere on the page. It is no more guilty of hiding metadata than any other suggested include pattern, so I fail to see how this is relevant.&lt;br /&gt;
&lt;br /&gt;
[[User:TobyInk|TobyInk]] 08:36, 5 Feb 2008 (PST)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Simple class name===&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo id=&amp;quot;birmingham&amp;quot; class=&amp;quot;locality&amp;quot;&amp;gt;Birmingham&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr includes-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some other possible variants are:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr part-microformat birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr use-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr uses-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr include-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr locality-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo id=&amp;quot;birmingham&amp;quot;&amp;gt;Birmingham&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[...]&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;foo class=&amp;quot;adr locality-birmingham&amp;quot;&amp;gt;[...]&amp;lt;/foo&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(originally suggested by [[User:AndyMabbett|Andy Mabbett]] in &amp;lt;http://microformats.org/discuss/mail/microformats-discuss/2008-January/011422.html et seq.)&lt;br /&gt;
&lt;br /&gt;
==== problems with arbitrary id values in class attributes ====&lt;br /&gt;
In short: similar to [[#problems_with_ordered_ids_in_class|problems with ordered ids in class]], inclusion of arbitrary data (birmingham) in the class attribute is a [[anti-patterns#data_in_class_attributes|documented anti-pattern]].&lt;br /&gt;
&lt;br /&gt;
Longer: The value of an &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attribute on an element is essentially an arbitrary string used to uniquely identify that element in the context of the document. Thus the re-use of such an arbitrary string (e.g. &amp;quot;birmingham&amp;quot;) in a class attribute is an instance of including arbitrary data in the class attribute, which is a [[anti-patterns#data_in_class_attributes|documented anti-pattern]].&lt;br /&gt;
&lt;br /&gt;
[[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
* In this proposal, the class name is not &amp;quot;arbitrary data&amp;quot;, since it uses a semantically valid IDs; and is semantically logical. In the cited page the use of data in class names is deprecated as &amp;quot;another form of invisible metadata&amp;quot;. This proposal involves no more &amp;quot;invisible metadata&amp;quot; than do the existing include patterns. [[User:AndyMabbett|Andy Mabbett]] 00:52, 4 Feb 2008 (PST)&lt;br /&gt;
** existing include patterns use &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; (not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;) attributes which are both of type URI to point to a fragment identifier.  arbitrary links are proper semantic use of URI attributes per HTML4. however in a class attribute, arbitrary links are no more than arbitrary data, and are thus an example of [[anti-patterns#data_in_class_attributes|the documented anti-pattern]]. (Unsigned comment by [[User:Tantek|Tantek]])&lt;br /&gt;
*** The fragment identifier is not data. Well, OK, it is data in the sense that virtually everything is data, but, in the example above, the link itself is not address data -- it's a pointer to data... information about where the real data might be found... it's ''metadata''. [[User:TobyInk|TobyInk]] 07:42, 6 Feb 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
===Use &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; to Reference IDs===&lt;br /&gt;
&lt;br /&gt;
Don't &amp;lt;code&amp;gt;&amp;quot;include&amp;quot;&amp;lt;/code&amp;gt; your data, you could perhaps just reference them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;foo id=&amp;quot;me&amp;quot; class=&amp;quot;fn&amp;quot;&amp;gt;Fred&amp;lt;/foo&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;bar class=&amp;quot;me@url&amp;quot;&amp;gt;http://wherever.com/&amp;lt;/bar&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
parsers instead of replacing data can then just append their data?&lt;br /&gt;
&lt;br /&gt;
Suggested in: [http://microformats.org/discuss/mail/microformats-discuss/2008-February/011470.html microformats-discuss/2008-February/011470.html]&lt;br /&gt;
&lt;br /&gt;
==== problems with using at ref to id ====&lt;br /&gt;
* Too verbose http://microformats.org/discuss/mail/microformats-discuss/2008-February/011473.html&lt;br /&gt;
* Inclusion of arbitrary data &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt;, &amp;quot;[[anti-patterns#data_in_class_attributes|documented anti-pattern]]&amp;quot; as pointed out on microformats discuss http://microformats.org/discuss/mail/microformats-discuss/2008-February/011479.html&lt;br /&gt;
&lt;br /&gt;
===Use a Class Create method===&lt;br /&gt;
&lt;br /&gt;
Create a class such as &amp;lt;code&amp;gt;&amp;quot;data&amp;quot;&amp;lt;/code&amp;gt; in the following example, or any unique class name much the same as we do already with &amp;lt;code&amp;gt;id=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Examples could be &amp;lt;code&amp;gt;&amp;quot;reviewer&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;me&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;    &lt;br /&gt;
        &amp;lt;span class=&amp;quot;data&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Foo&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:foo@bar.com&amp;quot;&amp;gt;email foo@bar.com&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use an empty span to reference your unique class name with class &amp;lt;code&amp;gt;&amp;quot;include *&amp;quot;&amp;lt;/code&amp;gt; anywhere you would&lt;br /&gt;
like the created class to be included.&lt;br /&gt;
&lt;br /&gt;
example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;include data&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:foo@baz.com&amp;quot;&amp;gt;email foo@baz.com&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result &amp;quot;could&amp;quot; turn out much like this:&lt;br /&gt;
&lt;br /&gt;
example,&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Foo&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;a class=&amp;quot;email&amp;quot; href=&amp;quot;mailto:foo@baz.com&amp;quot;&amp;gt;email foo@baz.com&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Problems====&lt;br /&gt;
&lt;br /&gt;
* If class=&amp;quot;include data&amp;quot; is taken to mean &amp;quot;include all elements with a class name of 'data'&amp;quot;, then the element will include itself and potentially introduce problems with recursion. [[User:TobyInk|TobyInk]] 02:23, 11 Feb 2008 (PST)&lt;br /&gt;
** Not Necessarily so, It would depend on Parsing rules. [[User:WebOrganics|Martin McEvoy]] 17:19, 11 Feb 2008 (GMT)&lt;br /&gt;
&lt;br /&gt;
=== Use property inheritance from groups, implicit member/group relations (by containment) and explicit property/object relations (by reference) ===&lt;br /&gt;
&lt;br /&gt;
This proposal is only presented for the record. The main reason it has been discarded is because &amp;quot;the use of [[rev]], and any new microformats values for rev, has been deprecated for several reasons.  See [[rev#Should_rev_even_be_used|Should rev even be used]].&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It is really two proposals in one:&lt;br /&gt;
* property inheritance from group elements: if an object is part of a group, it inherits the properties associated with this group.&lt;br /&gt;
* explicit property referencing. This technique provides an alternative to the current technique of associating by containment a property with an object, or sub-property with parent property. With the suggested new technique, the property or sub-property does not have to be contained (resp.) by the object or parent property: the association is made explicitly via a rev link.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Our company has office locations in &amp;lt;a href=&amp;quot;#adrlist1&amp;quot; rev=&amp;quot;locality&amp;quot;&amp;gt;San Francisco&amp;lt;/a&amp;gt;: &lt;br /&gt;
&amp;lt;ul id=&amp;quot;adrlist1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li id=&amp;quot;adr1&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;665 3rd Street&amp;lt;/span&amp;gt;, and&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li id=&amp;quot;adr2&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Folsom&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example would be interpreted as:&lt;br /&gt;
* adr1 and adr2 belong to the group adrlist1 by containment.&lt;br /&gt;
* &amp;quot;San Francisco&amp;quot; is the locality property of the adrlist1 group.&lt;br /&gt;
* hence, adr1 and adr2 inherit the locality property from adrlist1 since they are not overriding it.&lt;br /&gt;
&lt;br /&gt;
=== Use property inheritance from groups, explicit group/member referencing and implicit property relations (by containment) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Our company has &amp;lt;span id=&amp;quot;#adrlist1&amp;gt;office locations in &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;San Francisco&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;: &lt;br /&gt;
&amp;lt;a id=&amp;quot;adr1&amp;quot; href=&amp;quot;#adrlist1&amp;quot; rel=&amp;quot;group&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;665 3rd Street&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;,&lt;br /&gt;
 and &amp;lt;a id=&amp;quot;adr2&amp;quot; href=&amp;quot;#adrlist1&amp;quot; rel=&amp;quot;group&amp;quot; class=&amp;quot;adr&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Folsom&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This technique use: property inheritance from group and explicit relationships between groups and members. The HTML code actual reflects the meaning of the sentence: the items following the columns belong to a group from which they inherit a property (locality).&lt;br /&gt;
&lt;br /&gt;
This example would be interpreted as:&lt;br /&gt;
* adr1 and adr2 belong to the #adrlist1 group (by reference).&lt;br /&gt;
* locality is associated with #adrlist1 by containment&lt;br /&gt;
* adr1 and adr2 inherit the locality property &amp;quot;San Francisco&amp;quot; from the group they belong to, since they are not overriding it.&lt;br /&gt;
&lt;br /&gt;
=== Use html5 custom element ===&lt;br /&gt;
An include pattern could use a [https://html.spec.whatwg.org/dev/custom-elements.html custom html5 element] without any semantics, perhaps &amp;lt;code&amp;gt;&amp;lt;mf-include&amp;gt;&amp;lt;/code&amp;gt;, with a custom attribute &amp;lt;code&amp;gt;includeid&amp;lt;/code&amp;gt;. This custom attribute would work similar to how the standard &amp;lt;code&amp;gt;[https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemref itemref]&amp;lt;/code&amp;gt; attribute works. Authors could place a space-separated list of tokens in &amp;lt;code&amp;gt;includeid&amp;lt;/code&amp;gt;. A microformats parser would then search the document for an element whose &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; matches one of those tokens, and include that matched element in the microformats element's sub-tree as if it appeared in that part of the DOM. Here's the first example on this page, marked up with the custom element instead of the class-based solution.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;We have three branches in &amp;lt;span id=&amp;quot;ldn&amp;quot;&amp;gt;London&amp;lt;/span&amp;gt;,&lt;br /&gt;
 including our head office in &amp;lt;span id=&amp;quot;ken&amp;quot;&amp;gt;Kensington&amp;lt;/span&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;123 Oxford Street&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;mf-include class=&amp;quot;locality&amp;quot; includeid=&amp;quot;ldn&amp;quot;&amp;gt;&amp;lt;/mf-include&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;5 Kensington High Street&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;mf-include class=&amp;quot;locality&amp;quot; includeid=&amp;quot;ken ldn&amp;quot;&amp;gt;&amp;lt;/mf-include&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li class=&amp;quot;adr #ldn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;1 Pall Mall&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;mf-include class=&amp;quot;locality&amp;quot; includeid=&amp;quot;ldn&amp;quot;&amp;gt;&amp;lt;/mf-include&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's a [https://btrem.github.io/microformats/include-pattern/ full write up of this idea] with links to two pages showing how this include pattern might work with the h-recipe format. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:24, 14 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Use html5 itemref attribute ===&lt;br /&gt;
Of course, since the [[include-pattern-brainstorming#Use_html5_custom_element|custom element idea]] is essentially based on html5's &amp;lt;code&amp;gt;[https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemref itemref]&amp;lt;/code&amp;gt; attribute, we could just use that attribute and call it good. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 18:41, 14 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== contributors ==&lt;br /&gt;
* [[User:TobyInk|Toby Inkster]]&lt;br /&gt;
* [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
* [[User:WebOrganics|Martin McEvoy]]&lt;br /&gt;
* [[User:Guillaume Lebleu|Guillaume Lebleu]]&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
{{include-pattern-related-pages}}&lt;/div&gt;</summary>
		<author><name>Btrem</name></author>
	</entry>
</feed>