I was about to answer this question https://jazz.net/forum/questions/227587/how-to-use-rm-apioslc-where-clause-using-not-equal-null-conditions with the link to the OSLC Query spec but then I saw !="*" on the linked docs in https://www.ibm.com/support/knowledgecenter/SSZRHJ/com.ibm.mif.doc/gp_intfrmwk/oslc/r_oslc_query_params.html.
That made me read BNF extra carefully and from the shortened subset below you can see my concern:
oslc_where ::= "oslc.where=" compound_term
compound_term ::= simple_term (space? boolean_op space? simple_term)*
simple_term ::= term | scoped_term
space ::= " " /* a space character */
boolean_op ::= "and"
term ::= identifier_wc comparison_op value | identifier_wc space in_op space? in_val
scoped_term ::= identifier_wc "
identifier_wc ::= identifier | wildcard
This query is valid:
oslc.where=* > 10
While this one is invalid:
Now that I look at my examples, this actually makes sense (leaving aside a question why would you filter by any property being greater than a certain number), while IBM manual's "The parent!="*" query is semantically equivalent to the parent="NULL" query." does not!
Do you have any automatic BNF validators to check the sanity of the BNF further?