| | |
| | ``` |
| | -root > people, # "root" keyword starts the document |
| | -person > person, # maps table context to a node |
| | -.first_name > first, # maps a column to a node |
| | -.last_name > name/last, # maps a column to an ancestor node |
| | -.age > @age, # @ maps a column to an attribute node |
| | -account.person_id > person.person_id, # performs an inner join |
| | -account > account, # context is now "account" node |
| | -.id > @id, # account id attribute |
| | -^, # pop stack to previous context |
| | -address > address, # switch context to "address" node |
| | -.*, # .* globs all columns |
| | -; # Starts the optional WHERE clause |
| | +root > people, # "root" keyword starts the document |
| | +person > person, # maps table context to a node |
| | +.first_name > first, # maps a column to a node |
| | +.last_name > name/last, # maps a column to an ancestor node |
| | +.age > @age, # @ maps a column to an attribute node |
| | +account.person_id +> person.person_id, # performs an inner join |
| | +account > account, # context is now "account" node |
| | +.id > @id, # account id attribute |
| | +^, # pop stack to previous context |
| | +address > address, # switch context to "address" node |
| | +account.person_id -> address.person_id, # performs an outer join |
| | +.*, # .* globs all columns |
| | +; # Starts the optional WHERE clause |
| | ``` |
| | |