Re: Breadcrumbs proposal

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.

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 Tuesday, 11 June 2013 21:40:31 UTC