/diagrammatical

A tool for automatically generating diagrams given semantic information

diagrammatical

A tool for automatically generating diagrams given semantic information.

This primarily intends to cover a range of software and computing specification diagrams.

Overview

Assertion #1: Humans have a limited capacity to differentiate based on size, discrete position, color, numeracy, etc. Diagrams should be limited in the number of shapes, shape types, shape sizes, shape and line colors, etc.. (bounded by Golden Ratio steps?)

Assertion #2: Diagrams in specifications tend to convey the following diagram attributes:

  • Importance: (typically via size, sometimes via position)
  • Order (causality/dependence/heirarchy/sequence/flow/etc.): Typically shown by relative position (left-to-right, top-to-bottom, topleft-to-bottomright,etc.) and sometimes by arrows, connected with lines (linear, DAG, cyclic)
  • Boundary (containment/nesting/just-inside/crossing/just-outside/etc): Shown by postion of one shape inside or outside another
  • Proximity (things that are closely associated / have natural physical position nearby / layering): Shapes have some form of physical proximity
  • Similarity grouping (not sure if this is a case of proximity... i.e. semantic proximity)
  • Parallelisim (showing similarity through structural juxtaposition, overlay or other notations)
  • Opposition / complement / contrast (Showing local/remote, reciever/transmitter, etc. by laying items across from each other to emphasize contrast)

Semantic details have both visible and invisible representations in the diagrams.

Approach

An approach to layout is to start with a semantic graph (RDF, datoms, etc.) and apply analysis and heuristics to lay out diagrams. Relations and attributes in the semantic graph need to be mapped to one of the diagram attributes above. Additional layout hints can be provided, though it is not intended that these hints would typically be about the resultant spatial layout, rather adding additional local semantics or logical groupings to assist laying out the diagram (often providing focus, or emphasis).

A diagram, once layed out, may serve as a reference diagram for other, more complicated diagrams which preserve the general layout of the first but augment it with additional information. In this way, a family of diagrams can share the same general layout and are more easily approached by readers.

It is expected that not all elements in the graph will be displayed but that some of the elements in the semantic graph will be invisible groupings or associations used in the layout.

An additional benefit of this approach is alternate renderings (including textual) for accessibility.