How can structured data give a relationship a role and date range?

The Citead team, updated

In short. Use a nested Schema.org Role object to combine roleName with startDate and endDate on a relationship.

Definition: Schema.org's Role type adds information to a relationship or property. A nested Role object can name the role with roleName and describe its period with startDate and endDate.

Key facts

  • Schema.org's Role definition describes a Role as additional information about a relationship or property, attached to a Role entity and connected to the main entities through properties such as member or actor.
  • roleName names a role played, performed or filled by a person or organization. Schema.org expects a Text or URL value.
  • startDate gives the start date and time of an item in ISO 8601 date format, with Date or DateTime as expected value types.
  • endDate gives the end date and time of an item in ISO 8601 date format, with Date or DateTime as expected value types.
  • The W3C JSON-LD specification defines JSON-LD as a JSON-based format for serializing Linked Data and describes a context as a way to map keys to IRIs.

How does Role qualify a relationship?

Schema.org defines Role as a type for additional information about a relationship or property. Its definition gives a member relationship between a sports team and a player as an example, then explains that properties such as member or actor can point to a Role entity. The relationship property remains the connection between the main entities, while the nested object describes the role attached to that connection.

The value of a relationship property therefore needs to be an object when the relationship has role metadata. The Role object can contain the person or organization at the inner relationship property, together with the role name and time boundaries. Schema.org's page lists endDate, roleName and startDate among Role's properties.

Which properties define the role and period?

roleName carries the label for the part played by a person or organization. Schema.org gives inker, penciller, letterer and Quarterback as examples of role names. The property accepts text or a URL, so the value can be a readable label or a linked identifier.

startDate and endDate carry the two boundaries. Their definitions describe a date and time in ISO 8601 date format, and each property lists Date and DateTime as expected value types. A year-only value appears in Schema.org's own relationship example, where 1979 starts the role and 1992 ends it. A full date or date and time can be used when the source records that level of precision.

How is the relationship written in JSON-LD?

JSON-LD uses a JSON object for the nested role. The W3C specification describes JSON-LD as a syntax for Linked Data in JSON and says that a context maps keys to IRIs. The Schema.org example uses https://schema.org as its context and puts an OrganizationRole object inside the team's member property.

{
  "@context": "https://schema.org",
  "@type": "SportsTeam",
  "name": "San Francisco 49ers",
  "member": {
    "@type": "OrganizationRole",
    "member": {
      "@type": "Person",
      "name": "Joe Montana"
    },
    "startDate": "1979",
    "endDate": "1992",
    "roleName": "Quarterback"
  }
}

Schema.org defines OrganizationRole as a subclass of Role used for roles within organizations. The example consequently identifies the team member as a Person, identifies the role object as an OrganizationRole, and places the three qualifying properties on that role object.

What should be checked in the markup?

The relationship property should contain the Role object, and the person or organization should be the value of the corresponding inner relationship property. roleName, startDate and endDate then belong at the same level inside that Role object. The vocabulary pages specify text or URL for roleName, and Date or DateTime for each date property. The date values follow the ISO 8601 format named by Schema.org.

FAQ

Can Role be used without a more specific subtype?

Yes. You can use the Role type when it matches the relationship. Schema.org also documents OrganizationRole as a Role subclass for roles within organizations.

What date format should you use?

Use the ISO 8601 date format named by Schema.org. You can supply a Date or DateTime value for startDate and endDate.

Where do the dates go?

Put them on the nested Role object that is the value of the relationship property. You can place roleName, startDate and endDate beside the inner member or actor value, as in Schema.org's JSON-LD example.

Sources

  1. Schema.org, "Role", 2026-09-16
  2. Schema.org, "roleName", 2026-09-16
  3. Schema.org, "startDate", 2026-09-16
  4. Schema.org, "endDate", 2026-09-16
  5. Schema.org, "OrganizationRole", 2026-09-16
  6. W3C, "JSON-LD 1.1", 2020-07-16

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark