No one size fits all in representing the relationship between people and organizations.
In some cases, a simple binary relation is enough, e.g. a memberOf property linking an organization and a person. In other cases, a complex n-ary relation is required, e.g. to describe the duration of the person’s membership; in such cases, we create a new class to represent the relation, e.g. a Membership class, and attach properties to it, like duration, to describe the relationship between the person and the organization.
According to this data specification, a person is a member of an organization, and may optionally hold a post in that organization through their membership, as illustrated by the class diagram below.

The Membership class should have properties for:
label
Chairman of the XYZ Party
the role that the member fulfills in the organization
Chairman
the person (or organization) that is a member of the organization
John Doe
the organization in which the person (or organization) is a member
XYZ Party
the post held by the member in the organization
Chairman of the XYZ Party
the organization on whose behalf the person is a member of the organization
Member of the W3C Open Government Community Group on behalf of XYZ Inc.
the geographic area to which the membership is related
Member of Parliament for Avalon
the date on which the relationship began
since 2000
the date on which the relationship ended
January 1, 2013
the means of contacting the member of the organization
1 Main Street
Anytown, USA
555-555-0100
[email protected]
external links
A URL to a document about the membership.
Briefly, the survey of existing specifications concludes that only the Organization ontology offers a rich membership model for describing the relation between people and organizations. Given the complex encoding of time intervals in RDF, the schema:validFrom and schema:validUntil pair is used instead of org:memberDuring, an alternative described by the original developers of the Organization ontology.
| Term | Mapping | Definition |
|---|---|---|
| Membership | org:Membership |
A relationship between a member and an organization |
| label | skos:prefLabel |
A label describing the membership |
| role | org:role |
The role that the member fulfills in the organization |
| member | org:member1 |
The person or organization that is a member of the organization |
| organization | org:organization1 |
The organization in which the person or organization is a member |
| post | opengov:post |
The post held by the member in the organization |
| on behalf of | opengov:onBehalfOf |
The organization on whose behalf the person is a member of the organization |
| geographic area | opengov:area |
The geographic area to which the membership is related |
| start date | schema:validFrom |
The date on which the relationship began |
| end date | schema:validUntil |
The date on which the relationship ended |
| contact detail | opengov:contactDetail |
A means of contacting the member of the organization |
| external links | rdfs:seeAlso |
A URL to a document about the membership |
1. The Organization ontology defines the inverse property org:hasMembership.
A membership relation cannot exist without both a member and an organization. All memberships must assign values to either member, person, or person_id and to either organization, organization_id, post or post_id.
JSON differences from other RDF serializations:
label is used instead of prefLabel, to be consistent with the ContactDetail class.role property is a string, instead of an org:Role.person or person_id is used in the common case of relating a person to an organization. The term member may be used to relate either a person or an organization to an organization (see an example).start_date and end_date2 are used instead of validFrom and validUntil, for backwards compatibility and for better semantics.links is used instead of seeAlso and is serialized as an array of link objects.2. With respect to reuse, the terms start_date and end_date are used in the Participation ontology and others.
None.