ARC Centre of Excellence for Plant Energy Biology

Pre-release edition

Searching Rice DB

Rice DB offers five kinds of queries based on your choice of “basic syntax” or “advanced syntax”.

If your input:

  1. Is a single TIGR identifier with point number: go to flatfile.
  2. Is a list starting with a TIGR identifier without a point number, a FASTA format list (identifiers will be extracted), or a plain list of identifiers separated by whitespace or commas: do a search equivalent to find summary for IDs like ...
  3. Starts with a command name: we use advanced query syntax (see below).
  4. Is an empty search or incomplete command: you’ll get advice about the advanced query syntax.
  5. Otherwise: we do a full-text search equivalent to find TIGR identifiers, matching fields, summary relating to "...". All your words will be matched with stemming.

Advanced Search Query Syntax

Rice DB offers a SQL-like query syntax that can be easily typed, copied and pasted as plain text. You can test your query using the Test Syntax button. If the syntax is incomplete, Test Syntax will try to provide hints for your next step. It’s defined in the source code for ricedb.dsl.SearchQuery.parse(String):

<command> <columns> [<grouping>] (<conditions> | <source>) [;]

where

<command> = (<display> | count | <find> unknown | <display> syntax errors in | <display> unique sorted list) <display> = find | get | select | show | view <columns> = <column> [(,|and) <column>]* <column> = <identifier name> | summary | annotations | orthology | sequence | predicted locations | experimental locations | hexamer motifs <identifier name> = (TIGR | LOC | RAP | OS | array probe set) (identifiers | IDs | numbers | names) <grouping> = grouped [with '<separator>'] // default separator is space <conditions> = (with | related to | relating to | matching) <condition> <condition> = <text> [in <text field name>] <source> = for [identifiers [like]] (<list> | <FASTA>) <name> = ('<user-supplied name>' | 'all <identifier name>') <list> = <identifier> [(, | <newline>) <identifier>]* // Quotation marks can be ' or " // * means "zero or more". // [ ] means "optional". // | means "or".

for example

find TIGR identifiers grouped with ',' saving as "My List" from Os_123, Os_456;

Developer Info: Query Processing Critical Path

  1. AJAX interface for end-user query building [ricedb.snippet.Query with CKEditor]
  2. Parsing and auto-suggestion [parser object: ricedb.dsl.SearchQuery parsed class: ricedb.dsl.SearchQuery]
  3. SQLisation of query (ready to plan, analyse or execute) [ricedb.model.SearchQueryCommand]
    and caching [ricedb.model.RecentSearchQueries]
  4. Background query execution and buffering to temporary disk storage [ricedb.comet.Datatable]
  5. Data table UI & downloading of resultset by client (JSON, TSV) [ricedb.snippet.Datatable]
  6. Clearing of caches and resultsets [ricedb.comet.RecentSearchQueries, ricedb.comet.Datatable]