visualization := extension? userSource (sourceVariable | derivedVariable)+ graph labelFrame+ container? style+ layerController? extension := userSource := sourceVariable := extension* (format | stringFormat)? derivedVariable := extension* (format | stringFormat valueMapEntry*)? format := (affix+ | relabel)? dateTimeFormat := numberFormat := affix? stringFormat := (affix | relabel+)? affix := relabel := valueMapEntry := graph := location+ coordinates faceting facetLayout interval location := coordinates := faceting := cross layer* interval := labeling footnotes? labeling := (format | formatting | footnotes)* formatting := formatMapping* formatMapping := format footnotes := footnoteMapping+ footnoteMapping := cross := nest+ nest := variableReference+ variableReference := facetLayout := tableLayout facetLevel+ setCellProperties* tableLayout := facetLevel := axis axis := label? majorTicks label := descriptionGroup | text+ majorTicks := gridline? gridline := descriptionGroup := description+ text description := text := paragraph := setCellProperties := setMetadata setStyle* setFormat+ union? setMetadata := setStyle := setFormat := dateTimeFormat | format | numberFormat | stringFormat+ labelFrame := location+ label paragraph? container := extension? location+ labelFrame+ style := layer := layerController := union := intersect+ intersect := intersectWhere | where+ intersectWhere := where :=