Basic Principles

nodegoat is built to facilitate research projects in the humanities. nodegoat does this by focusing on time, place, and relationships. Data in the humanities is always situated in spatial and temporal contexts, so you need to be able to contextualise every object and relationship in time and space.

Objects & Sub-Objects  

An Object can be a thing like a person or a painting. A Sub-Object defines an aspect of an Object that has a temporal and spatial dimension. By assigning multiple Sub-Objects to a single Object, you are able to capture the complete biography of an Object.

For the Object of a 'Person' you can work with three Sub-Objects: 'Birth', 'Place of Residence', and 'Death'. This allows you to store one Object, for example 'Jacob Grimm', and use these Sub-Objects to state that he was born in Hanau am Main on 04-01-1785, that he lived in Marburg and der Lahn from 1801 to 1805, in Kassel from 1805 to 1830, in Göttingen from 1830 to 1840, and that he lived in Berlin from 1840 until his death on 20-09-1863.

After you have implemented this data model, you are able to enter this data as one Object with six Sub-Objects:

Once you have stored this, you can run the geographical visualisation to see the temporal and spatial developments of this single Object:

For the Object of a 'Artwork' you can work with three Sub-Objects: 'Production', 'Ownership', and 'Exhibition'. This allows you to capture the complete provenance of an artwork.

Entering multiple Objects allows you to build up a temporally and spatially attributed dataset that you can use to analyse diffusion patterns, knowledge transfer, or migration movements. Explore various use cases to learn more about how you can use nodegoat for your research projects.

Object Types  

Objects are grouped by means of their typology. The Objects of 'Jacob Grimm' and 'Dorothea Grimm' belong to the Type 'Person'. The Objects 'Knee length Figure of a Man in an Oriental Dress' and 'The Night Watch' are of the Type 'Painting'. When you create your data model, you begin by defining your Types of Objects.

How you define a Type of Objects is up to you. You can choose to describe people by a given name and a family name, or by means of their region of origin and birth date.

Object Descriptions can be modelled as a simple string of text (e.g. a given name 'Dorothea'), or as a reference to another Object.   When describing a painting, you do not enter the name 'Rembrandt van Rijn' as the artist, but you make a reference to an Object of the Type 'Person'.

Once you create a reference from an Object of the Type 'Artwork' to an Object of the Type 'Person', the reference can be explored from both directions, at any time. This means that once you open an Object of the Type 'Person', you immediately see an overview of the cross-references of this Object. Opening the Object of 'Rembrandt van Rijn' produces a list of cross-referenced Objects in Type 'Artwork'.

These Objects and their references can also be visualised as diachronic social network visualisations:

To find all the artists in your project, you make a filter in the Type 'Person' that finds all the people who have been referenced as an artist in the Type 'Artwork'. This means that you do not need to classify the people in your project explicitly as 'artist' or 'writer' as they self-identify as such by means of the references that have been made (i.e. a creator of an artwork, or writer of a book).


You can define your own Categories to categorise Objects. You could, for example, categorise the artworks in your project by using Categories like 'sketch', or 'oil painting'.


Similar categories can be grouped in a Classification. You can model a Classification with the name 'Kind of Artwork' to be able to categorise the artworks in your project. In the Data section of your environment, you add Categories like 'sketch', or 'oil painting' to this Classification, and make a reference to one or multiple Categories from an Object of the Type 'Artwork'.