In a post yesterday at the official schema.org blog, Vicki Tardif Holland (Google) and Jason Johnson (Microsoft) have announced that schema.org has created a way to more richly describe relationships between entities in structured markup. The addition of the "Role" schema allows for the description of more complex relationships than were previously possible. In the post, the authors cite the business need as one that is often found in the domains of entertainment and sports.
For example, in schema.org, it can be asserted that Bill Murray was an actor in the film Ghostbusters [Fig. 1].
That's all well and good, but how can one extend this relationship to include more detail such as the name of the character Mr. Murray played in the film? More on that in a moment.
The 'Role' class has two sub classes that give a bit more of a hint as to how the schema.org team expects these new classes will be used -- 'OrganizationalRole' and 'PerformanceRole'.
The sub classes don't differ much when it comes to named properties, but 'OrganizationRole' has the property "namedPosition" and could be used to describe an athlete's role on a sports team such as "Quarterback." Meanwhile, 'PerformanceRole' includes the property "characterName" and could be used to specify that our example actor, Bill Murray, played the character "Dr. Peter Venkman" in Ghostbusters.
As it says on the Role schema page, "...a Role can be used to say that a 'member' role linking some SportsTeam to a player occurred during a particular time period. Or that a Person's 'actor' role in a Movie was for some particular characterName. Such properties can be attached to a Role entity, which is then associated with the main entities using ordinary properties like 'member' or 'actor'. "
Using properties from Role, and by inserting Role as a node between "Ghostbusters" and "Bill Murray," this can be expanded to specify that Bill Murray played a character named "Dr. Peter Venkman" [Fig. 2].
As with all of the schema.org vocabulary, the data can be expressed using various syntaxes, including microdata, RDFa, and JSON-LD.
Now, should Fred "Curly" Neal be described using PerformanceRole or OrganizationalRole to describe his activity with the Harlem Globetrotters? With typical Semantic Web flexibility, it remains up to the discretion of a given web development team to make such business-critical decisions.
Read the full post here:
Soccer Image: Courtesy flickr/steffen_ramsaier
Figure 2 Image: Courtesy schema.org blog