WebSchemas/RolesPattern
This page tracks a proposal from the schema.org team for modeling various kinds of roles and contributions in a way that allows rich qualification. 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.
To achieve this, a type "Role" is proposed, alongside new properties, "roleSubject", "roleProperty" and "roleObject".
Full details:
- PDF (May 8th 2014 final draft), also available as a google doc. (announcement)
PDF (Mar 26th 2014 draft), also available as a google doc.(announcement)
Example 1
For example: JoeMontana was an athlete in the FootballTeam SF49ers, between a startDate of 2002 and an endDate of 2008; his position was that of QuarterBack.
{
"@context": "http://schema.org/",
"@type": "AmericanFootballRole",
"roleSubject": {
"@type": "AmericanFootballTeam",
"name": "San Francisco 49ers"
},
"roleProperty": {
"http://schema.org/athlete"
},
"roleObject": {
"@type": "Person",
"name": "Joe Montana"
},
"startDate": "1979",
"endDate": "1992",
"position": "Quarterback"
}
Example 2
Ghostbusters actor BillMurray
{
"@context": "http://schema.org/",
"@type": "MovieRole",
"roleSubject": {
"@type": "Movie",
"name": "GhostBusters"
},
"roleProperty": {
"http://schema.org/actor"
},
"roleObject": {
"@type": "Person",
"name": "Bill Murray"
},
"characterName": "Dr. Peter Venkman"
}
Old Examples (from initial design sketches)
hasRole/inRole in RDFa
Note that this example is an exploratory variation on the main proposal. It distinguishes between 'hasRole' and 'inRole'.
The original design circulated March 26th had a complication: it wanted a role-oriented property linking the Movie to the Role, and also the Person to the Role. To achieve this, local identifiers for the role were used (in JSON-LD syntax). Commentators on the list noted that this introduced new complexities for publishers. However it is hard to represent a complex graph structured without ID-based references. This example shows that it can be done in RDFa 1.1 notation, although this is also complex in a different way:
<div vocab="http://schema.org/" typeof="Movie">
<span property="name">Ghostbusters</span>
<div property="hasRole" typeof="MovieRole">
<span property="characterName">Dr. Peter Venkman</span>
<div rel="actor" rev="inRole" typeof="Person">
<span property="name">Bill Murray</span>
</div>
</div>
</div>