1 visualization := [creator date id? lang name style type version]
4 (sourceVariable | derivedVariable)+
14 | minWidthSet maxWidthSet
19 userSource := [id missing?]
22 [id categorical source sourceName dependsOn? label? labelVariable?]
23 extension* (format | stringFormat)?
25 [id categorical value dependsOn?]
26 extension* (format | stringFormat valueMapEntry*)?
27 valueMapEntry := [id? from to]
31 (minimumFractionDigits maximumFractionDigits)? /* maybe not for baseFormat=dateTime */
33 (baseFormat=dateTime or baseFormat=elapsedTime:
34 dayPadding hourFormat hourPadding minutePadding showDay showSecond)
35 (baseFormat=dateTime only:
36 dayOfMonthPadding dayType monthFormat showMonth showYear yearAbbreviation separatorChars mdyOrder)
37 (baseFormat=elapsedTime only:
38 secondPadding showMillis useGrouping)]
43 dayOfMonthPadding dayPadding dayType hourFormat hourPadding mdyOrder minutePadding monthFormat separatorChars showDay showHour showMinute showMonth showSecond showYear yearAbbreviation)
45 hourFormat hourPadding minutePadding secondPadding showHour showMillis showMinute showSecond)]
47 [minimumIntegerDigits minimumFractionDigits maximumFractionDigits
48 (scientific small | suffix) useGrouping]
50 stringFormat := (affix | relabel+)?
51 affix := [id? definesReference position suffix value]
56 location+ coordinates faceting facetLayout interval
58 location := [id? method part (min | target | value)?]
61 faceting := [id] cross layer*
62 interval := [id style] labeling footnotes?
63 labeling := [id? style? variable] (format | formatting | footnotes)*
64 formatting := [id? variable] formatMapping*
65 formatMapping := [id? from] format
66 footnotes := [id? superscript variable] footnoteMapping+
67 footnoteMapping := [id? from to definesReference]
70 nest := [id?] variableReference+
71 variableReference := [ref]
73 facetLayout := [id?] tableLayout facetLevel+ setCellProperties*
74 tableLayout := [(id style)? fitCells? verticalTitlesInCorner]
75 facetLevel := [id gap level] axis
77 axis := [id? style] label? majorTicks
79 [id? style (purpose | textFrameStyle | purpose textFrameStyle)]
80 descriptionGroup | text+
81 majorTicks := [id labelAngle length style tickFrameStyle] gridline?
82 gridline := [id style zOrder]
84 descriptionGroup := [id? separator target] description+ text
85 description := [id? name]
86 text := [id? (usesReference | definesReference position)?] <text>
87 paragraph := [id? hangingIndent]
91 setMetadata setStyle* setFormat+ union?
92 setMetadata := [id? key target value]
93 setStyle := [id? style target]
96 dateTimeFormat | format | numberFormat | stringFormat+
98 labelFrame := [id style] location+ label paragraph?
99 container := [id style] extension? location+ labelFrame+
103 (border-bottom border-bottom-color?)?
104 (border-left border-left-color?)?
105 (border-right border-right-color?)?
106 (border-top border-top-color?)
116 labelLocationHorizontal?
117 (labelLocationVertical
118 margin-bottom margin-left margin-right margin-top
125 layer := [id? value variable method? visible?]
126 layerController := [id? source target]
128 union := [id] intersect+
129 intersect := [id?] intersectWhere | where+
130 intersectWhere := [id variable variable2]
131 where := [id? include variable]