Re: [netmod] xpath expressions in JSON

Ladislav Lhotka <lhotka@nic.cz> Fri, 19 October 2018 08:11 UTC

Return-Path: <lhotka@nic.cz>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 41AD8127AC2 for <netmod@ietfa.amsl.com>; Fri, 19 Oct 2018 01:11:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eoOaLSWTz56H for <netmod@ietfa.amsl.com>; Fri, 19 Oct 2018 01:11:56 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 08AB8127B92 for <netmod@ietf.org>; Fri, 19 Oct 2018 01:11:54 -0700 (PDT)
Received: by trail.lhotka.name (Postfix, from userid 109) id 1BEA5182113A; Fri, 19 Oct 2018 10:19:41 +0200 (CEST)
Received: from localhost (unknown [195.113.220.121]) by trail.lhotka.name (Postfix) with ESMTPSA id 013CC1821137; Fri, 19 Oct 2018 10:19:25 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Martin Bjorklund <mbj@tail-f.com>, netmod@ietf.org
In-Reply-To: <20181018.123036.731934458688841323.mbj@tail-f.com>
References: <20181011.181150.1840683183107627057.mbj@tail-f.com> <329f67ff-0774-0fd7-f630-7a01c7e7d3be@cisco.com> <20181012.103727.731509761734796510.mbj@tail-f.com> <20181018.123036.731934458688841323.mbj@tail-f.com>
Mail-Followup-To: Martin Bjorklund <mbj@tail-f.com>, netmod@ietf.org
Date: Fri, 19 Oct 2018 10:11:37 +0200
Message-ID: <87bm7q4apy.fsf@nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/UlOY25HSSDtyQIHKX1Pl8PAX97M>
Subject: Re: [netmod] xpath expressions in JSON
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 19 Oct 2018 08:11:59 -0000

Martin Bjorklund <mbj@tail-f.com> writes:

> Hi,
>
> Going back to the most urgent issue, what is this WG's recommendation
> for the subscribed-notifications draft in NETCONF wrt/ their usage of
> yang:xpath1.0 in filters?
>
> To summarize:
>
> We already have
>
>   o  instance-identifier in XML uses prefixes from the XML document
>   o  instance-identifier in JSON uses module names as prefixes
>   o  XPath in NETCONF filter uses prefixes from the XML document
>   o  XPath in JSON query filter uses module names as prefixes
>
>
> Alternative A:
> --------------
>
> Use different encodings for "stream-xpath-filter" as well, depending
> on if it is XML or JSON.
>
> We would do in SN:
>
>     o  If the node is encoded in XML, the set of namespace
>        declarations are those in scope on the
>        'stream-xpath-filter' leaf element.
>
>     o  If the node is encoded in JSON, the set of namespace
>        declarations is the set of prefix and namespace pairs
>        for all supported YANG modules, where the prefix is

Is "supported" the same as "implemented", or something else?

>        the YANG module name and the namespace is as defined
>        by the "namespace" statement in the YANG module.
>
> Pro: the format is consistent within each encoding.
>
> Con: unclear how to handle other encodings.
> Con: we keep using context-depending encodings.

  Con: XPath expressions in JSON can get pretty long (I assume it's not
  just an instance identifier but may contain predicates etc.). We
  cannot use the trick with the default namespace as in YANG, so all
  data node names will have to carry the prefix.

>
> We could probably add that CBOR uses the same representation as JSON.
>
> Example in XML:
>
>   <stream-xpath-filter
>       xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces"
>       xmlns:ip="urn:ietf:params:xml:ns:yang:ietf-ip">
>     /if:interfaces/if:interface/ip:ipv4
>   </stream-xpath-filter>
>
> Example in JSON:
>
>   "stream-xpath-filter":
>     "/ietf-interfaces:interfaces/ietf-interfaces:interface/ietf-ip:ipv4"
>
>
>
> Alternative B:
> --------------
>
> Use a non-context depending encoding, with the module name as prefix.
>
> We would do in SN:
>
>     o  The set of namespace
>        declarations is the set of prefix and namespace pairs
>        for all supported YANG modules, where the prefix is
>        the YANG module name and the namespace is as defined
>        by the "namespace" statement in the YANG module.
>
> Pro: the format is independent from the protocol encoding
>
> Con: in XML, this leaf is treated differently from other XPath
>      expressions, such as get-config filter and nacm rules.
>
> Example in XML:
>
>   <stream-xpath-filter>
>     /ietf-interfaces:interfaces/ietf-interfaces:interface/ietf-ip:ipv4
>   </stream-xpath-filter>
>
> Example in JSON:
>
>   "stream-xpath-filter":
>     "/ietf-interfaces:interfaces/ietf-interfaces:interface/ietf-ip:ipv4"
>
>
> My proposal is A.  I think it is more important with consistency
> within each encoding than across encodings.

I would suggest to consider declaring prefixes & namespaces explicitly
in the data, as in the schema mount document. It is independent of
encoding and the expressions can be kept short. In fact, one of the
namespaces can be declared as default, so this use of XPath would then
be very similar to YANG.

Lada

>
> (This said, I would like to have a context-independent encoding of all
> YANG types in the future.  But not now.)
>
>
>
>
> /martin
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka
Head, CZ.NIC Labs
PGP Key ID: 0xB8F92B08A9F76C67