Hi Tantek.

Link to a page with reviews:
http://www.sustainlane.com/reviews/aziza/TVLWN4ZKQLKTOIKFLWKBWFQ17DN8

You can also look at Yelp. Similar page content. 

Notice hidden blocks with class="microformat_detail"

<div class="microformat_detail">
<span class="type">business</span>
        review of 
        <span class="item">
        <a class="include" href="#review_item">Aziza</a>
        </span>:
        <span class="rating">4</span> stars
</div>

Two things we want:
1.      Remove repetition
2.      Add review aggregates without more repetition

Generally I would like to stop using microformat_detail, and not restructure 
the HTML. 

The microformats spec can makes it easier to support variety of page structures 
without includes/hidden blocks by having other association rules. Toby's RDF 
example is 1:1 match to our pages, but that may be a special case.

A few suggestions that will make implementation simpler for different HTML 
trees:

1. hcard can contain associated information like reviews and aggregates. 
hreviews inside an hcard to not need to specify item.
<div class="hcard">
   <!-- hcard as a container -->
   <h1 class="fn">name</h1>
   <span class="average-rating">5</span> stars
   based on <span class="hreview-count">1313</span> reviews
   <div class="hreview">...</div>
   <div class="hreview"> ...</div>
</div>
 
2. Make a container, in which things are associated by default, so you can have 
a few of them on a page.
<div class="item-container">
   <h1 class="item hcard fn url"><a href="...">name</a></h1>
   <span class="average-rating">5</span> stars
   based on <span class="hreview-count">1313</span> reviews
   <div class="hreview">...</div>
   <div class="hreview"> ...</div>
</div>

3. Item can contain, instead of be part of other blocks.
<div class="item">
   <!-- item as a container -->
   <h1 class="hcard fn"><a class="url" href="...">name</a></h1>
   <span class="average-rating">5</span> stars
   based on <span class="hreview-count">1313</span> reviews
   <div class="hreview">...</div>
   <div class="hreview"> ...</div>
</div>

4. Aggregates have distinct names that are not used in hreview, so a block with 
an aggregate can be included in hreview without collisions with the hreview 
rating.

<div class="hcard item" id="review_item">
   <h1 class="fn">name</h1>
   <span class="average-rating">5</span> stars
   based on <span class="review-count">1313</span> reviews
   <span class="type microformat_detail">business</span>
</div>
<div class="hreview">...
   <a class="item microformat_detail" href="#review_item">Aziza</a>
</div>

5. This HTML structure may currently be the solution to the puzzle (hack?). 
Still requires includes.
 
<div class="hreview-aggregate">
   <div class="item hcard" id="review_item">
      <span class="fn">L'Amourita Pizza</span>
   </div>
   <span class="average-rating">4.4</span>
   <span class="review-count">1313</span>
</div>

<div class="hreview">...
   <a class="item microformat_detail" href="#review_item">Aziza</a>
</div>

The key in this trick is that aggregate block contains the hcard block and 
separately than the actual aggregate numbers. They are siblings. It is now 
possible to include the item in hreview, without importing a second rating from 
the aggregate. In this case aggregates can have names already used in hreview.

This dictates a certain markup tree, which will require web developers to 
rewrite pages to match it, as we do now (unless they are lucky enough to 
already have it this way). A better solution will not require you to reorganize 
your page blocks if they are already semantically readable. Something like 
example 3 is more flexible, it allows things to be in a flat structure without 
includes, all you need is one class outside.

If the spec does not offer something like 3 (no includes, no forced tree 
structures, etc) than reviews and aggregates need distinct names for the 
elements, to make including easier. Otherwise developers have to go to 
something like 5, which dictates a rigid page. There should be more than only 
one possible way to add microformats to a reviews page without hidden blocks, 
repeating text, etc.

I also think it is a goal to make the work of the parser as easy as possible 
without big decision trees to resolve includes.

Another suggestion: Collapse trees. If microformats are already flexible in 
what they allow as parent child, you might as well consider a rule that allows 
you to collapse an entire tree of microformats:

<a class="item hcard fn url" href="...">name</a>

-------------------------------------------------
Suggested solution using TODAYS spec:

<div class="hreview-aggregate">
   <div class="item hcard" id="review_item">
      <span class="fn">L'Amourita Pizza</span>
   </div>
   <div class="rating">
      <span class="average">4.4</span>
   </div> 
   <span class="count">1313</span>
</div>
<div class="hreview">...
   <a class=" microformat_detail" href="#review_item">Aziza</a>
</div>

E
_______________________________________________
microformats-discuss mailing list
[email protected]
http://microformats.org/mailman/listinfo/microformats-discuss

Reply via email to