So here are my thoughts on roles, building off of the needs I've seen coming out of the events, organization, and athlete work. I see two options available to us.
1. Leverage the existing
schema.org model where roles are defined as contextual properties of the entities they are associated with. For example, a 'CreativeWork' has an 'author' property, which defines the role of author for the creative work. Similarly, you would also have a property for a 'Person' called 'authorOf' (or something similar) which would allow you to define the role in reverse. There are a variety of these defined in Schema.Org and I've provided a list at the end of this thread of what I could find. *1*
We would define the following new properties:
Event.host // would also serve to identify the 'home' team
Event.officiate
SportsTeam.player **
SportsTeam.coach **
Person.playsFor
Person.coachesFor
** the trick w/ this model is that we don't have the ability to define properties of the role, like 'position' of the player, the start date of that player in that position, and the end date
2. Define a new 'Role' class that would define a relationship between an agent (person or organization) and something they are involved with (another person, organization, event, or creative work). It would borrow from the model established via the ‘participation’ schema maintained in
vocab.org /
purl.org.
A Role would be composed of:
- a name for the role
- the start and end date of the role
- the thing that holds the role
- the thing at which the role is held
class: Role
property: name
property: startDate
property: endDate
property: holder [expectedType: Person or Organization]
property: heldAt [expectedType: Person, Organization, Event, or CreativeWork]
Roles would be sub-classed to establish the context of the role, for example: Role -> SportsRole -> PlayerRole, Role -> SportsRole -> CoachRole (a full list at the bottom of this thread *2*)
Person, Organization, Event, and CreativeWork would have a new property called ‘role’ which would define one or more roles associated with that thing.
Here are some examples of how we would leverage this new 'Role' class.
<script
type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "SportsTeam",
"name" : "Seattle
Seahawks",
"role" :
[
{
"@type" :
"CoachRole",
"name" : "Head
Coach",
"holder" : {
"@type" : "Person",
"name" : "Pete
Carroll"
},
"startDate" : "2011",
},
{
"@type" :
"PlayerRole",
"name" :
"Quarterback",
"holder" : {
"@type" : "Person",
"name" : "Russell
Wilson"
}
}
]
}
</script>
<script
type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "Person",
"name" : "Pete Carroll",
"role" : {
"@type" : "CoachRole",
"name" : "Head Coach",
"heldAt" : {
"@type" :
"SportsTeam",
"name" : "Seattle
Seahawks"
}
}
}
</script>
<script
type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "SportsEvent",
"name" : "Seahawks vs.
49ers",
"role" : [
{
"@type" : "HostRole",
"holder" : {
"@type" :
"SportsTeam",
"name" : "Seattle
Seahawks"
"role" : {
"@type" :
"PlayerRole",
"name" :
"Quarterback",
"holder" : {
"@type" :
"Person",
"name" : "Russell
Wilson"
}
}
}
},
{
"@type" :
"PerformerRole",
"holder" : {
"@type" :
"SportsTeam",
"name" : "San Francisco
49ers"
"role" : {
"@type" :
"PlayerRole",
"name" :
"Quarterback",
"holder" : {
"@type" :
"Person",
"name" : "Colin
Kaepernick"
}
}
}
}
]
}
</script>
*2* - proposed initial set of role subclasses
EventRole
AttendeeRole
HostRole
// defines the 'home' team
PerformerRole
OfficiateRole
OrganizationRole
// can also be used in context of an event
SportsRole
PlayerRole
PlayerRole.preferredHand
CoachRole
CorporateRole
OwnerRole
EmployeeRole
BoardRole
EducationRole
StudentRole
TeacherRole
AdminRole
CreativeRole
AuthorRole
DesignerRole
DirectorRole
EditorRole
PerformerRole // actor, singer, contributor
ProducerRole
// person or organization
PublisherRole
// person or organization
CopyrightRole
*1* - existing contextual properties
Organization
Properties
- employee
- founder
- member
- subOrganization
- EducationOrganization.alumni
Person Properties
- affiliation
- alumniOf
- brand
- jobTitle
- memberOf
- owns
- performerIn
- worksFor
Event Properties
- attendee
- performer
- superEvent
- subEvent
CreativeWork
- accountablePerson
- author
- contributor
- copyrightHolder
- creator
- editor
- provider
- publisher
- sourceOrganization
- Movie.actor
- Movie.director
- Movie.producer
- Movie.productionCompany
- Series.musicBy