An organization ontology

Last update:
Dave Reynolds (Epimorphics Ltd)


This document describes a core ontology for organizational structures, aimed at supporting linked-data publishing of organizational information across a number of domains. It is designed to allow domain-specific extensions to add classification of organzations and roles, as well as extensions to support neighbouring information such as organizational activities.

Status of this document

This is an editor's draft without any formal standing. It is not endorsed by any organisation and is not, at present, part of any standards track process. Its use of the W3C namespace does not imply W3C endorsement.

Changes to the ontology will be announced on the public-lod mail list.

Table of Contents

1. Introduction

This ontology was original motivated by a need to publish information relating to government organizations as part of the initiative. We felt that the best approach was to develop a small, generic, reusable core ontology for organizational information and then let developers extend and specialize it to particular domains.

The ontology gives minimal basic terms to support representation of:

The ontology does not provide category structures for organization type, organization purpose or roles. Different domains will have different requirements for classification of such concepts. Instead the ontology provides just the core base concepts needed to allow extensions to add specific sub-class structures or classification schemes as required.

Overview of ontology

Diagram dipicting core classes and relationships


The namespace for the ontology is:

Design notes

For background to the approach taken in developing the ontology see: blog notes

2. Organizational structure

Class: org:Organization (subClassOf foaf:Agent)
Represents a collection of people organized together into a community or other social, commercial or political structure. The group has some common purpose or reason for existence which goes beyond the set of people belonging to it and can act as an Agent. Organizations are often decomposable into hierarchical structures. It is recommended that SKOS lexical labels should be used to label the Organization. In particular skos:prefLabel for the primary (e.g. legally recognized name), skos:altLabel for alternative names (trading names, colloquial names) and skos:notation to denote codes from a code list. Alternative names: Collective Body Org Group

Class: org:FormalOrganization (subClassOf org:Organization, foaf:Organization; superClassOf gr:BusinessEntity)
An Organization which is also a Legal Entity, it is recognized as having rights and responsibilities in the world at large, in particular legal jurisdictions. Examples include a Corporation, Charity, Government or Church. Note that this is a super class of gr:BusinessEntity and it is recommended to use the GoodRelations vocabulary to denote Business classifications such as DUNS or NAICS. Alternative names: LegalOrg LegalEntity Organization

Class: org:OrganizationalUnit (subClassOf org:Organization)
An Organization such as Government Department or University Support Unit which is part of some larger FormalOrganization and only has full recognition within the context of that FormalOrganization, it is not a Legal Entity in its own right. Units can be large and complex containing other Units and even FormalOrganizations. Alternative names: OU Unit Department

Property: org:subOrganizationOf (org:Organization -> org:Organization)
Represents hierarchical containment of Organizations or Organizational Units; indicates an organization which is a sub-part or child of this organization. Inverse of org:hasSubOrganization. Alternative names: subOrgOf

Property: org:hasSubOrganization (org:Organization -> org:Organization)
Represents hierarchical containment of Organizations or OrganizationalUnits; indicates an Organization which contains this Organization. Inverse of org:subOrganizationOf. Alternative names: hasSubOrg

Property: org:purpose (org:Organization -> *)
Indicates the purpose of this Organization. There can be many purposes at different levels of abstraction but the nature of an organization is to have a reason for existence and this property is a means to document that reason. An Organization may have multiple purposes. It is recommended that the purpose be denoted by a controlled term or code list, ideally a skos:Concept. However, the range is left open to allow for other types of descriptive schemes. It is expected that specializations or application profiles of this vocabulary will constrain the range of the purpose. Alternative names: remit responsibility (esp. if applied to OrganizationalUnits such as Government Departments).

Property: org:hasUnit (org:Organization -> org:OrganizationalUnit)
Indicates a unit which is part of this Organization, e.g. a Department within a larger Organization. Inverse of org:unitOf.

Property: org:unitOf (org:OrganizationalUnit -> org:Organization)
Indicates an Organization which is part of this Unit is a part, e.g. a Department within a larger Organization. This is the inverse of org:hasUnit.

Property: org:classification (org:Organization -> skos:Concept)
Indicates a classification for this Organization within some classification scheme. Extension vocabularies may wish to specialize this property to have a range corresponding to a specific skos:ConceptScheme. This property is under discussion and may be revised or removed - in many cases organizations are best categorized by defining a sub-class hierarchy in an extension vocabulary.

Property: org:linkedTo (org:Organization -> org:Organization)
Indicates an arbitrary relationship between two organizations. Specializations of this can be used to, for example, denote funding or supply chain relationships.

Organizational hierarchy

In many organizations there is a hierarchy of unit structures. For example we might see a containment hierarchy like:


The intention is that this would be added in custom extensions since they are specific to the organization at hand. This can easily be done by subclassing org:OrganizationalUnit, specializing org:hasSubOrganization and/or using owl:allValuesFrom restrictions on the new subclasses.

Organizational classification

In a number of circumstances we wish to classify organizations. There are many approaches that could be taken for this. It can be based on the legal structure under which the organization operates. For example in UK legislation there are defined notions of Partnership, Limited Company (public, private) etc that can be used as a basis for classification. Alternatively organizations can be classified by the service they provide (e.g. Educational, Manufacturing, LegalService etc).

The core organization ontology is neutral with respect to such choices. It is anticipated that applications to particular domains will introduce subclasses of org:Organization to reflect the domain requirements.

Note that the core supports labelling an organization according to some external classification scheme through use of the org:classification property. This is appropriate for cases where the labelling is not intrinsic to the organization and doesn't affect other aspects of the modelling. This is not always appropriate. For example, only Charities have CharityNumbers so it would be better to represent a Charity as a subClassOf FormalOrganization rather than via a taxonomic labelling.

3. Reporting relationships and roles

Property: org:memberOf (foaf:Agent -> org:Organization)
Indicates that a person is a member of the Organization with no indication of the nature of that membership or the role played. Extensions can specialize this relationship to indicate particular roles with the organization.

Property: org:reportsTo (foaf:Agent -> foaf:Agent)
Indicates a reporting relationship as might be depicted on an organizational chart. The precise semantics of the reporting relationship will vary by organization but is intended to encompass both direct supervisory relationships (e.g. carrying objective and salary setting authority) and more general reporting or accountability relationships (e.g. so called dotted line reporting).

Class: org:Role subClassOf skos:Concept
Denotes a role that a Person or other Agent can take in an organization. Instances of this class describe the abstract role; to denote a specific instance of a person playing that role in a specific organization use an instance of org:Membership. It is common for roles to be arranged in some taxonomic structure and we use SKOS to represent that. The normal SKOS lexical properties should be used when labelling the Role. Additional descriptive properties for the Role, such as a Salary band, may be added by extension vocabularies.

Class: org:Membership
Indicates the nature of an Agent's membership of an organization. Represents an n-ary relation between an Agent, an Organzation and a Role. It is possible to directly indicate membership, independent of the specific Role, through use of the org:memberOf property.

Property: org:member (org:Membership -> foaf:Agent)
Indicates the Person (or other Agent including Organization) involved in the Membership relationship. Inverse of org:hasMembership

Property: org:organization (org:Membership -> org:Organization)
Indicates Organization in which the Agent is a member.

Property: org:role (org:Membership -> org:Role)
Indicates the Role that the Agent plays in a Membership relationship with an Organization.

Property: org:hasMembership (foaf:Agent -> org:Membership)
Indicates a membership relationship that the Agent plays. Inverse of org:member.

Property: org:memberDuring (org:Membership -> owlTime:Interval)
Optional property to indicate the interval for which the membership is/was valid.

Property: org:roleProperty (org:Role -> rdf:Property)
This is a metalevel property which is used to annotate an org:Role instance with a sub-property of org:memberOf that can be used to directly indicate the role for easy of query. The intended semantics is a Membership relation involving the Role implies the existence of a direct property relationship through an inference rule of the form: { [] org:member ?p; org:organization ?o; org:role [org:roleProperty ?r] } -> {?p ?r ?o}.

Property: org:headOf (foaf:Person -> org:Organization) subPropertyOf org:memberOf
Indicates that a person is the leader or formal head of the Organization. This will normally mean that they are the root of the org:reportsTo (acyclic) graph, though an organization may have more than one head.

Property: org:remuneration (org:Membership ->)
Indicates a salary or other reward associated with the role. Typically this will be denoted using an existing representation scheme such as gr:PriceSpecification but the range is left open to allow applications to specialize it (e.g. to remunerationInGBP).


In some applications then it is sufficient to represent the role of an individual within an Organization by specializations of org:memberOf, as in the builtin example org:headOf.

However, in general it is advantageous to have an explicit representation of the organizational role (e.g. to enable advertising of a post or for publication of salary ranges associated with the role), this is supported by the org:Role class. The situation of an Agent fulfilling that role within an organization is then expressed through instances of the org:Membership n-ary relation. This also makes it possible to annotate the relationship with qualifying information such as duration, salary, reference to the employment contract and so forth.

For example:

<> a org:FormalOrganization;
    skos:preferredLabel "Epimorphics Ltd" .

eg:ctoRole a org:Role;
    rdfs:label "CTO" .
eg:contract1 a org:Membership;
    org:member <> ;
    org:organization <> ;
    org:role eg:ctoRole;
    org:memberDuring [a owlTime:Interval; owlTime:hasBeginning [
                      owlTime:inXSDDateTime "2009-11-01T09:00:00Z"^^xsd:dateTime]] .

Since this representation can be a little less convenient to query and explore via linked-data browsing tools the core allows both explicit roles and simple direct relations to be used simultaneously. The relationship between the Role resource and the corresponding property can be indicated through the org:roleProperty annotation. Thus we might extend the above example with:

eg:ctoRole a org:Role;
    org:roleProperty eg:ctoOf .
eg:ctoOf a owl:ObjectProperty, rdf:Property ;
    rdfs:label "CTO" ;
    rdfs:subPropertyOf org:memberOf .
  eg:ctoOf <> . 

In practice we antipate tool chains generating the org:Membership instances and a simple closure rule being used to add any corresponding short-cut specializations of org:memberOf.

4. Location

Class: org:Site
An office or other premise at which the organization is located. Many organizations are spread across multiple sites and many sites will host multiple locations. In most cases a Site will be a physical location. However, we don't exclude the possibility of non-physical sites such as a virtual office with an associated post box and phone reception service. Extensions may provide subclasses to denote particular types of site.

Property: org:siteAddress (org:Site -> vcard:VCard)
Indicates a VCard (using the vocabulary) for the site. This can include email, telephone, and geo-location details as well as an address.

Property: org:hasSite (org:Organization -> org:Site)
Indicates a site at which the Organization has some presence even if only indirect (e.g. virtual office or a professional service which is acting as the registered address for a company). Inverse of org:siteOf.

Property: org:siteOf (org:Site -> org:Organization)
Indicates an Organization which has some presence at the given site. This is the inverse of org:hasSite.

Property: org:hasPrimarySite (org:Organization -> org:Site) subPropertyOf org:hasSite
Indicates a primary site for the Organization, this is the default means by which an Organization can be contacted and is not necessarily the formal headquarters.

Property: org:hasRegisteredSite (org:FormalOrganization -> org:Site) subPropertyOf org:hasPrimarySite
Indicates the legally registered site for the organization, in many legal jurisdictions there is a requirement that FormalOrganizations such as Companies or Charities have such a primary designed site.

Property: org:basedAt (foaf:Person -> org:Site)
Indicates the site at which a person is based. We do not restrict the possibility that a person is based at multiple sites.

Property: org:location (foaf:Person -> xsd:string)
Gives a location description for a person within the organization, for example a Mail Stop for internal posting purposes.

5. Projects and other activities

Class: org:OrganizationalCollaboration (subClassOf org:Organization)
A collaboration between two or more Organizations such as a project. It meets the criteria for being an Organization in that it has an identity and defining purpose independent of its particular members but is neither a formally recognized legal entity nor a sub-unit within some larger organization. Might typically have a shorter lifetime than the Organizations within it, but not necessarily. All members are org:Organizations rather than individuals and those Organizations can play particular roles within the venture. Alternative names: Project Venture Endeavour Consortium

6. Historical information

Any aspect of organizational structure is subject to change over time. For the most part this should be handled by an external mechanism such as named graphs. When Organizations change substantially (not simply a change of personnel or internal structure, for example a merger to create a new organization) then the new Organization will typically be denoted by a new URI and we need some vocabulary to describe that change over time and the relationship between the original and resulting resouces. The Event mechanism here gives a generic hook for this, building upon the OPMV Provenance Vocabulary.

Class: org:ChangeEvent (subClassOf opmv:Process)
Represents an event which resulted in a major change to an organization such as a merger or complete restructuring. It is intended for situations where the resulting organization is sufficient distinct from the original organizations that it has a distinct identity and distinct URI. Extension vocabularies should define sub-classes of this to denote particular categories of event. The instant or interval at which the event occurred should be given by `opmv:wasGeneratedAt`, a description should be given by `dct:description`.

Property: org:originalOrganization (org:ChangeEvent -> org:Organization) subPropertyOf opmv:used
Indicates one or more organizations that existed before the change event. Depending on the event they may or may not have continued to exist after the event. Note that in specializing the OPMV vocabulary we are treating an `org:Organization` as an `opmv:Artifact`, which is consistent with the OPM model.

Property: org:resultingOrganization (org:ChangeEvent -> org:Organization) subPropetyOf opmv:wasGeneratedBy
Indicates the organization that resulted from the event. Note that in specializing the OPMV vocabulary we are treating an `org:Organization` as an `opmv:Artifact`, which is consistent with the OPM model.

7. Acknowledgements

This ontology was developed as part of the UK Linked Data Kernel project under the leadership and guidance of John Sheridan (The National Archives). Jeni Tennison provided immensely useful feedback and suggestions on the first draft, which greatly improved its design. The work also took inspiration from a number of other ontologies, particularly the thoughtfully designed Gazette Organization ontology and Proton-top.