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:member 1 |
The person or organization that is a member of the organization |
organization | org:organization 1 |
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_date
2 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.