- From: Stéphane Corlosquet <scorlosquet@gmail.com>
- Date: Wed, 17 Sep 2014 09:55:01 -0400
- To: Jarno van Driel <jarnovandriel@gmail.com>
- Cc: Dan Brickley <danbri@google.com>, "martin.hepp@ebusiness-unibw.org" <martin.hepp@ebusiness-unibw.org>, Vicki Tardif Holland <vtardif@google.com>, "Jason Johnson (BING)" <jasjoh@microsoft.com>, W3C Web Schemas Task Force <public-vocabs@w3.org>
- Message-ID: <CAGR+nnH+q7h6m0hqkt0C7OOyNi9L272aqnwQTc1cokM1QStkQg@mail.gmail.com>
On Wed, Sep 17, 2014 at 3:21 AM, Jarno van Driel <jarnovandriel@gmail.com> wrote: > "The trick is to avoid relying on an explicit value for 'url', and >> instead use the href value as the URI as the Webpage. This is in fact much >> more in line with Linked Data best practices and it avoids blank nodes. A >> pet peeve of mine is that Schema.org relies too heavily on an explicit >> 'url' property in its examples. If the 'url' property is not provided, >> consumers such as Google should simply use the resource URI provided in >> @itemid (microdata), @href/@resource (RDFa) or @id in JSON-LD." > > > Kudos for this solution, it's a beauty. But... > > Unfortunately the current support for @itemid and @resource by the > sponsors is unreliable. Let me illustrate by giving an example: > (parsing these through rdfa.info/play/, Structured Data Linter, > Structured Data Testing Tool (=Google ) and Structured Data Validator > (=Yandex) will illustrate the issue). And I know, by testing it, that > Google's WMT doesn't handle @itemid @@resource very well either. > > Microdata: > <body> > <a href="http://example.com/article" itemscope itemtype=" > http://schema.org/Article"> > <span itemprop="name">Multiple identical @itemid's don't merge</span> > </a> > > <a href="http://example.com/article" itemscope itemtype=" > http://schema.org/Article"> > <span itemprop="description">Google (WMT and SDTT) and Yandex (SDV) > fail to merge 2 entities with the same @href/@itemid</span> > </a> > </body> > > RDFa: > <body vocab="http://schema.org/"> > <a href="http://example.com/article" typeof="Article"> > <span property="name">Multiple identical @itemid's don't merge</span> > </a> > > <a href="http://example.com/article" typeof="Article"> > <span property="description">Google (WMT and SDTT) and Yandex (SDV) > fails to merge 2 entities with the same @href, however Yandex succeeds when > @resource is specified where Google does not</span> > </a> > </body> > > Please try the RDFa example above in https://www.google.com/webmasters/markup-tester/events, and you will see that @href is well understood by Google event markup parser (same applies to @resource). Google definitely has a sharp in-house RDFa parser, it's just a matter of using it across the board on all their products, which I'm sure is only a matter of time before it happens. The sooner the better, of course. We're all waiting to see this parser deployed on http://www.google.com/webmasters/tools/richsnippets. The Microdata markup above will not work, and that's by design because MD doesn't honor the @href as being used as URI for data items. That said, @itemid might work. Steph. > Which does lead me to say that something needs to change in the way the > sponsors deal with @resource (and @href) before relying on Stéphane's > solution (again, which I think is a beauty). > > I see it as a bit of a disgrace the Structured Data Linter is the only > tool that's able to parse both microdata and RDFa examples successfully. It > most certainly doesn't help one bit in global identifiers being deployed by > web developers. I for one would not expect the sponsors to be behind in > supporting this. > > > 2014-09-17 7:12 GMT+02:00 Stéphane Corlosquet <scorlosquet@gmail.com>: > >> >> >> On Tue, Sep 16, 2014 at 5:08 PM, Dan Brickley <danbri@google.com> wrote: >> >>> On 16 September 2014 21:50, Jarno van Driel <jarnovandriel@gmail.com> >>> wrote: >>> > Not much really, it's a custom I picked up because the W3 Validator >>> > (http://validator.w3.org/) kept complaining about not providing a >>> @title for >>> > anchors, which it stopped complaining about if one added an empty >>> @title. So >>> > I became accustomed to alway specifying a @title, even it it's empty. >>> > >>> > To be honest I don't even know if the workaround is still needed or >>> not, I >>> > haven't looked into it for ages. :) >>> > >>> > I'll remove it from the document though. >>> >>> Ah thanks, I thought it might be some wiki markup / escaping artifact. >>> >>> It's a big document. Maybe we could settle on one single core example >>> that applies new Itemlist to the breadcrumbs usecase? >>> >>> A lot of people are interested in knowing how >>> https://support.google.com/webmasters/answer/185417?hl=en should look. >>> >>> Here's the old markup: >>> >>> <div itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> >>> <a href="http://www.example.com/dresses" itemprop="url"> >>> <span itemprop="title">Dresses</span> >>> </a> › >>> </div> >>> <div itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> >>> <a href="http://www.example.com/dresses/real" itemprop="url"> >>> <span itemprop="title">Real Dresses</span> >>> </a> › >>> </div> >>> <div itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> >>> <a href="http://www.example.com/clothes/dresses/real/green" >>> itemprop="url"> >>> <span itemprop="title">Real Green Dresses</span> >>> </a> >>> </div> >>> >>> How concisely can we do this with new ItemList? Does this look >>> monsterously verbose, or bearable? >>> >>> <ol itemscope="" itemtype="http://schema.org/ItemList"> >>> <li itemprop="itemListElement" itemscope="" >>> itemtype="http://schema.org/ListItem"> >>> <span itemprop="item" itemscope="" itemtype=" >>> http://schema.org/WebPage"> >>> <a href="http://www.example.com/dresses" itemprop="url"> >>> <span itemprop="title">Dresses</span> >>> </a> >>> </span> >>> </li> >>> › <li itemprop="itemListElement" itemscope="" >>> itemtype="http://schema.org/ListItem"> >>> <span itemprop="item" itemscope="" itemtype=" >>> http://schema.org/WebPage"> >>> <a href="http://www.example.com/dresses/real" itemprop="url"> >>> <span itemprop="title">Real Dresses</span> >>> </a> >>> </span> >>> </li> >>> › <li itemprop="itemListElement" itemscope="" >>> itemtype="http://schema.org/ListItem"> >>> <span itemprop="item" itemscope="" itemtype=" >>> http://schema.org/WebPage"> >>> <a href="http://www.example.com/clothes/dresses/real/green" >>> itemprop="url"> >>> <span itemprop="title">Real Green Dresses</span> >>> </a> >>> </span> >>> </li> >>> </ol> >>> >> >> This example can be simplified by removing one level of nesting, as shown >> in this example in RDFa, which I tested in Play <http://rdfa.info/play/>: >> >> <ol vocab="http://schema.org/" typeof="ItemList"> >> <li property="itemListElement" typeof="ListItem"> >> <a property="item" typeof="WebPage" href=" >> http://www.example.com/dresses"> >> <span property="title">Dresses</span> >> </a> >> <meta property="position" content="1"> >> </li> >> › <li property="itemListElement" typeof="ListItem"> >> <a property="item" typeof="WebPage" href=" >> http://www.example.com/dresses/real"> >> <span property="title">Real Dresses</span> >> </a> >> <meta property="position" content="2"> >> </li> >> </ol> >> >> The trick is to avoid relying on an explicit value for 'url', and instead >> use the href value as the URI as the Webpage. This is in fact much more in >> line with Linked Data best practices and it avoids blank nodes. A pet peeve >> of mine is that Schema.org relies too heavily on an explicit 'url' property >> in its examples. If the 'url' property is not provided, consumers such as >> Google should simply use the resource URI provided in @itemid (microdata), >> @href/@resource (RDFa) or @id in JSON-LD. >> >> Equivalent JSON-LD: >> { >> "@id": "_:g70204145541180", >> "@type": "ItemList", >> "itemListElement": [ >> "_:g70204145492480", >> "_:g70204145237140" >> ] >> }, >> { >> "@id": "_:g70204145492480", >> "@type": "ListItem", >> "item": "http://www.example.com/dresses", >> "position": "1" >> }, >> { >> "@id": "_:g70204145237140", >> "@type": "ListItem", >> "item": "http://www.example.com/dresses/real", >> "position": "2" >> }, >> { >> "@id": "http://www.example.com/dresses", >> "@type": "WebPage", >> "title": "Dresses" >> }, >> { >> "@id": "http://www.example.com/dresses/real", >> "@type": "WebPage", >> "title": "Real Dresses" >> } >> >> >> -- >> Steph. >> > > -- Steph.
Received on Wednesday, 17 September 2014 13:55:29 UTC