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 21:21:16 +0100
Message-ID: <CAK-qy=6T2u9f7WJx97xDNv22q==JTbdv=Q9XV648KhyiiLmaPQ@mail.gmail.com>
To: Jarno van Driel <jarnovandriel@gmail.com>
Cc: Aaron Bradley <aaranged@gmail.com>, W3C Web Schemas Task Force <public-vocabs@w3.org>, Stéphane Corlosquet <scorlosquet@gmail.com>
On 19 September 2014 21:17, Jarno van Driel <jarnovandriel@gmail.com> wrote:
>> "(This would replace/obsolete the existing unused
>> http://schema.org/breadcrumb property)"
>
>
> If I understand you correct you mean this for example:
>
> <body vocab="http://schema.org/" typeof="WebPage">
>   <ol typeof="BreadcrumbList">
>     ...
>   </ol>
> </body>

Yep

> But with keeping 'breadcrumb' as a property we would actually be able to
> chain the BreadcrumbList to the WebPage:
>
> <body vocab="http://schema.org/" typeof="WebPage">
>   <ol property="breadcrumb" typeof="BreadcrumbList">
>     ...
>   </ol>
> </body>
>
> Or is this too much and is having both WebPage and BreadcrumbList being top
> level entities good enough?

Either way could work. In the little example list shown it begins with
the more general item, and ends with the more specific. But we didn't
spell that rule out explicitly anywhere yet. Aaron's question is also
relevant: should the current page be in the ItemList (at one end of it
or another). If we're to re-use 'breadcrumb' as you sketch it would
need to be at the top of the list, before the hierarchy begins. Many
pages do have a homepage url in the markup early on. But it's not
unusual to see it in the navigation too. Any thoughts on which is the
more common pattern? (I've not yet investigated...)

Dan

> 2014-09-19 21:15 GMT+02:00 Dan Brickley <danbri@google.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 20:21:48 UTC

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