This is an archive of an inactive wiki and cannot be modified.

Capturing relationships between labels

This page provides some background and discussion relating to various types of links between labels found in some thesauri, and also in other types of concept scheme. This page relates to ISSUE-26: RelationshipsBetweenLabels.

SKOS allows to represent semantic relationships (broader, related) between concepts. It also allows to represent relationships between concepts and labels (prefLabel, altLabel). However, there is nothing proposed in SKOS to capture links between labels themselves, a configuration which sometimes happens in concept schemes.


notice: these proposals, more recent that the wiki page below, do not necessarily propose the same solutions. Roughly proposals one and two are comparable to the second solution of this page, while proposal three is comparable to the third solution.


The need for links between labels associated to concepts, whether preferred or alternative ones, occurs in the following situations:

Possible modelling approaches

SKOS current version does not provide support for representing links between labels. Worse, SKOS current version prohibits designing extensions to SKOS vocabulary that would cope with this problem, e.g. by introducing a simple abbreviation RDF properties. Such extensions would indeed require labels to be modeled as RDF resource, which is contradictory to current SKOS specifying RDFS literal as the range of its labelling properties (e.g. skos:prefLabel).

First solution: Term-as-class

This solution is described e.g. in Mark van Assem's change proposal. Its goal is to provide a way to represent "terms" as instances of a class so that additional properties can be attached to them. It basically consists of:

An example of extension to a SKOS vocabulary using this solution for a specific concept scheme could be:

ex_SKOSext:acronym rdf:type rdf:property;
  rdfs:domain skos:Term;
  rdfs:range skos:Term.

ex_voc:c rdf:type skos:Concept;
  skos:prefTerm ex_voc:t;
  skos:altTerm ex_voc:u.

ex_voc:t rdf:type skos:Term;
  rdfs:label "Food and Agriculture Organization";
  ex_SKOSext:acronym ex_voc:u.

ex_voc:u rdf:type skos:Term;
  rdfs:label "FAO".

Notice: this example uses rdfs:label as the property linking the term object to the literal which "embodies" it, but another property might be coined and choose by the SKOS vocabulary for this purpose. Whatever be the name, convenient semantics should be enforced: a Term shall not have more than one rdfs:label per language.

Second solution: link as annotation based on n-ary relation pattern

This is the solution proposed by Alistair's note on annotation patterns, adapted to the special problem of creating links between terms.

It basically consists of:

An example of extension to a SKOS vocabulary using this solution for a specific concept scheme could be:

ex_SKOSext:AcronymRelation rdfs:subClassOf skos:LabelRelation.

ex_voc:c rdf:type skos:Concept;
  skos:prefLabel "Food and Agriculture Organization";
  skos:altLabel "FAO".

ex_voc:a rdf:type ex_SKOSext:AcronymRelation;
  skos:relationSubject "Food and Agriculture Organization";
  skos:relationObject "FAO".

Third solution: keeping standard SKOS and Term-as-class solutions co-existing

@@ TODO: retrieve reference (solution was mentioned in a mail by Mark) @@

The goal of this alternative is to stay compatible with current simple labelling model, while allowing to represent links between labels. For that it is expected that current SKOS labelling pattern and Term-as-class one can co-exist, together with bridge rules allowing to convert data from one model to the other.

This can be done by:

The interpretation of skos:prefLabel shall coincide with the (mathematical) composition of the two relations implied by the interpretations of skos:prefTerm and rdfs:label

Comparison between two main solutions


Many discussion elements on representing annotation on labels are also relevant for the problem of representing links between labels: