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.

UML diagram

1. Use cases & requirements

The Membership class should have properties for:

  1. label

    Chairman of the XYZ Party

  2. the role that the member fulfills in the organization

    Chairman

  3. the person (or organization) that is a member of the organization

    John Doe

  4. the organization in which the person (or organization) is a member

    XYZ Party

  5. the post held by the member in the organization

    Chairman of the XYZ Party

  6. 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.

  7. the geographic area to which the membership is related

    Member of Parliament for Avalon

  8. the date on which the relationship began

    since 2000

  9. the date on which the relationship ended

    January 1, 2013

  10. the means of contacting the member of the organization

    1 Main Street
    Anytown, USA
    555-555-0100
    john@example.com

  11. external links

    A URL to a document about the membership.

2. Standard reuse

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.

3. Classes and properties

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.

4. Serialization

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:

  • The term label is used instead of prefLabel, to be consistent with the ContactDetail class.
  • The value of the role property is a string, instead of an org:Role.
  • The term 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).
  • The terms start_date and end_date2 are used instead of validFrom and validUntil, for backwards compatibility and for better semantics.
  • The term 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.

5. Code lists

None.