Reification (computer science)

By means of reification, something that was previously implicit, unexpressed, and possibly inexpressible is explicitly formulated and made available to conceptual (logical or computational) manipulation.

Informally, reification is often referred to as "making something a first-class citizen" within the scope of a particular system.

In reflective languages, reification data is causally connected to the related reified aspect such that a modification to one of them affects the other.

Therefore, the reification data is always a faithful representation of the related reified aspect [clarification needed].

Reification, at least partially, has been experienced in many languages to date: in early Lisp dialects and in current Prolog dialects, programs have been treated as data, although the causal connection has often been left to the responsibility of the programmer.

In Smalltalk-80, the compiler from the source text to bytecode has been part of the run-time system since the very first implementations of the language.

The purpose of reifying a relationship is to make it explicit, when additional information needs to be added to it.

An instance of IsMemberOf is a relationship that represents the fact that a person is a member of a committee.

The figure below shows an example population of IsMemberOf relationship in tabular form.

UML provides an association class construct for defining reified relationship types.

Note that the described triple (subject predicate object) itself is not implied by such a reification quad (and it is not necessary that it actually exists in the database).

A more general approach to reification is to create an explicit new class and n new properties to represent an n-ary relation, making an instance of the relation linking the n individuals an instance of this class.

This approach can also be used to represent provenance information and other properties for an individual relation instance.

It does not state that the subject of the statement is the URIref itself (i.e., a string beginning with certain characters), as quotation would.

Example population of IsMemberOf relationship in tabular form. Person P1 is a member of committees C1 and C2. Person P2 is a member of committee C1 only.
The UML class diagram for the Membership example.