Commit 8a6fd808 authored by Jason Fox's avatar Jason Fox
Browse files

- Add missing non-existence parameter to ABNF.

- Add non-existence example
- Add examples for equivalence based on JSON Objects.
parent 689f92fb
Loading
Loading
Loading
Loading
Loading
+93 −16
Original line number Diff line number Diff line
@@ -142,6 +142,7 @@ Query = (QueryTerm / QueryTermAssoc) *(LogicalOp (QueryTerm /
QueryTermAssoc))
QueryTermAssoc = %x28 QueryTerm *(LogicalOp QueryTerm) %x29         ; (QueryTerm)
QueryTerm = Attribute
QueryTerm =/ notOp Attribute
QueryTerm =/ Attribute Operator ComparableValue
QueryTerm =/ Attribute equal CompEqualityValue
QueryTerm =/ Attribute unequal CompEqualityValue
@@ -172,6 +173,7 @@ lessEq = %x3C %x3D ; <=
patternOp = %x7E %x3D                                               ; ~=
notPatternOp = %x21 %x7E %x3D                                       ; !~=
dots = %x2E %x2E                                                    ; ..
notOp = %x7E                                                        ; !
TermChar = unicodeNumber / unicodeLetter
TermChar =/ %x5F                                                    ; _
AttrName = unicodeLetter *TermChar
@@ -302,9 +304,9 @@ RFC 3986 [5] and IETF RFC 3987 [23], for the exact list of them).

>>> [!tip] EXAMPLE 6:

[?q=isMonitoredBy]{.HTML-Code}
[?q=!isMonitoredBy]{.HTML-Code}

To query for Entities that have the Attribute _`isMonitoredBy`_ ).
To query for Entities that do not have the Attribute _`isMonitoredBy`_.

>>>

@@ -979,10 +981,85 @@ The Query Term value, [color&#61;&#61;"http://example/black","http://example/red

<!-- prettier-ignore-start -->

8. The Query Term addresses a sub-attribute within a JSON Object, the target
   element corresponds to a _Property_ , _ListProperty_ or _JsonProperty_  and
   the value of sub-attribute:

8.  If there is no equality between the target value data type and the Query
    Term value data type, then it shall be considered as not matching.
   -  Is identical or equivalent to the target value.
   -  Is included in one of the JSON Objects corresponding to the target value,
      and the latter is an array.

<!-- prettier-ignore-start -->

>>> [!tip] EXAMPLE 8:

The Query Term value, [address&#91;&#8203;city&#93;&#61;&#61;Berlin]{.HTML-Code}:

-  Matches to the value below as the sub-attribute ["city"]{.HTML-Code} of
   the JSON Object is identical or equivalent to the target value.


```json
{"city": "Berlin", "country":"DE"}
```


-  Matches to the value below as the sub-attribute ["city"]{.HTML-Code} of at
   least one of the JSON Object in the array, is identical or equivalent to the
   target value.

```json
[
  {"city": "London", "country":"GB"}
  {"city": "Paris", "country":"FR"}
  {"city": "Berlin", "country":"DE"}
]
```

>>>

<!-- prettier-ignore-end -->

9.  The Query Term addresses a sub-attribute within a JSON Object, the target
    element corresponds to a _Property_ , _ListProperty_ or _JsonProperty_ and
    the Query Term value is a list of values (production rule named
    [ValueList]{.HTML-Sample}) and:

    - The sub-attribute of the JSON object corresponding to target value is
      identical or equivalent to any of the list values
    - The target value is an array of JSON objects, and the sub-attribute value
      matches target value for at least one element of the array.

<!-- prettier-ignore-start -->

>>> [!tip] EXAMPLE 9:

The Query Term value,  The Query Term value, [address&#91;&#8203;city&#93;&#61;&#61;Berlin,Tokyo]{.HTML-Code}:

-  Matches to the value below as the sub-attribute ["city"]{.HTML-Code} of
   the JSON Object is identical or equivalent to one of the list values.

```json
{"city": "Berlin", "country":"DE"}
```

-  Matches to the value below, as the sub-attribute ["city"]{.HTML-Code} of at least
   one JSON Object in the array is included in one of the Query Term values

```json
[
  {"city": "London", "country":"GB"}
  {"city": "Paris", "country":"FR"}
  {"city": "Berlin", "country":"DE"}
]
```

>>>

<!-- prettier-ignore-end -->

10. If there is no equality between the target value data type and the Query
    Term value data type, then it shall be considered as not matching.

### 7.2.4 GeoQuery language