- From: Dan Brickley <danbri@danbri.org>
- Date: Thu, 13 Jun 2013 15:21:55 +0100
- To: Guha <guha@google.com>
- Cc: Gregg Kellogg <gregg@greggkellogg.net>, Stéphane Corlosquet <scorlosquet@gmail.com>, Jarno van Driel <jarno@quantumspork.nl>, W3C Vocabularies <public-vocabs@w3.org>, Egor Antonov <elderos@yandex-team.ru>
On 13 June 2013 14:58, Guha <guha@google.com> wrote: > I agree that we really need to clean up breadcrumbs and come up with a > simple, usable mechanism. > > The problem with the first rdfa based version that was done many years ago > was that it was so complex that most implementations got it wrong. Which is > why we simplified it in schema.org (probably over simplified it). > > Let us collect the different alternatives and comeup with something that is > both usable and expressive enough. Is nesting the markup an additional level with each breadcrumb link is one of those things that publishers often get wrong? Dan > thanks, > > guha > > > On Wed, Jun 12, 2013 at 8:18 AM, Gregg Kellogg <gregg@greggkellogg.net> > wrote: >> >> 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 Thursday, 13 June 2013 14:22:23 UTC