2.2.1 Query Strings

The query string in the protocol is used for querying for subscriptions, querying for events, and specifying filtering criteria. The following is the Augmented Backus-Naur Form (ABNF) [RFC4234] syntax for the protocol query string.

 QUERY  = "ALL" / (OREXPRESSION)
 OREXPRESSION =  (ANDEXPRESSION OREXPRTAIL) / (ANDEXPRESSION)
 OREXPRTAIL =  (OROPERATOR ANDEXPRESSION OREXPRTAIL) / (OROPERATOR ANDEXPRESSION)
 ANDEXPRESSION =  (UNARYEXPRESSION ANDEXPRTAIL) / (UNARYEXPRESSION)
 ANDEXPRTAIL =  (ANDOPERATOR UNARYEXPRESSION ANDEXPRTAIL) / (ANDOPERATOR UNARYEXPRESSION)
 ANDOPERATOR = "&" / "AND"
 OROPERATOR =  "|" / "OR"
 UNARYEXPRESSION =(NOTOPERATOR UNARYEXPRESSION) / (COMPARISONEXPRESSION)
 NOTOPERATOR =  "!" / "~" / "NOT"
 COMPARISONEXPRESSION = (COLUMNID COMPARISONOPERATOR COMPERAND) / ("("OREXPRESSION")")
 COMPARISONOPERATOR =  "=" / "==" / "!=" / "~=" / "<>"
 COMPERAND =  (CONSTANT) / (OPENPAREN CHOICE CLOSEPAREN)
 CHOICE =  (CONSTANT MORECHOICES) / (CONSTANT)
 MORECHOICES =  (ANDOROPERATOR CONSTANT MORECHOICES)  / (ANDOROPERATOR CONSTANT)
 ANDOROPERATOR =  (ANDOPERATOR) / (OROPERATOR)
 CONSTANT =  (SINGLEQUOTE STRINGVALUE SINGLEQUOTE)/ (DQUOTE STRINGVALUE DQUOTE) / 
   (OPENCURLY UUID CLOSECURLY) / (INTEGERVALUE) / "TRUE" / "FALSE" / "NULL"
 STRINGVALUE= 1*ALPHA
 INTEGERVALUE = ["-" / "+"] 1*DIGIT
 COLUMNID = KNOWNCOLUMNID / 1*ALPHA
 KNOWNCOLUMNID = "EVENTCLASSID" / "EVENTCLASSNAME"  / "OWNERSID"  / 
   "FIRINGINTERFACEIID"  /  "CUSTOMCONFIGCLASSID"  / "DESCRIPTION"  / "TYPELIB"  / 
   "MULTIINTERFACEPUBLISHERFILTERCLSID"  / "ALLOWINPROCACTIVATION"  / "FIREINPARALLEL"  /
   "EVENTCLASSPARTITIONID"  / "EVENTCLASSAPPLICATIONID"  / "SUBSCRIPTIONID"  /
   "SUBSCRIPTIONNAME"  / "PUBLISHERID"  / "SUBSCRIBERCLSID"  / "PERUSER"  / "OWNERSID"  /
   "ENABLED"  /  "MACHINENAME"  / "INTERFACEID"  / "FILTERCRITERIA"  /
   "SUBSCRIBERMONIKER"  /  "SUBSCRIBERPARTITIONID"  /  SUBSCRIBERAPPLICATIONID" 
 OPENPAREN = "("
 CLOSEPAREN = ")"
 SINGLEQUOTE = "'"
 OPENCURLY = "{"
 CLOSECURLY = "}"
  
  

DIGIT, DQUOTE, and ALPHA are as specified in [RFC4234] appendix B.

UUID represents the string form of a UUID as specified in [RFC4122] section 3.

Each KNOWNCOLUMNID maps to a property of an event class or a subscription property.<1> These are specified in section 3.1.1.1 and section 3.1.1.2.