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 axesrepresent the dimensions in which we want to visualize distances between nodes (1d, 2d, 3d, and any of these plus time ), and the inner axesrepresent 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 theNodesorLinksit 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, adiscretevariable, such ascolorwhen the values of color are defined using words such asred,green,blue,white, etc can be projected into acontinuousspacegeometry:
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
nodesmeans 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