- From: Guha <guha@google.com>
- Date: Wed, 26 Mar 2014 13:00:09 -0700
- To: Gregg Kellogg <gregg@greggkellogg.net>
- Cc: Dan Brickley <danbri@google.com>, W3C Web Schemas Task Force <public-vocabs@w3.org>
- Message-ID: <CAPAGhv-LWphkPCaNTGTwwCUGNsJVD=t9MBf18oB4B31P_zLrnA@mail.gmail.com>
See comments inline On Wed, Mar 26, 2014 at 12:15 PM, Gregg Kellogg <gregg@greggkellogg.net>wrote: > On Mar 26, 2014, at 9:37 AM, Dan Brickley <danbri@google.com> wrote: > > > At schema.org we have been working on a design for describing roles > > and contributions. > > > > I've just posted a discussion draft in the WebSchemas wiki. Please take > a look: > > > > Roles in Schema.org > > https://www.w3.org/wiki/WebSchemas/RolesPattern -> > > https://www.w3.org/wiki/images/b/b5/RolesinSchema.org.pdf > > Some comments on the draft: > > I think this is a really useful abstraction, but I do see some room for > improvement. > > I think adding date ranges to the role is conflating the role with an > event. Better to say that the Joe Montana is the quarterback during the > 1992 season of the 49ers by defining an event for the 1992 season. Jason > and Jean-Pierre made similar points, and I think that models better. > > One could look at anything with a temporal extent (including a proposition) as an event. It is not clear that buys us much. In fact, experience with Cyc shows that this can be confusing. If you want, you can look at Role as a subclass of Event. > A Role seems to use different properties to describe the kind of role > ("position", "characterName", "graduationYear"). It might be possible to > simply subclass Role so that it's known the kind of role that's being > played, but a single property which defines this (ideally an entity, but > allowing a string) would be less ambiguous and would avoid falling into the > trap of not having considered all of the kinds of roles played. Similarly, > settling on a single property to reference the "agent" performing the role > might be better than using arbitrary properties from different classes > depending on where the role is referenced from. (In fact, you reference the > same role from different entities, so context can't really be used either). > > We don't want to be at either extreme. We don't want overly general slots like 'agent, 'performer' and 'object' as the only slots. Similarly, we don't want slots like quarterback, runningback, etc. > The schema for hasRole has domainIncludes and rangeIncludes reversed. > > In the appendix, you site the use of @context as a (temporary) means of > describing the range of hasRole to be an entity, not a literal. You could > eliminate the context by using an expanded form: > > { > "@context": "http://schema.org/", > "@type": "Movie", > "name": "Ghostbusters", "hasRole": { > "@type": "MovieRole", > "@id": "movierole_678", > "characterName": "Dr. Peter Venkman", > "actor": { > "@type": "Person", > "name": "Bill Murray", > "hasRole": {"@id": "movierole_678"} > } > } > } > > But, I prefer to use a different property, as "hasRole" does not seem to > me to be symetric. Better than defining inverses of every property is to > define an inverse alias in the (forthcoming) context. For example: > > Agree. > { > "@context": ["http://schema.org/", { > "inRole": {"@reverse": "hasRole"} > }, > "@type": "Movie", > "name": "Ghostbusters", "hasRole": { > "@type": "MovieRole", > "@id": "movierole_678", > "characterName": "Dr. Peter Venkman", > "actor": { > "@type": "Person", > "name": "Bill Murray", > "inRole": "movierole_678" > } > } > } > > This uses the same property "hasRole", but defines a reverse term which > will expand, flatten or transform to RDF using the inRole property. > > Great to see progress on this issue! > > Gregg > > >> From the wiki, "For example, when we say that a Person was an actor in > > a Movie, we might want to mention their characterName too. When we say > > that a SportsTeam has a Person as an athlete, we might want to mention > > the position that they play, or the time period in which they > > fulfilled that role.". > > > > I freely acknowledge that PDF isn't the best way to share markup/code > > snippets and will copy those into Wiki. However we wanted to get the > > draft out asap. > > > > Here's a quick example extracted from the doc, expressed in JSON-LD. > > We want to elaborate on a basic description, so here is the mostasic > > version first, followed by the Role-based richer version: > > > > { > > "@context": "http://schema.org/", > > "@type": "AmericanFootballTeam", > > "name": "San Francisco 49ers", > > "athlete": { > > "@type": "Person", > > "name": "Joe Montana" > > } > > } > > > > Extended version using Role: > > > > { > > "@context": "http://schema.org/", > > "@type": "AmericanFootballTeam", > > "name": "San Francisco 49ers", > > "hasRole": { > > "@type": "AmericanFootballRole", > > "@id": "role321", > > "startDate": "1979", > > "endDate": "1992", > > "position": "Quarterback", > > "athlete": { > > "@type": "Person", > > "name": "Joe Montana", > > "hasRole": "role321" > > } > > } > > } > > > > Effectively we interpose a new node in the graph. Instead of > > > > SanFrancisco49ers ---athlete---> JoeMontana > > > > We have > > > > SanFrancisco49ers --hasRole---> [role321] --athlete---> JoeMontana. > > > > There are a few nearby designs that may be worth discussion here. If > > we wanted to make things simpler for publishers, we could remove the > > hasRole reference from JoeMontana back to the Role. However this also > > makes it harder for consuming applications to understand Role-based > > modeling across all domains. Another approach would be to use > > different property names for relating the 'subject' and 'predicate' > > entities. The appendix in the full proposal document elaborates on > > some of these options. I should also note for those of you using the > > JSON-LD playground or other generic tools that the above markup needs > > some tweaks, since schema.org doesn't yet publish a @context file. > > Again, the document has details of a workaround. > > > > Please take a look. This is quite an important spec for schema.org as > > it has impact across all domains, so it is important to find the right > > balance between ease of adoption for publishers, expressivity, ease of > > processing etc. > > > > cheers, > > > > Dan > > > > >
Received on Wednesday, 26 March 2014 20:00:38 UTC