IS NOT VALUED does not seem to work.
Maybe I am not understanding this correctly, but I expected IS NOT VALUED to be the same as (IS MISSING OR IS NULL). This does not seem to be the case.
SELECT * FROM gamesim-sample WHERE loggedIn IS NOT VALUED // returns no results // whereas SELECT * FROM gamesim-sample WHERE loggedIn IS MISSING // does return results
From the DP1 spec:
Comparing NULL and MISSING values
The normal comparison operators cannot be used to check for NULL or MISSING values because they do not contain type information. Instead the following operators are designed specifically to work for these values.
IS NULL - returns rows where the value of a property is explicitly set to NULL (not missing).
IS NOT NULL - returns rows which contain a value (not NULL or missing).
IS MISSING - returns rows where the value of a property is missing (not explicitly set to null).
IS NOT MISSING - returns rows which contain a value or null.
IS VALUED - synonym for IS NOT NULL
IS NOT VALUED - synonym for IS NULL
NOTE: IS NULL/IS NOT NULL and IS MISSING/IS NOT MISSING are NOT inverse operators. See table below:
Operator JSON value NULL MISSING
IS NULL FALSE TRUE FALSE
IS NOT NULL TRUE FALSE FALSE
IS MISSING FALSE FALSE TRUE
IS NOT MISSING TRUE TRUE FALSE
IS VALUED TRUE FALSE FALSE
IS NOT VALUED FALSE TRUE FALSE