Draft: draft-ietf-jsonpath-base

Commentary: XPath terminology is a bit weird , because XPath has a somewhat competing standard XQuery ... XPath is based on DSSSL , which had a complex expression language for building paths in the XML trees that was based on the Scheme language . ( Which is the experience that makes me hesitant just jumping headlong into another expression language ... ) 
 LGTM with that change . Thanks !
Paragraph (version A):
Comparison expressions are available for comparisons between
primitive values (that is, numbers, strings, "true", "false", and
"null").  These can be obtained via literal values; Singular Paths,
each of which selects at most one node the value of which is then
used; and function expressions (see fnex) of type "ValueType" or
"NodesType" (see type-conv).
Paragraph (version B):
Comparison expressions are available for comparisons between
primitive values (that is, numbers, strings, "true", "false", and
"null").  These can be obtained via literal values; Singular Queries,
each of which selects at most one node the value of which is then
used; and function expressions (see fnex) of type "ValueType" or
"NodesType" (see type-conv).
Paragraph (version A):
A path by itself in a Logical context is an existence test which
yields true if the path selects at least one node and yields false if
the path does not select any nodes.
Paragraph (version A):
they work with arbitrary relative or absolute paths (not just
Singular Paths).
Paragraph (version A):
they work with paths that select structured values.
Paragraph (version A):
To examine the value of a node selected by a path, an explicit
comparison is necessary.  For example, to test whether the node
selected by the path "@.foo" has the value "null", use "@.foo ==
null" (see null-semantics) rather than the negated existence test
"!@.foo" (which yields false if "@.foo" selects a node, regardless of
the node's value).
Paragraph (version B):
A query by itself in a Logical context is an existence test which
yields true if the query selects at least one node and yields false
if the query does not select any nodes.
Paragraph (version B):
they work with arbitrary relative or absolute queries (not just
Singular Queries).
Paragraph (version B):
they work with queries that select structured values.
Paragraph (version B):
To examine the value of a node selected by a query, an explicit
comparison is necessary.  For example, to test whether the node
selected by the query "@.foo" has the value "null", use "@.foo ==
null" (see null-semantics) rather than the negated existence test
"!@.foo" (which yields false if "@.foo" selects a node, regardless of
the node's value).
Paragraph (version A):
A function argument is a "filter-path" or a "comparable".
Paragraph (version A):
According to filter-selector, a "function-expr" is valid as a
"filter-path" or a "comparable".
Paragraph (version B):
A function argument is a "filter-query" or a "comparable".
Paragraph (version B):
According to filter-selector, a "function-expr" is valid as a
"filter-query" or a "comparable".
Paragraph (version A):
"NodesType" is an abstraction of a "filter-path" (which appears in
a test expression or as a function argument).  Members of
"NodesType" have no direct syntactical representation in JSONPath.
Paragraph (version B):
"NodesType" is an abstraction of a "filter-query" (which appears
in a test expression or as a function argument).  Members of
"NodesType" have no direct syntactical representation in JSONPath.
Paragraph (version A):
The argument is a Singular Path or "filter-path" (which
includes Singular Paths), or a function expression with
declared result type "NodesType" and the defined type of the
parameter is "NodesType".  Where the declared type of the
parameter is not "NodesType", a conversion applies.
Paragraph (version B):
The argument is a Singular Query or "filter-query" (which
includes Singular Queries), or a function expression with
declared result type "NodesType" and the defined type of the
parameter is "NodesType".  Where the declared type of the
parameter is not "NodesType", a conversion applies.
Paragraph (version A):
Its only argument is an instance of "ValueType" (possibly taken from
a singular path as in the example above).  The result also is an
instance of "ValueType": an unsigned integer or "Nothing".
Paragraph (version B):
Its only argument is an instance of "ValueType" (possibly taken from
a singular query as in the example above).  The result also is an
instance of "ValueType": an unsigned integer or "Nothing".
Paragraph (version A):
Its only argument is an instance of "NodesType" (possibly taken from
a "filter-path" as in the example above).  The result is an instance
of "ValueType".
Paragraph (version B):
Its only argument is an instance of "NodesType" (possibly taken from
a "filter-query" as in the example above).  The result is an instance
of "ValueType".