Unary relationship

Topic Maps allows to define unary associations. If we want to say in Topic Maps that the "turandot" is an unfinished work then we can use a unary association like the following:

unfinished(turandot : work) [LTM syntax]

In RDF we do not have unary relations. Typically we model a situation like this by defining the resource "turandot" as instance of a specific set or by using a boolean binary association. The problem is how to translate this kind of assertions from Topic Maps to RDF obtaining roundtripping. The approach for translating unary associations is that of defining a special class with the semantics of describing a particular characteristic that its instances have.

We define two disjoint classes for guiding the unary associations translation:

  • rdftm:NonEssentialClass, which represents the semantic of unary associations.
  • rdftm:EssentialClass.

The rules for translation are as follows:


  • A class which is rdfs:subClassOf rdftm:NonEssentialClass translates to a Topic Maps unary relation.
  • The resource, which is instance of that class becomes the role player of the corresponding unary relation.


  • A unary relation becomes a class in RDF, which is rdfs:subClassOf rdftm:NonEssentialClass.
  • The topic which is the role player of the unary relation becomes a resource, which is instance of the class created.

unfinished(turandot : work)

maps to

ex:unfinished rdfs:subClassOf rdftm:NonEssentialClass

_:turandot rdf:type _:work

_turandot rdf:type ex:unfinished



  • how do we handle role types
  • it may be better to use binary relations with boolean values:
    • how do we handle the "false" value?

Revision: r1.4 - 01 Nov 2005 - 19:35 - ValentinaPresutti
Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Fabio's Wiki? Send feedback