Re: Breadcrumbs proposal

On Jun 11, 2013, at 2:40 PM, Stéphane Corlosquet <scorlosquet@gmail.com> wrote:

> 
> 
> On Tue, Jun 11, 2013 at 11:50 AM, Gregg Kellogg <gregg@greggkellogg.net> wrote:
> On Jun 10, 2013, at 7:31 PM, Stéphane Corlosquet <scorlosquet@gmail.com> wrote:
> 
>> Hi Jarno and all.
>> 
>> I quite like Jarno's nested example which is also the same as the proposal from Egor / Yandex at http://www.w3.org/wiki/WebSchemas/Breadcrumbs. The advantage of the current proposal is that it solves all the problems for (1) multiple breadcrumb chains and (2) can be encoded in both microdata and RDFa Lite in a very similar fashion (which is not the case for the ordered approach). Also, both syntaxes are parsed today by Google's parser (see below).
>> 
>> Here is the example in microdata (copied straight from the proposal):
>> 
>> <div itemscope itemtype="http://schema.org/WebPage">
>>   <!--First chain-->
>>   <div itemprop="breadcrumb" itemscope itemtype="http://schema.org/Breadcrumb">
>>     <a itemprop="url" href="/category/books">
>>       <span itemprop="name">Books</span>
>>     </a>
>>     <!--Second level of the first chain-->
>>     <span itemprop="child" itemscope itemtype="http://schema.org/Breadcrumb">
>>       <a itemprop="url" href="/category/books/classics">
>>         <span itemprop="name">Boring classics</span>
>>       </a>
>>     </span>
>>   </div>
>>     <!--Second chain-->
>>   <div itemprop="breadcrumb" itemscope itemtype="http://schema.org/Breadcrumb">
>>     <a itemprop="url" href="/category/bicycles">
>>       <span itemprop="name">Bicycles</span>
>>     </a>
>>     <!--Second level of the second chain-->
>>     <span itemprop="child" itemscope itemtype="http://schema.org/Breadcrumb">
>>       <!--Last element is not a hyperlink in html-->
>>       <!--but it has a hyperlink in microdata markup-->
>>       <span itemprop="name">For kids</span>
>>       <link itemprop="url" href="/category/bicycles/three-wheeled"/>      
>>     </span>
>>   </div>
>> </div>
>> 
>> 
>> and the same example translated into RDFa Lite by simply renaming the attributes and moving the http://schema.org/ piece into the vocab attribute:
>> 
>> <div vocab="http://schema.org/" typeof="WebPage">
>>   <!--First chain-->
>>   <div property="breadcrumb" typeof="Breadcrumb">
>>     <a property="url" href="/category/books">
>>       <span property="name">Books</span>
>>     </a>
>>     <!--Second level of the first chain-->
>>     <span property="child" typeof="Breadcrumb">
>>       <a property="url" href="/category/books/classics">
>>         <span property="name">Boring classics</span>
>>       </a>
>>     </span>
>>   </div>
>>     <!--Second chain-->
>>   <div property="breadcrumb" typeof="Breadcrumb">
>>     <a property="url" href="/category/bicycles">
>>       <span property="name">Bicycles</span>
>>     </a>
>>     <!--Second level of the second chain-->
>>     <span property="child" typeof="Breadcrumb">
>>       <!--Last element is not a hyperlink in html-->
>>       <!--but it has a hyperlink in microdata markup-->
>>       <span property="name">For kids</span>
>>       <link property="url" href="/category/bicycles/three-wheeled"/>      
>>     </span>
>>   </div>
>> </div>
>> 
>> Both snippets above work in the Google Rich Snippet testing tool [1], and you can try to paste the second snippet in the RDFa play tool [2] to view a nice diagram of the breadcrumbs structure.
> 
> The difference is that microdata creates an implicit order for multiple values of breadcrumb, where RDFa does not. This could be solved using the @inlist attribute from RDFa 1.1, which is not part of RDFa Lite 1.1. My processor interprets the above example as follows:
> 
> I'm not sure that having the chains ordered matters as much as having the elements/breadcrumbs within each chain matter, either way, it's possible to have them both ordered. But that's something consumers such as the search engines can tell us.

No, you're right, ordering of separate Breadcrumbs is probably not important. I'm guilty of not looking at the markup closely enough :P.

Gregg

> Steph.
>  
> 
> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> @prefix rdfa: <http://www.w3.org/ns/rdfa#> .
> @prefix schema: <http://schema.org/> .
> 
> <> rdfa:usesVocabulary schema: .
> 
>  [ a schema:WebPage;
>     schema:breadcrumb
>       [ a schema:Breadcrumb;
>         schema:child
>           [ a schema:Breadcrumb;
>             schema:name "Boring classics";
>             schema:url </category/books/classics>];
>         schema:name "Books";
>         schema:url </category/books>],
>       [ a schema:Breadcrumb;
>         schema:child
>           [ a schema:Breadcrumb;
>             schema:name "For kids";
>             schema:url </category/bicycles/three-wheeled>];
>         schema:name "Bicycles";
>         schema:url </category/bicycles>]
>   ] .
> 
> Note that schema:breadcrumb has two values, which are unordered in JSON-LD. If I instead add @inlist, as follows:
> 
> <div vocab="http://schema.org/" typeof="WebPage">
>   <!--First chain-->
>   <div property="breadcrumb" typeof="Breadcrumb" inlist>
>     <a property="url" href="/category/books">
>       <span property="name">Books</span>
>     </a>
>     <!--Second level of the first chain-->
>     <span property="child" typeof="Breadcrumb" inlist>
>       <a property="url" href="/category/books/classics">
>         <span property="name">Boring classics</span>
>       </a>
>     </span>
>   </div>
>     <!--Second chain-->
>   <div property="breadcrumb" typeof="Breadcrumb" inlist>
>     <a property="url" href="/category/bicycles">
>       <span property="name">Bicycles</span>
>     </a>
>     <!--Second level of the second chain-->
>     <span property="child" typeof="Breadcrumb" inlist>
>       <!--Last element is not a hyperlink in html-->
>       <!--but it has a hyperlink in microdata markup-->
>       <span property="name">For kids</span>
>       <link property="url" href="/category/bicycles/three-wheeled"/>      
>     </span>
>   </div>
> </div>
> 
> I get ordered breadcrumbs:
> 
> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> @prefix rdfa: <http://www.w3.org/ns/rdfa#> .
> @prefix schema: <http://schema.org/> .
> 
> <> rdfa:usesVocabulary schema: .
> 
> [ a schema:WebPage;
>   schema:breadcrumb (
>     [ a schema:Breadcrumb;
>       schema:child (
>         [ a schema:Breadcrumb;
>           schema:name "Boring classics";
>           schema:url </category/books/classics>]
>       );
>       schema:name "Books";
>       schema:url </category/books>]
>     [ a schema:Breadcrumb;
>       schema:child (
>         [ a schema:Breadcrumb;
>           schema:name "For kids";
>           schema:url </category/bicycles/three-wheeled>]);
>       schema:name "Bicycles";
>       schema:url </category/bicycles>]
>   )
> ] .
> 
> Gregg
> 
>> Steph.
>> 
>> [1] http://www.google.com/webmasters/tools/richsnippets
>> [2] http://rdfa.info/play/
>> 
>> 
>> On Mon, Jun 10, 2013 at 7:51 PM, Jarno van Driel <jarno@quantumspork.nl> wrote:
>> To be a bit more clear where my point is going. (My previous response
>> was a bit incomplete).
>> 
>> ------------------------------------------------------
>> 
>> In case the proposal is taken as a base (Nested):
>> 
>> <!--First level of the first chain-->
>> <p itemprop="breadcrumb" itemscope itemtype="http://schema.org/WebPage">
>>   <a itemprop="url" href="/category/books">
>>     <span itemprop="name">Books</span>
>>   </a>
>>   <!--Second level of the first chain-->
>>   <span itemprop="child" itemscope itemtype="http://schema.org/WebPage">
>>     <a itemprop="url" href="/category/books/classics">
>>       <span itemprop="name">Boring classics</span>
>>     </a>
>>     <!--Third level of the first chain-->
>>     <span itemprop="child" itemscope itemtype="http://schema.org/WebPage">
>>       <a itemprop="url" href="/category/books/classics">
>>         <span itemprop="name">Boring classics</span>
>>       </a>
>>     </span>
>>   </span>
>> </p>
>> 
>> <!--First level of the second chain-->
>> <p itemprop="breadcrumb" itemscope itemtype="http://schema.org/WebPage">
>>   <a itemprop="url" href="/category/books">
>>     <span itemprop="name">Books</span>
>>   </a>
>>   <!--Second level of the second chain-->
>>   <span itemprop="child" itemscope itemtype="http://schema.org/WebPage">
>>     <a itemprop="url" href="/category/books/classics">
>>       <span itemprop="name">Boring classics</span>
>>     </a>
>>     <!--Third level of the second chain-->
>>     <span itemprop="child" itemscope itemtype="http://schema.org/WebPage">
>>       <a itemprop="url" href="/category/books/classics">
>>         <span itemprop="name">Boring classics</span>
>>       </a>
>>     </span>
>>   </span>
>> </p>
>> 
>> ------------------------------------------------------
>> 
>> And in case the data-vocabulary style is taken as a base (Ordered):
>> 
>> <!--First level of the first chain-->
>> <p itemprop="breadcrumb" itemscope itemtype="http://schema.org/WebPage">
>>   <a itemprop="url" href="/category/books">
>>     <span itemprop="name">Books</span>
>>   </a>
>>   <!--Second level of the first chain-->
>>   <span itemprop="child" itemscope itemtype="http://schema.org/WebPage">
>>     <a itemprop="url" href="/category/books/classics">
>>       <span itemprop="name">Boring classics</span>
>>     </a>
>>   <!--Third level of the first chain-->
>>   <span itemprop="child" itemscope itemtype="http://schema.org/WebPage">
>>     <a itemprop="url" href="/category/books/classics">
>>       <span itemprop="name">Boring classics</span>
>>     </a>
>>   </span>
>> </p>
>> 
>> <!--First level of the second chain-->
>> <p itemprop="breadcrumb" itemscope itemtype="http://schema.org/WebPage">
>>   <a itemprop="url" href="/category/books">
>>     <span itemprop="name">Books</span>
>>   </a>
>>   <!--Second level of the second chain-->
>>   <span itemprop="child" itemscope itemtype="http://schema.org/WebPage">
>>     <a itemprop="url" href="/category/books/classics">
>>       <span itemprop="name">Boring classics</span>
>>     </a>
>>   <!--Third level of the second chain-->
>>   <span itemprop="child" itemscope itemtype="http://schema.org/WebPage">
>>     <a itemprop="url" href="/category/books/classics">
>>       <span itemprop="name">Boring classics</span>
>>     </a>
>>   </span>
>> </p>
>> 
>> ------------------------------------------------------
>> 
>> The way I see it imho - either way doesn't need a new type. In both
>> cases it's resolved by adding a new property to WebPage.
>> 
>> 
>> 
>> 
>> -- 
>> Steph. 
>> 
>> 
>> 
>> 
>> 
> 
> 
> 
> 
> -- 
> Steph.

Received on Wednesday, 12 June 2013 15:18:58 UTC