- 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