Skip to content

Appendix B — Built-in catalogues

Contents of DISL 0.2

B.1 Default notation

Element Default
Node rect, 120 × 60, fill token color.surface (#FFFFFF), stroke token color.border (#5F5E5A) width 1, one centered label bound to labelAttribute, word wrap, font 14 px system-ui
View-only node as node, with dashed stroke
Container node as node, with a 24 px header band holding the label; children laid out freely
Relation (directed) straight line, width 1, color token color.border, targetMarker: "arrowFilled", no labels, unless the relation has a name attribute, which is shown middle/above
Relation (undirected) as directed, without markers
Port 8 × 8 rect, fill color.surface, sides by direction
Selection 1.5 px outline in token color.accent (#534AB7), 8 screen-px square handles
invalid state stroke token color.danger (#E24B4A), finding badge top-right
warning state stroke token color.warning (#BA7517), warning badge top-right
dropTarget / dropReject fill token color.accent.soft / stroke color.danger dashed

Standard theme tokens. Runtimes provide these tokens with light and dark values, and specifications may override them: color.canvas, color.surface, color.surface.alt, color.text, color.text.muted, color.border, color.border.strong, color.accent, color.accent.soft, color.danger, color.warning, color.success, color.info, font.body, font.mono, size.stroke, size.corner, size.font.

B.2 Shape parameter defaults

Shape Parameter defaults
roundedRect radius: 8
triangle apex: 0.5, direction: up
parallelogram skew: 0.2, direction: right
trapezoid inset: 0.2, direction: up (narrow side at the top)
hexagon inset: 0.25, orientation: flat
octagon inset: 0.29
polygon sides: 5, rotation: 0
star points: 5, innerRadius: 0.5, rotation: 0
cross thickness: 0.33
cylinder cap: 0.15 × height, orientation: vertical
document wave: 0.1
multiDocument wave: 0.1, offset: 6, count: 3
note fold: 12
folder tabWidth: 0.4, tabHeight: 12, tabPosition: left
frame tabWidth: 0.35, tabHeight: 20
cloud bumps: 8
process inset: 10
manualInput slope: 0.25
offPage pointer: 0.25
callout pointerX: 0.2, pointerY: 1.3, pointerWidth: 0.15, radius: 6
blockArrow direction: right, headLength: 0.35, shaftThickness: 0.5, doubleHeaded: false
chevron depth: 0.25, direction: right
bracket side: left, curl: 0.15
superellipse exponent: 4 (at least 2; 2 is an ellipse)
image fit: contain

Fractions refer to the bounds' width (horizontal parameters) or height (vertical parameters).

B.3 Marker catalogue

Sizes are for a line width of 1 and scale with the stroke unless scaleWithStroke is false. "Hollow" markers are filled with background by default, and "filled" markers with stroke.

Marker Default length × width Geometry
arrow 10 × 8 Open V, 2 strokes, angle 30°
arrowFilled 10 × 8 Filled triangle
arrowHollow 12 × 10 Hollow triangle (generalisation)
arrowConcave 12 × 10 Filled, swept-back base
arrowThin 8 × 6 Open V, angle 20°
arrowDouble 16 × 8 Two filled triangles in sequence
halfArrowTop, halfArrowBottom 10 × 5 One barb only
arrowCircle 14 × 8 Filled triangle followed by a hollow circle
diamond / diamondFilled 14 × 8 Rhombus
circle / circleFilled 8 × 8 Circle, tangent to the end point
square / squareFilled 8 × 8 Square
dot 4 × 4 Filled circle centered on the end point
triangle / triangleFilled 10 × 10 Equilateral
bar 0 × 10 Perpendicular line
doubleBar 4 × 10 Two perpendicular lines
cross 8 × 8 ×
slash 6 × 10 Oblique line
erOne 8 × 12 One perpendicular bar
erOnlyOne 12 × 12 Two perpendicular bars
erMany 12 × 12 Crow's foot
erZeroOrOne 18 × 12 Bar and hollow circle
erOneOrMany 16 × 12 Crow's foot and bar
erZeroOrMany 20 × 12 Crow's foot and hollow circle
ballSocketBall 10 × 10 Hollow circle on a short stem
socket 10 × 12 Half circle open towards the end
containment 10 × 10 Circle with a plus
ground 6 × 14 Three bars of decreasing length
fork 10 × 10 Two short diverging lines

B.4 Snap rule summary

Rule Numeric Time Ordinal Angular Sizes
grid ✓ – – ✓ ✓
values ✓ ✓ – ✓ ✓
calendar – ✓ – – ✓ (durations)
ticks ✓ ✓ ✓ ✓ –
bands – – ✓ – ✓ (number of bands)
divisions ✓ – – ✓ ✓
ratio – – – – ✓
cel ✓ ✓ ✓ ✓ ✓
byZoom ✓ ✓ ✓ ✓ ✓
plugin ✓ ✓ ✓ ✓ ✓

B.5 Time units and formats

Units ($defs/TimeUnit): millisecond, second, minute, hour, day, week (starts on firstDayOfWeek), month, quarter, year, decade, century, millennium (the last three start on years divisible by 10, 100 and 1000 in astronomical numbering, 5.5). Date format patterns follow Unicode LDML (yyyy, MM, MMM, MMMM, d, EEE, w, HH:mm); on yearMonth axes u is the signed astronomical year and y is not allowed (5.5). Number patterns follow ICU (#,##0.00, #0%).

B.6 Standard icons

Runtimes provide these monochrome icons under std.: add, remove, delete, edit, copy, link, unlink, lock, unlock, eye, eye-off, info, warning, error, check, x, plus, minus, arrow-right, arrow-left, arrow-up, arrow-down, flag, key, database, table, user, users, clock, calendar, message, note, folder, file, image, code, play, pause, stop, settings, search, filter, star, bolt, circle, circle-dot, square, square-rounded, diamond, triangle, hexagon. Specifications may also reference icon sets by prefix (tabler:database, material:table_chart) when the runtime supports them.

B.7 Default widgets by attribute type

Attribute type Widget
string text (combobox if extensible enum)
text textarea (markdown if markup: "markdown")
int, number number (slider if both min and max are set and the range is at most 100 steps)
bool checkbox
date, datetime, time, duration date, datetime, time, duration
yearMonth month
color color
uri link
expression code with language: "cel"
json code with language: "json"
binary file
enum (≤ 4 values) segmented
enum (> 4 values) select
data type (struct) struct
reference reference
many primitive tags for strings, list otherwise
many struct table
many reference references

B.8 Feature identifiers

language.requires.features uses these identifiers: axis.log, axis.time, axis.time.collapse, axis.ordinal, axis.angular, system.polar, system.nested, placement.bound, placement.computed, placement.stack, snap.calendar, snap.byZoom, snap.objects, shape.custom, shape.composite, shape.handles, shape.nineSlice, stroke.effect, stroke.sketch, stroke.flow, edge.jumps, edge.bezier, edge.metro, marker.custom, marker.stack, label.rich, label.parse, node.variants, node.lod, form.embedded, layout.elk, collab.crdt, persist.yaml, persist.split, persist.perElement, export.pdf.

DISL 0.2 adds: view.viewer (viewer state, 11.6), canvas.filters (6.13.1), canvas.notices (6.13), canvas.chrome (title, header, empty message and a legend from what is drawn, 6.13), canvas.stretch (6.13), viewpoint.variants (3.5), limits.budgets (3.2.1), anchor.part and anchor.sides (6.9, 6.10), edge.stub (6.10), edge.bezierLoop (6.10), node.badgeLayout (6.9), axis.ranges (5.3), axis.yearMonth (5.5), ruler.adaptive (5.13), snap.byGesture (5.9) and text.metric (6.5). A runtime that lacks one degrades as 15.2 says.

B.9 Built-in constraints

The built-in constraints of 8.7, in the order of its table, with who raises them. Findings of the four the reader raises come first, in reading order; the others follow in this order (8.6). Each can be re-rated, switched off, and given a code and a message in constraints.builtIn (8.1).

Id Raised by Default severity / enforcement Since
std.required the metamodel (required) error / report 0.1
std.facets the metamodel (facets) error / report, prevent in forms 0.1
std.unique the metamodel (unique) error / report 0.1
std.multiplicity the metamodel (bounds) warning / report below, error / prevent above 0.1
std.endpoints the metamodel (relation ends) error / prevent 0.1
std.containment the metamodel (children, slots) error / prevent 0.1
std.acyclic the metamodel (acyclic, with subtypes) error / prevent 0.1
std.references references to missing elements error / report 0.1
std.axisBounds axis and system bounds error / prevent 0.1
std.typeExists unknown types in a stored diagram error / report 0.1
std.unparseable the reader, per file that does not parse error / report 0.2
std.unreadableEntry the reader, per entry that cannot become an element warning / report 0.2
std.missingId the reader or runtime, per element without a usable id warning / report 0.2
std.duplicateId the reader or runtime, per second and later holder of an id warning / report 0.2
std.mixedPrecision the runtime (samePrecisionAs) warning / report, prevent in forms 0.2
std.ephemeralViewData the runtime, per stored data keyed by an ephemeral id info / report 0.2
std.pluginMissing the runtime, per absent plugin whose functions are called warning / report 0.2
std.derivedFailed the runtime, per derived type that fails to compute warning / report 0.2
std.derivedId the runtime, per derived id already in use warning / report 0.2
std.derivedEnds the runtime, per derived relation type with ends that do not fit warning / report 0.2

Referenced from