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: Thad Guidry <thadguidry@gmail.com>
Date: Sun, 3 Aug 2014 09:13:17 -0500
Message-ID: <CAChbWaODGHH+c9bmC9PezmwBB5ELYan7ibwk=v1DTVSgN+J8qQ@mail.gmail.com>
To: Jarno van Driel <jarnovandriel@gmail.com>
Cc: Gregg Kellogg <gregg@greggkellogg.net>, 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>
Jarno,

Reverse properties in a directed graph are what Freebase sets up. (or can
with schema)  http://en.wikipedia.org/wiki/Directed_graph

A relationship between 2 entities (in a graph called vertices or nodes).
Both node A and node B, each have a relationship to describe.
You can describe a 'reverse' relationship for any reciprocal node.  A<->B
 B<->A

Where node A needs to say "I am Luke Skywalker",
and node B needs to say "I am his father",
and node C needs to say "I created node B" and "I created node A" and I am
"George Lucas". -creator "has created"
and where the reverse is true...where node A says ... "yeap, node C is my
creator !"  -created  "has creator"

;-)



On Sun, Aug 3, 2014 at 8:56 AM, Thad Guidry <thadguidry@gmail.com> wrote:

> It is for reverse relations, just as Freebase does.
>
> However...the proposal
> https://www.w3.org/wiki/WebSchemas/InverseProperties is not worded
> correctly in some areas... .it should use "has a", instead of "is a" or "is
> the".  Someone needs to go through the proposal in more depth and make
> necessary corrections that assert the appropriate reverse relationships so
> that they make sense.
>
> Example:
>
> The line
>
> <link itemprop-reverse="creator" href="http://www.freebase.com/m/0yq9mqd">
>
> expresses that http://www.freebase.com/m/0yq9mqd is the schema:creator of
> the person "William Shakespeare".
>
>
> "Romeo and Juliet" did not create William Shakespeare.  His Mum and Dad
> did.
>
>
>
>
> On Sun, Aug 3, 2014 at 6: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.
>>
>> Dan Brickley, 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
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>
>>> >>>>
>>> >>>
>>> >>
>>> >
>>>
>>>
>>
>
>
> --
> -Thad
> +ThadGuidry <https://www.google.com/+ThadGuidry>
> Thad on LinkedIn <http://www.linkedin.com/in/thadguidry/>
>



-- 
-Thad
+ThadGuidry <https://www.google.com/+ThadGuidry>
Thad on LinkedIn <http://www.linkedin.com/in/thadguidry/>
Received on Sunday, 3 August 2014 14:13:46 UTC

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