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

Re: schema.org Roles design

From: Dan Brickley <danbri@google.com>
Date: Wed, 26 Mar 2014 22:22:32 +0000
Message-ID: <CAK-qy=7CaXY=US4gw_rmTWE1NP2cd4EFZfUp_FuYss79D-EtBg@mail.gmail.com>
To: Aaron Bradley <aaranged@gmail.com>
Cc: Jarno van Driel <jarno@quantumspork.nl>, Jason Douglas <jasondouglas@google.com>, Guha <guha@google.com>, Gregg Kellogg <gregg@greggkellogg.net>, W3C Web Schemas Task Force <public-vocabs@w3.org>
On 26 March 2014 21:55, Aaron Bradley <aaranged@gmail.com> wrote:
> I'm baffled by @id as well.  Forget the RDFa/microdata/JSON-LD syntax
> differences for a moment, I've read the proposal but still don't know from
> whence the the @id values arise.
> In the PDF where does...
> @id "role321" come from? (e.g.1)
> @id "movierole_678" come from? (e.g. 2)
> @id "edurole25151" come from? (e.g. 3)
> Are these arbitrarily assigned by the coder?  Are these serial?  And are
> they resolvable to an IRI?
> And are they integral to the Role/hasRole proposal - that is, does
> everything break if they're not employed?  Am I correct in reading @ID in
> e.g. 1 ("role321") is the necessary entity referred to in order to have the
> "athlete property applied to the Role, instead of to a Team"?

They're arbitrary (in this example anyway), and serve only to allow a
reference from a subtree of the json markup back to something
described 'higher up'.
 Nothing stops them being more widely used IDs, or randomly generated.
As you say it is all about tying together the entity references.

I believe it can also be achieved with a @reverse. But I tried and I
figured it was more confusing to introduce the idea at this stage. I
am also not expert in all the representational subtleties of JSON-LD,
so I went for something 'simple' to start with. It may be we can find
a cleaner alternative.

Here is as far as I got with removing the need for an @id on the
MovieRole so that an inRole property of the Bill Murray Person could
point to the Role:

1. We imagine inRole as a link from a Thing (e.g. Person) *to* the Role.
2. We define a @reverse of that called roleIn (an ad hoc name, but
just testing here).
3. We replace write "roleIn" where "actor" was previously.
4. Yes, we now have a problem for how to represent the "actor"
relationship. Possibly JSON-LD has a way.

    "@context": [
            "roleIn": {
    "@type": "Movie",
    "name": "Ghostbusters",
    "hasRole": {
        "@type": "MovieRole",
        "characterName": "Dr. Peter Venkman",
        "roleIn": {
            "@type": "Person",
            "name": "Bill Murray"

I'll look into markup examples (rdfa/microdata) tomorrow. If there is
a way in JSON-LD to give a list of properties between two entities
this would be simpler (Gregg?). For e.g. I think in RDF we can just
write something like,

<span ...ghostbusters here
 <span property="actor roleIn">
   <span ...billmurray here">


<span ...ghostbusters here
 <span property="actor" rev="inRole">
   <span ...billmurray here

Gregg, can you help untangle this?

Received on Wednesday, 26 March 2014 22:23:02 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:29:38 UTC