W3C home > Mailing lists > Public > public-vocabs@w3.org > September 2014

Re: schema.org Breadcrumb design on top of ItemList

From: Dan Brickley <danbri@google.com>
Date: Fri, 19 Sep 2014 20:15:05 +0100
Message-ID: <CAK-qy=73dWThMWGBzf_C+3ZS9wYLR9z-W+-zT+Qa789kKPmeyw@mail.gmail.com>
To: Aaron Bradley <aaranged@gmail.com>
Cc: W3C Web Schemas Task Force <public-vocabs@w3.org>, Stéphane Corlosquet <scorlosquet@gmail.com>
On 19 September 2014 20:05, Aaron Bradley <aaranged@gmail.com> wrote:
> Glad to see the breadcrumb issue making its way back into the queue.
>
> What neither the description nor the example markup addresses is whether the
> declared breadcrumbs do (or should) include the current page.

In general most schema.org definitions only hint at "shoulds" and
"musts" w.r.t. what a description ought to contain.

Maybe

 "A BreadcrumbList is an ItemList
consisting of a list of Web pages, typically described using at least
their URL and their name. A common pattern is for the list to
represent a hierarchy from a top level entry point to the current page
(or the page above it)."

> Perhaps this is a vocabulary-agnostic matter insofar as individual data
> consumers may have their own guidelines, and/or be able to figure out from
> parsing the content (if one is on the page "../dresses/real" and you've
> declared "../dresses/real" as your highest position breadcrumb one would
> think Google et al. would be able to figure out that this breadcrumb and the
> current page are one and the same).
>
> FWIW, though, Google [1] explicitly instructs webmasters to exclude the
> current page when using data-vocabulary.org/Breadcrumb:
>
> "Each breadcrumb item should appear in order, with the first item
> representing the top-level page, and the final item representing the parent
> of the current page."

My personal view (and I'm checking back with colleagues now that
ItemList has settled down) is that the more explicit the better.

> Also, if the example was actually meant to show the proposed type
> BreadcrumbList in action, shouldn't it be employed in the example?

Since the ItemList design is finished, I thought it worth working up
an example that uses it - potentially for inclusion in the site asap.
Hopefully it could be followed up soon afterwards by a dedicated type
("BreadcrumbList"? "BreadcrumbChain"?) if one is agreed.

Dan


> I.e. for microdata the shouldn't the type declaration:
> <ol itemscope itemtype="http://schema.org/ItemList">
> ... actually be:
> <ol itemscope itemtype="http://schema.org/BreadcrumbList">
>>
>
> [1] https://support.google.com/webmasters/answer/185417
>
>
> On Fri, Sep 19, 2014 at 11:43 AM, Dan Brickley <danbri@google.com> wrote:
>>
>> Here's one more pass over the schema.org breadcrumb usecase for ItemList.
>>
>> As a recap, the challenge was to keep an ordered list of url + label
>> pairs which survives the transformation into an extracted graph (aka
>> triples). Thanks for everyone who jumped into this discussion already.
>> I've just been going over the rdfa/microdata options with Stephane
>> Corlosquet in IM and here's the best we can come up with.
>>
>> I won't go into all the boring and fiddly tradeoffs here, just the 3
>> minimalistic examples showing a 2 item ordered list of link / anchor
>> text pairs. We considered dropping the @typeof in the RDFa but it
>> parses differently; while WebPage is quite an uninformative type, it
>> has a few subtypes (http://schema.org/WebPage) that might be useful.
>>
>> As part of this, here's a one liner proposal for a "Breadcrumb" type,
>> which would be used here in place of the initial ItemList:
>>
>> http://schema.org/BreadcrumbList: "A BreadcrumbList is an ItemList
>> consisting of a list of Web pages, typically described using at least
>> their URL and their name."
>>
>> (This would replace/obsolete the existing unused
>> http://schema.org/breadcrumb property)
>>
>> The examples below work with the ItemList design recently agreed here
>> directly:
>>
>> RDFa 1.1:
>>
>> <ol vocab="http://schema.org/" typeof="ItemList">
>>   <li property="itemListElement" typeof="ListItem">
>>     <a property="item" typeof="WebPage"
>> href="https://example.com/dresses"><span
>> property="name">Dresses</span></a>
>>       <meta property="position" content="1">
>>   </li>
>> › <li property="itemListElement" typeof="ListItem">
>>     <a property="item" typeof="WebPage"
>> href="https://example.com/dresses/real"><span property="name">Real
>> Dresses</span></a>
>>     <meta property="position" content="2">
>>   </li>
>> </ol>
>>
>>
>> Microdata:
>>
>> <ol itemscope itemtype="http://schema.org/ItemList">
>>   <li itemprop="itemListElement" itemscope
>> itemtype="http://schema.org/ListItem">
>>     <a itemprop="item" href="https://example.com/dresses"><span
>> itemprop="name">Dresses</span></a>
>>     <meta itemprop="position" content="1" />
>>   </li>
>> › <li itemprop="itemListElement" itemscope
>> itemtype="http://schema.org/ListItem">
>>     <a itemprop="item" href="https://example.com/dresses/real"><span
>> itemprop="name">Real Dresses</span></a>
>>     <meta itemprop="position" content="2" />
>>   </li>
>> </ol>
>>
>> JSON-LD:
>>
>> {
>>  "@context": "http://schema.org",
>>  "@type": "ItemList",
>>  "itemListElement":
>>  [
>>   {
>>    "@type": "ListItem",
>>    "position": 1,
>>    "item":
>>    {
>>     "@id": "https://example.com/dresses",
>>     "name": "Dresses"
>>     }
>>   },
>>   {
>>    "@type": "ListItem",
>>   "position": 2,
>>   "item":
>>    {
>>      "@id": "https://example.com/dresses/real",
>>      "name": "Real Dresses"
>>    }
>>   }
>>  ]
>> }
>>
>
Received on Friday, 19 September 2014 19:15:33 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:29:44 UTC