Skip to content

Principles

Here we explain some of the details of knowledge graphs, nodes, links, similarity, variable projection, etc as they relate to Cronologies.

A Node can represent just about anything, from a single word (or even character), to a piece of media such as an image or video, to a complex entity with many properties, such as a person, place, thing, organization, concept etc.

The Entity Type of a Node describes what kind of thing the node is representing (ie, is it a “person” or a “word”?). Nodes are required to have an Entity Type, but it is ok if the Entity Type is unknown (more on this in [knowledge quest]).

The various other properties of a Node define characteristics of that particular thing. For example, a Person-type Node may have a name, a birthdate, a favorite color, etc. etc. It is not required that each Node of a particular Entity Type have all of the same properties (ie, one Person may have a pet, whereas another does not.) Each property of a node is internally represented as a Link to another Node with a different or same Entity Type. (Yes, even birthdate would map to a specific node that contains the relevant date. In this way, every unique value in a dataset is tracked and statistics on it can be computed easily.)

The Nodes can be connected together using Links. A Link can have a Link Type and represents some relationship between two nodes. For example, if two people are friends, and each person is represented with a node, you could draw a link between them with type Friend. Links also have weights, which represent the strength of that connection, and can take numerical integer values.

As mentioned above, any property of a node can be represented by a link to another node using an appropriate Link Type and Entity Type for the two related nodes. For example, the “name” property of a person will point to a Name-type node that contains the value of the name – ie, “Leonhard Euler”.

Even very basic concepts such as “2 + 3 = 5” can be represented using this node-link-node strategy, with a “5” node being related to a “3” node through a link of type “greater than” with weight 2.

Likewise, quite complicated structures can be represented by allowing each property of the node to be its own node that then points to other nodes, etc. etc. Whether we want to visualize each Node as a single point or as a full subgraph depends on our scope (more on this in maps section.)

(link to section on graph duality here?)

A map is a particular arrangement of nodes and links in space and time. A map is produced by specifying variables to map to axes using some layout strategy.

Variables Variables are the quantities which we base the map off of. These are either properties of nodes or automatically extracted values that can be used for producing a map.

There are a few different kinds of variables that may be worth mentioning:

  • Numeric: (signed, floating-point) numbers such as 0, 1, -5400, 117.9
  • Datetime-like: timestamps, dates, months, years, etc
  • Text-like: Arbitrary strings of text. These could be individual words or full-on paragraphs.
  • Vector-like: Arrays of numbers (or arrays of text, but not mixed)

Axes

  • The outer axes represent the dimensions in which we want to visualize distances between nodes (1d, 2d, 3d, and any of these plus time ), and the
  • inner axes represent the visual characteristics the drawn nodes have (color, shape, size).

Axes work together to place nodes along the specified dimensions (any/all of the ones specified above), but the way they calculate the final position(s) of each node/edge is controlled through several factors.

  • variables: Each axis may specify which attributes of the Nodes or Links it cares about in order to map in that dimension (ie, should we include all node properties or just some specific ones?)
  • projections: Each variable that an axis factors into its distance calculation can be transformed in some way. For example, a discrete variable, such as color when the values of color are defined using words such as red, green, blue, white, etc can be projected into a continuous space
  • geometry:

Variables Any number of variables can map to any number of axes, and this mapping is decided using both some properties of the axis itself (ie, projection, sort order), and some properties of the layout (ie, how should distance between nodes be calculated).

Layout There are currently three types of layout in Cronologies.

  • Nodes: Laying out by nodes means we choose some number of properties of each node and produce a map according to the values each node has for that property. For example, in a 2-dimensional view where each node represents a “Person”, one axis could be “height” and another could be “age”. This produces a more traditional “graph”-like view