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

Re: schema.org Breadcrumb design on top of ItemList

From: Jarno van Driel <jarnovandriel@gmail.com>
Date: Fri, 19 Sep 2014 23:35:59 +0200
Message-ID: <CADK2AU1cX=D90VjTga6hjqGJai2jGoqtvr3qUWtM3iNsMAkjaQ@mail.gmail.com>
To: Dan Brickley <danbri@google.com>
Cc: Aaron Bradley <aaranged@gmail.com>, W3C Web Schemas Task Force <public-vocabs@w3.org>, Stéphane Corlosquet <scorlosquet@gmail.com>
>
> "Aaron's question is also relevant: should the current page be in the
> ItemList"


I actually know quite some programmers who will be happy and upset at the
same time if the page itself can be included in the breadcrumb. Happy
because their programming job becomes easier, angry that it hasn't been
changed a long time ago already, saving them the work of not having the
last item in a breadcrumb contain markup.

2014-09-19 22:34 GMT+02:00 Jarno van Driel <jarnovandriel@gmail.com>:

> "Any thoughts on which is the more common pattern?"
>
>
> Well you actually gave a good reason for being satisfied with multiple
> top-level entities. I've encountered a gazillion ways of how *not* to write
> or place a breadcrumb on a page or within the HTML. Many of which wouldn't
> be able to connect properly unless you start using
> @itemid/@resource/@itemref/@id and throw in a <link> in there as well.
>
> Now if 'breadcrumb' is kept so those who want to can use it, that's fine
> with me as well, although in that case it would be great if both methods
> generate the same results. If using 'breadcrumb' (properly) leads to a
> different appearance in the search results, then we might as well scrape it.
>
> 2014-09-19 22:21 GMT+02:00 Dan Brickley <danbri@google.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 21:36:26 UTC

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