Grammar

Formal BNF grammar for MARS-QL.

<query>      ::= <select> | <with-recursive>
<select>     ::= 'SELECT' <columns> 'FROM' <source>
                  [ 'WHERE' <predicate> ]
                  [ 'GROUP BY' <columns> ]
                  [ 'HAVING' <predicate> ]
                  [ 'ORDER BY' <columns> [ 'ASC' | 'DESC' ] ]
                  [ 'LIMIT' <integer> ]

<source>     ::= <table>
              |  <subquery>
              |  <lineage-traversal>

<lineage-traversal>
             ::= 'LINEAGE' '(' <did> [ ',' <integer> ] ')'

<predicate>  ::= <comparison>
              |  <in-list>
              |  <contains>
              |  <attested-by>

<contains>   ::= <expr> 'CONTAINS' <literal>
<attested-by>::= <expr> 'ATTESTED_BY' <did> [ 'TYPE' <literal> ]

<did>        ::= 'did' ':' <namespace> ':' <kind> ':' <name>
                  [ '@' <version> ]

Tables

Name Columns
entries entry_did, entry_type, version, publisher_did, published_at, content_hash, bond_amount, bond_tier, tags, data, sequence
lineage did, parent, signed_at
attestations id, entry_did, attester_did, type, issued_at, evidence, signature
bonds did, amount, tier, posted_at, status
enr did, namespace, parent, created_at

Reserved words

In addition to all SQL-92 keywords:

DID, LINEAGE, ATTESTED_BY, CONTAINS, TYPE (in attestation context).