Introducing ‘Role’ – Schema.org • Blog
Introducing ‘Role’
June 16, 2014
To date, schema.org has supported relatively simple relations between entities.  For example, if we wanted to describe Joe Montana as an athlete on the San Francisco 49ers team, we might represent this using the newly proposed “athlete” property of a SportsTeam.
This is a pretty clear structure, but it doesn’t offer anywhere to attach further information about the relationship.  Building on our example, let’s say we wanted to also indicate that Joe Montana only played for the San Francisco 49ers from 1979 to 1992 and that his position was “Quarterback”.
To accomplish this, we introduce a new type called
Role
.  The new Role type serves to elaborate or qualify these more simple relationships. We have been motivated by concrete problems around organizational affiliations such as those occurring in music and sports. In both cases it is important to specify time periods in a sporting or musical career.
To specify the role being played, the Role entity reuses the initial property from, and then extends the semantics of the relationship by way of additional properties like “
startDate
“.
In essence, we are replacing the “athlete” property’s original value (a
Person
node) with an intermediary node (Role). The original node is moved one hop away and becomes the value of the re-used “athlete” property. After considering several designs, we chose this approach as the simplest.
The Role schema allows algorithms to collapse down to the simple graph from a more complicated Role-based description. In the example above, we can assume Joe Montana is a valid value for the “athlete” property on the 49ers SportsTeam. More formally, if some Role R has incoming property P from entity A, and A also has an outgoing occurrence of property P to entity B, we can assume it is reasonable to describe A as having a ‘P’ property whose value is B.
These details are more important to consumers of schema.org than publishers, as they allow for backwards compatibility, while also permitting any schema.org property to be used with roles.
The Role type (much like URL) can be used with any schema.org types. We will not clutter the site with statements emphasizing this, except in cases (e.g. around sports and music) where the Role mechanism is particularly useful. We have added examples of Role usage in Microdata, RDFa and JSON-LD notation to the
site
, and look forward to seeing more detailed schema.org descriptions using this mechanism.
As we continue to evolve the site we expect to add more properties and sub-types that have been designed to work with the Role type. For now, we introduce two kinds of Role:
OrganizationRole
and
PerformanceRole
. In the sporting example shown above, the Role node (the red circle) would be an
OrganizationRole
and in addition to defining the “startDate” and “endDate” for that role, we might also define indicate Joe Montana was a quarterback by using the “
namesPosition
” property. Similarly, the
PerformanceRole
type provides a
characterName
property that might be used to describe Bill Murray’s role in Ghostbusters. The Role pattern works here too. See the
schema.org site
for full RDFa, Microdata and JSON-LD markup, including the Ghostbusters example shown here:
Vicki Tardif Holland (Google)
Jason Johnson (Microsoft)
Share this:
Share on X (Opens in new window)
Share on Facebook (Opens in new window)
Like this:
Like
Loading…
Leave a Reply
Cancel reply
Get updates
Discover more from Schema.org • Blog
Subscribe now to keep reading and get access to the full archive.
Continue reading
%d