The SVQL (SalesViewer Query Language) is a merged superset of RQL (Resource Query Language) merged with FIQL (Feed Item Query Language).

RQL - Resource Query Language

We had to enhance RQL a bit to support

  • full-quoted strings in single and double quotes (" and ')
  • conditional aggregates like COUNT(anything LIKE something) for large group queries
  • whitespace ignorance

Specifications

Features supported by SVQL

  • in (<field>,<array-of-values>) and out (<field>,<array-of-values>) (in(session.company.zip, (76255, 70176)))
  • limit (<start>,<number>) (Note: SalesViewer remains page-based - the offset is recalculated to the real page number internally)
  • sort (<list of fields with + or - prefix>)
  • like (<field>, <pattern>)
  • and (<query>,<query>,...)
  • or (<query>,<query>,...)
  • not (<query>)
  • eq (<field>,<value>)
  • ne (<field>,<value>)
  • gt (<field>,<value>)
  • ge (<field>,<value>)
  • lt (<field>,<value>)
  • le (<field>,<value>)

Feature enhancements

  • we made the language whitespace ignoring!
  • sort (<condition subquery, aggregate or conditional aggregate>)
  • count(<field>, <conditional aggregate>) > 0 (like: count(me.friends.name LIKE 'robin'))
  • exists(<field>, <condition> or any(<field>, <condition>) as alias for count(<field>, <...>) > 0
  • like (<field>, <aggregate or conditional aggregate>)1
  • null() changed to null (because of quoted strings)
  • true() changed to true (because of quoted strings)
  • false() changed to false (because of quoted strings)
  • we want to provide a visual query builder (work in progress)

Features ignored

  • select (<list of attributes>)2
  • linkedWith (<resource ID>)2
  • implementing (<base-type>)2
  • composing (<derived-type>)2
  • empty(<propertie>)2 - obsolete because of quoted strings

FIQL - Feed Item Query Language

Specifications

supported by SVQL

  • Comparison: =, ==, !=, =lt=, =le=, =gt=, =ge=
  • Logical: ;, , replaced by & and | (which is more intuitve and compatible with RQL)

Footnotes

  1. Extension to the standard 

  2. There’s no real use-case for this. We won’t support dynamic object creation or partial retrieving the data.  2 3 4 5