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

Re: Inverse Properties in Microdata:, was Re: schema.org update, v1.8: added WebSite type; broadened isPartOf to relate CreativeWorks

From: Jarno van Driel <jarnovandriel@gmail.com>
Date: Sun, 3 Aug 2014 16:56:24 +0200
Message-ID: <CADK2AU2W0orrVexMyvX9drtKFRKV52arC+Fd5xFsbYbvhAUzbQ@mail.gmail.com>
To: Gregg Kellogg <gregg@greggkellogg.net>
Cc: Dan Brickley <danbri@google.com>, "martin.hepp@ebusiness-unibw.org" <martin.hepp@ebusiness-unibw.org>, "Wallis,Richard" <Richard.Wallis@oclc.org>, W3C Web Schemas Task Force <public-vocabs@w3.org>, "Jason Johnson (BING)" <jasjoh@microsoft.com>, Juraj Kabát <kabat.juraj@gmail.com>, Thad Guidry <thadguidry@gmail.com>
OK, let me continue to be the student for a moment please.

I understand Gregg's example, but what he wrote I would have written as:

<div itemid="#Organization" itemscope itemtype="
http://schema.org/Organization">
    <span itemprop="name">Cryptography Users</span>
    <div itemid="#OrganizationRole" itemprop="member" itemscope itemtype="
http://schema.org/OrganizationRole">
        <link itemprop-reverse="member" href="#Organization">
        <div itemprop="member" itemscope itemtype="http://schema.org/Person
">
            <link itemprop-reverse="member" href="#OrganizationRole">
            <span itemprop="name">Alice</span>
        </div>
        <span itemprop="startDate">1977</span>
    </div>
</div>

where I understand:
itemprop="member" equals 'has member'
and
itemprop-reverse="member" equals 'is member of'

I just never occurred to me, that if the values 'member' and 'memberOf'
exist that one could express a reverse relation this way:
<div itemprop-reverse="memberOf" itemprop="member" itemscope itemtype="
http://schema.org/OrganizationRole">

Do I understand it right this can only be done in case a property and it's
opposite exist?


2014-08-03 16:46 GMT+02:00 Gregg Kellogg <gregg@greggkellogg.net>:

> On Aug 3, 2014, at 4:45 AM, Jarno van Driel <jarnovandriel@gmail.com>
> wrote:
>
> mmmmm, could it be there's a misunderstanding on the working of
> itemprop-reverse (and something that needs to be explained better in the
> proposal)?
>
> The way I understood it is that:
> itemprop-reverse="memberOf" equals itemprop="member", or,
> itemprop-reverse="hasPart" equals itemprop="isPartOf".
>
> Meaning itemprop-reverse is meant to express the opposite value of a
> property but not to express a reverse relation.
>
>
> The wording seems pretty clear:
>
> [[[
>
> The new attribute @itemprop-reverse will be equivalent to the existing
> @itemprop, except for the fact that the subject and the object of the
> statement are swapped.
>
> ]]]
> This makes @itemprop-reverse behave just like @rev in RDFa.
>
> Gregg
>
> Dan Brinkley, Martin Hepp and Thad Guidry, how do you see this?
>
>
> 2014-08-02 23:56 GMT+02:00 Gregg Kellogg <gregg@greggkellogg.net>:
>
>> On Aug 1, 2014, at 7:50 AM, Dan Brickley <danbri@google.com> wrote:
>>
>> > On 1 August 2014 15:35, martin.hepp@ebusiness-unibw.org
>> > <martin.hepp@ebusiness-unibw.org> wrote:
>> >> Richard, Jarno:
>> >>
>> >> Note that the itemprop-reverse proposal does not imply that there
>> should be no inverse properties in schema.org. It is just that we should
>> be able to use properties in both directions without the need to define two
>> properties, one for each direction. Inverse properties in the vocabulary
>> can make sense in some cases (like in the ongoing thread).
>> >>
>> >> So we should be clear about the fact that advancing the
>> itemprop-reverse proposal does not stop you from having both isPartOf and
>> hasPart. We should define inverses formally in the vocabulary (e.g. by
>> adding a property http://schema.org/inverseOf to the meta-model of
>> schema.org).
>> >
>> > Indeed. Personally I'm pretty supportive of hasPart, although it is
>> > hard to know where to draw the line. We didn't do it in the last
>> > revision when the focus was more on WebSite and we generalized
>> > isPartOf as a side effect. Both isPartOf and
>> > http://schema.org/containedIn have the awkward characteristic that the
>> > point from 'inner' things to 'outer', even while markup structure
>> > generally starts with containers and has their parts 'inside' in
>> > markup terms. We're taking a good look at Periodical this week so will
>> > get back to you all on that asap.
>> >
>> > BTW
>> https://www.w3.org/wiki/WebSchemas/Periodicals,_Articles_and_Multi-volume_Works
>> > would benefit from "we think this is pretty much done" -style
>> > read-throughs from other folk here. I've bounced it off a few more
>> > contacts from the library/bibliographic world and it seems to about
>> > right....
>>
>> I've updated my Microdata to RDF implementation [1] to support
>> @itemprop-reverse, and need to clarify the interaction with @itemprop.
>> Consider the following example:
>>
>>             <div itemscope itemtype="http://schema.org/Organization">
>>               <span itemprop="name">Cryptography Users</span>
>>               <div itemprop-reverse="memberOf" itemprop="member" itemscope
>>                     itemtype="http://schema.org/OrganizationRole">
>>                 <div itemprop-reverse="memberOf" itemprop="member"
>> itemscope
>>                         itemtype="http://schema.org/Person">
>>                   <span itemprop="name">Alice</span>
>>                 </div>
>>                 <span itemprop="startDate">1977</span>
>>               </div>
>>             </div>
>>
>> This doubly-links a Role, using memberOf as the inverse of member. The
>> resulting Turtle, would be:
>>
>>             @prefix schema: <http://schema.org/> .
>>             @prefix md: <http://www.w3.org/ns/md#> .
>>             <> md:item (_:a) .
>>             _:a a schema:Organization;
>>                 schema:name "Cryptography Users";
>>                 schema:member _:b .
>>             _:b a schema:OrganizationRole;
>>                 schema:startDate "1977";
>>                 schema:member _:c;
>>                 schema:memberOf _:a .
>>             _:c a schema:Person;
>>                 schema:name "Alice";
>>                 schema:memberOf _:b .
>>
>> However, it's not clear that Microdata would support having both
>> @itemprop and @itemprop-reverse on the same element. I updated the Wiki to
>> indicate no, but this needs to be clarified with WHATWG and this list.
>>
>> (I'm also considering just dropping the md:item list, as not being too
>> useful; feedback on this would be appreciated.
>>
>> You can use this live through my distiller [2] (although, not the linter
>> yet).
>>
>> Gregg
>>
>> [1] https://github.com/ruby-rdf/rdf-microdata
>> [2] http://rdf.greggkellogg.net/distiller
>>
>> > Dan
>> >
>> >> Martin
>> >>
>> >>
>> >>
>> >>
>> >> On 01 Aug 2014, at 15:56, Wallis,Richard <Richard.Wallis@oclc.org>
>> wrote:
>> >>
>> >>> Agree that pushing for reverse property capability in Microdata is a
>> good thing.
>> >>>
>> >>> However, I must harmonise with Jarno about hasPart [click, hasPart -
>> click, hasPart - click..] as proposed in several places including the
>> Periodicals, Articles, & Mult-Volume Works proposal.
>> >>>
>> >>> Describing something like a multi-volume work, for example it is
>> quite possible that the individual parts are defined elsewhere on the web,
>> without knowledge of the the multi-volume description
>> >>>
>> >>>
>> >>> ~Richard
>> >>>
>> >>>
>> >>> On 1 Aug 2014, at 09:59, Jarno van Driel <jarnovandriel@gmail.com>
>> wrote:
>> >>>
>> >>>> "as Jarno knows, for he was involved in the discussion ;-)"
>> >>>> hehe, it could well be I mentioned the existence of the proposal
>> here and there.
>> >>>>
>> >>>> "Anyway, I'll take it to the HTML folks and report back."
>> >>>> Great, that would help a lot!
>> >>>>
>> >>>> Although I have to say (running the risk I sound like a broken
>> record) that I still believe adding an 'hasPart' property would help a lot
>> as well. I see both the <link> pointing to an itemid and itemprop-reverse
>> attribute as more advanced methods for mapping relations and fear that
>> folks, who are not too familiar with either microdata, will overlook them.
>> Having 'hasPart' as well will provide an easy and straightforward solution
>> for a property I suspect will be use quite a lot. Especially if the
>> schema.org provides sufficient examples on how to use it for layout
>> entities like WebPage, WebSite, SiteNavigationElement, WebPageElement, etc.
>> >>>>
>> >>>>
>> >>>> 2014-08-01 9:10 GMT+02:00 Dan Brickley <danbri@google.com>:
>> >>>> On 1 August 2014 07:52, martin.hepp@ebusiness-unibw.org
>> >>>> <martin.hepp@ebusiness-unibw.org> wrote:
>> >>>>> There is a fully-fledged proposal to add inverse properties to
>> microdata:
>> >>>>>
>> >>>>>    https://www.w3.org/wiki/WebSchemas/InverseProperties
>> >>>>>
>> >>>>> (as Jarno knows, for he was involved in the discussion ;-)
>> >>>>
>> >>>> And I well remember too. We had also already begun a discussion on
>> the
>> >>>> WHATWG list, so the issue is well established.
>> >>>>
>> >>>>> Maybe we can ask Dan to look into this matter again? It would
>> really help to have this feature.
>> >>>>
>> >>>> I think it is indeed time to revisit. I didn't want to push for
>> >>>> @itemprop-reverse until the Role work stabilised, but now that is
>> done
>> >>>> I believe it's time. That said, there is still sometimes
>> justification
>> >>>> for adding a reverse property, and the site software now supports
>> >>>> linking such pairs where they exist (e.g. see
>> >>>> http://schema.org/alumni). Anyway, I'll take it to the HTML folks
>> and
>> >>>> report back.
>> >>>>
>> >>>> Dan
>> >>>>
>> >>>>> Best wishes / Mit freundlichen Grüßen
>> >>>>>
>> >>>>> Martin Hepp
>> >>>>>
>> >>>>>
>> >>>>> On 01 Aug 2014, at 00:40, Jarno van Driel <jarnovandriel@gmail.com>
>> wrote:
>> >>>>>
>> >>>>>> "I notice you don’t have an itemprop attribute in your first <div>
>> element.  Was that intentional?"
>> >>>>>>
>> >>>>>> That would only have been possible if 'hasPart' (which isn't part
>> of the specification) could have been used (or itemprop-reverse="isPartOf").
>> >>>>>>
>> >>>>>> Because there is no inverse property of 'isPartOf', nor a reverse
>> mechanism for microdata, Juraj is bound to chain the entities together by
>> making use of <link itemprop="isPartOf" href="[itemid-value]">.
>> >>>>>>
>> >>>>>> A cumbersome method, that now can be applied where it first
>> couldn't. All be it but one that can be improved still.
>> >>>>>>
>> >>>>>>
>> >>>>>> 2014-07-31 17:52 GMT+02:00 Jason Johnson (BING) <
>> jasjoh@microsoft.com>:
>> >>>>>> I notice you don’t have an itemprop attribute in your first <div>
>> element.  Was that intentional?
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> From: Juraj Kabát [mailto:kabat.juraj@gmail.com]
>> >>>>>> Sent: Tuesday, July 29, 2014 8:08 AM
>> >>>>>> To: public-vocabs@w3.org
>> >>>>>> Cc: W3C Web Schemas Task Force
>> >>>>>> Subject: Re: schema.org update, v1.8: added WebSite type;
>> broadened isPartOf to relate CreativeWorks
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> When Ill try to add isPartOf property to ItemList, Im getting this
>> warning:
>> >>>>>>
>> >>>>>> WARNING: isPartOf field not specified in
>> http://schema.org/ItemList
>> >>>>>>
>> >>>>>> Example snippet:
>> >>>>>> <body itemid="#WebPage" itemscope itemtype="
>> http://schema.org/CollectionPage">
>> >>>>>>    <div class="products" itemscope itemtype="
>> http://schema.org/ItemList">
>> >>>>>>        <meta content="Unordered" itemprop="itemListOrder">
>> >>>>>>        <link itemprop="isPartOf" href="#WebPage">
>> >>>>>>
>> >>>>>>        <div itemtype="http://schema.org/Product" itemscope
>> itemprop="itemListElement">
>> >>>>>>        <img src="[url]" itemprop="image">
>> >>>>>>        <a href="[url]" itemprop="url"><span
>> itemprop="name">[name]</span></a>
>> >>>>>>      <span itemtype="http://schema.org/Offer" itemscope
>> itemprop="offers">
>> >>>>>>            <span itemprop="price">[price]</span>
>> >>>>>>      </span>
>> >>>>>>        </div>
>> >>>>>>
>> >>>>>>        <div itemtype="http://schema.org/Product" itemscope
>> itemprop="itemListElement">
>> >>>>>>        <img src="[url]" itemprop="image">
>> >>>>>>        <a href="[url]" itemprop="url"><span
>> itemprop="name">[name]</span></a>
>> >>>>>>      <span itemtype="http://schema.org/Offer" itemscope
>> itemprop="offers">
>> >>>>>>            <span itemprop="price">[price]</span>
>> >>>>>>      </span>
>> >>>>>>        </div>
>> >>>>>>
>> >>>>>>    </div>
>> >>>>>> </body>
>> >>>>>>
>> >>>>>>
>> >>>>>> But when Ill add isPartOf property to each ItemListElement,
>> everything works like expected.
>> >>>>>> What am I missing here? ItemList extends CreativeWork as well...
>> >>>>>>
>> >>>>>> Why can't I chain whole ItemList to parent but instead of that I
>> have to repeat myself for every element in list?
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> On Mon, Jul 28, 2014 at 10:20 PM, Jarno van Driel <
>> jarnovandriel@gmail.com> wrote:
>> >>>>>>
>> >>>>>> Personally I most of all like the addition of WebSite (and it's
>> creative example) as well as the reworked 'isPartOf' most and I've already
>> started to implementing them.  :-)
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> But I would have been an even happier camper if 'hasPart' would
>> have been introduced as well. And even though chaining WebSite > WebPage >
>> WebPageElements > CreativeWork now can be achieved, without abusing
>> 'mentions' for this, it unfortunately is quite cumbersome in microdata
>> because one has to use itemid quite a lot, eg:
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> <body itemid="#WebPage" itemscope itemtype="
>> http://schema.org/WebPage">
>> >>>>>>
>> >>>>>> <nav itemid="#SiteNavigationElement" itemscope itemtype="
>> http://schema.org/SiteNavigationElement">
>> >>>>>>
>> >>>>>> <link itemprop="isPartOf" href="#WebPage">
>> >>>>>>
>> >>>>>> <ul>
>> >>>>>>
>> >>>>>> <li itemscope itemtype="http://schema.org/WebPage"
>> itemid="#WebPage-1">
>> >>>>>>
>> >>>>>> <link itemprop="isPartOf" href="#SiteNavigationElement">
>> >>>>>>
>> >>>>>> <a itemprop="url" href="[some-page-url]">
>> >>>>>>
>> >>>>>> <span itemprop="name">[some-page-name]</span>
>> >>>>>>
>> >>>>>> </a>
>> >>>>>>
>> >>>>>> <ul>
>> >>>>>>
>> >>>>>> <li itemscope itemtype="http://schema.org/WebPage">
>> >>>>>>
>> >>>>>> <link itemprop="isPartOf" href="#WebPage-1" />
>> >>>>>>
>> >>>>>> <a itemprop="url" href="[some-page-url]">
>> >>>>>>
>> >>>>>> <span itemprop="name">[some-page-name]</span>
>> >>>>>>
>> >>>>>> </a>
>> >>>>>>
>> >>>>>> </li>
>> >>>>>>
>> >>>>>> <li itemscope itemtype="http://schema.org/WebPage">
>> >>>>>>
>> >>>>>> <link itemprop="isPartOf" href="#WebPage-1" />
>> >>>>>>
>> >>>>>> <a itemprop="url" href="[some-page-url]">
>> >>>>>>
>> >>>>>> <span itemprop="name">[some-page-name]</span>
>> >>>>>>
>> >>>>>> </a>
>> >>>>>>
>> >>>>>> </li>
>> >>>>>>
>> >>>>>> </ul>
>> >>>>>>
>> >>>>>> </li>
>> >>>>>>
>> >>>>>> </ul>
>> >>>>>>
>> >>>>>> </nav>
>> >>>>>>
>> >>>>>> </body>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> I'm still quite pleased with the update is as though.
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> 2014-07-28 17:43 GMT+02:00 Dan Brickley <danbri@google.com>:
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> previous update (1.7),
>> >>>>>>
>> http://lists.w3.org/Archives/Public/public-vocabs/2014Jul/0012.html
>> >>>>>>
>> >>>>>> A small schema.org update just went live:
>> >>>>>>
>> >>>>>> 1. We add a new CreativeWork type, "WebSite"
>> >>>>>>
>> >>>>>> http://schema.org/WebSite
>> >>>>>>
>> >>>>>> "A WebSite is a set of related web pages and other items typically
>> >>>>>> served from a single web domain and accessible via URLs."
>> >>>>>>
>> >>>>>> The example shows the use of this with SearchAction.
>> >>>>>>
>> >>>>>> 2. We adopt the proposal made by the bibextend group and other
>> >>>>>> collaborators, to broaden isPartOf. It now relates any
>> CreativeWork to
>> >>>>>> any other CreativeWork
>> >>>>>>
>> >>>>>> http://schema.org/isPartOf
>> >>>>>>
>> >>>>>> see also
>> https://www.w3.org/wiki/WebSchemas/Periodicals,_Articles_and_Multi-volume_Works
>> >>>>>>
>> >>>>>> 3. Potential Actions documentation
>> >>>>>>
>> >>>>>> The previously PDF-only Potential Actions document is now on the
>> site in HTML:
>> >>>>>>
>> >>>>>> http://schema.org/docs/actions.html
>> >>>>>>
>> >>>>>> 4. Adopted some markup fixes from Stephane Corlosquet (thanks!)
>> >>>>>>
>> >>>>>> https://github.com/rvguha/schemaorg/pull/71
>> >>>>>>
>> >>>>>> 5. Improved consistency of encoding / associatedMedia description
>> >>>>>> (thanks Dan Scott!)
>> >>>>>>
>> >>>>>> https://github.com/rvguha/schemaorg/pull/35
>> >>>>>>
>> >>>>>> 6. Updated some out-of-date sections of the FAQ: it now mentions
>> >>>>>> Yandex appropriately, acknowledges that there's life beyond
>> Microdata
>> >>>>>> (i.e. RDFa, JSON-LD), and doesn't talk about "version 0.9 draft"
>> any
>> >>>>>> more.
>> >>>>>>
>> >>>>>> https://github.com/rvguha/schemaorg/pull/69
>> >>>>>>
>> >>>>>> Thanks all :)
>> >>>>>>
>> >>>>>> Dan
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>
>> >>>>
>> >>>
>> >>
>> >
>>
>>
>
Received on Sunday, 3 August 2014 14:56:52 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:49:34 UTC