Re: [netmod] metadata in JSON

Ladislav Lhotka <lhotka@nic.cz> Tue, 26 August 2014 13:05 UTC

Return-Path: <lhotka@nic.cz>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AB42B1A6FD1 for <netmod@ietfa.amsl.com>; Tue, 26 Aug 2014 06:05:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.001
X-Spam-Level:
X-Spam-Status: No, score=-0.001 tagged_above=-999 required=5 tests=[BAYES_20=-0.001] autolearn=ham
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 Veof8Hlxz0JE for <netmod@ietfa.amsl.com>; Tue, 26 Aug 2014 06:05:43 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) (using TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 731101A6FE3 for <netmod@ietf.org>; Tue, 26 Aug 2014 06:05:42 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by trail.lhotka.name (Postfix) with ESMTP id DC099540854; Tue, 26 Aug 2014 15:05:39 +0200 (CEST)
Received: from trail.lhotka.name ([127.0.0.1]) by localhost (trail.lhotka.name [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BzqrF6OH8DUv; Tue, 26 Aug 2014 15:05:30 +0200 (CEST)
Received: from localhost (unknown [172.29.2.201]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by trail.lhotka.name (Postfix) with ESMTPSA id 2EFD45401C2; Tue, 26 Aug 2014 15:05:30 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
In-Reply-To: <20140731122200.GC64359@elstar.local>
References: <CABCOCHS8aXQKMqq+h=7fvjhpdiBpR8PbCT5QkwM3Y9KKyV0=eQ@mail.gmail.com> <E0C7A946-BB33-493C-BD95-B3BFC3EC11DF@nic.cz> <CABCOCHTOYqBe1dVAJA2CmBhho2AG68nEg9o5pPwQavvDHy=3Vg@mail.gmail.com> <m2bns7qfno.fsf@nic.cz> <20140730110826.GE61382@elstar.local> <DB5305F2-2BE1-44FC-A8AA-648E4633F85E@nic.cz> <20140730130412.GB61698@elstar.local> <E3612646-17B9-44FA-8C4C-9C2F3FA1C67E@nic.cz> <20140731055201.GC63208@elstar.local> <5BA7630E-B06F-47B5-9ACD-92D9A3512864@nic.cz> <20140731122200.GC64359@elstar.local>
User-Agent: Notmuch/0.18.1 (http://notmuchmail.org) Emacs/24.3.50.2 (x86_64-apple-darwin13.0.0)
Date: Tue, 26 Aug 2014 15:05:25 +0200
Message-ID: <m2zjer2yga.fsf@nic.cz>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: http://mailarchive.ietf.org/arch/msg/netmod/sBNIOkErsN-uAyZyFnmJrqyd5sQ
Cc: "netmod@ietf.org" <netmod@ietf.org>
Subject: Re: [netmod] metadata in JSON
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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: Tue, 26 Aug 2014 13:05:54 -0000

Hi,

I would like to resolve the issue of metadata encoding in JSON, so let
me summarize the options we have. There are actually two valid questions:

1. Does the specification of the mapping of XML attributes in JSON
   belong to the yang-json document, and if so, in what form?

Possible answers:

1.1. No, as YANG doesn't model XML attributes.
1.2. Yes, as normative text.
1.3. Yes, as non-normative text.

For 1.2 and 1.3, we have to answer the second question because I assume
most XML attributes in use with YANG-modelled data will have non-null namespace:

2. How do we represent the namespace of an attribute in JSON?

Possible answers, using

  <elem xmlns:x="http://example.com/ns/URI" x:attr="foo">bar</elem>

as an example:

2.1. Use Clark's notation [1]:

  "elem": "bar",
  "@elem": {
    "{http://example.com/ns/URI}attr": "foo"
  }

2.2. Associate somehow every attribute with a YANG module, and then use
     the same notation as for encoding the namespace of YANG data nodes:

  "elem": "bar",
  "@elem": {
    "somemodule:attr": "foo"
  }

2.3. Associate somehow the XML namespace URI with a prefix in JSON and
     then use the same notation as for XML:

  "elem": "bar",
  "@elem": {
    "x:attr": "foo"
  }

In both 2.2 and 2.3, we need to say what "somehow" actually means. If we
accept 1.3, it could I guess involve a certain amount of hand-waving but
leaving it completely unanswered IMO makes the whole thing useless.

I personally think that 2.3 would be a step in a wrong direction because
the URI-prefix duality was recognized as a serious problem of XML
namespaces [2].

Please indicate your preferences or propose something else.

Thanks, Lada

[1] http://tools.ietf.org/html/draft-saintandre-json-namespaces-00
[2] http://blog.jclark.com/2010/01/xml-namespaces.html

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> writes:

> On Thu, Jul 31, 2014 at 10:49:07AM +0200, Ladislav Lhotka wrote:
>> 
>> On 31 Jul 2014, at 07:52, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
>> 
>> > On Wed, Jul 30, 2014 at 05:53:30PM +0200, Ladislav Lhotka wrote:
>> >> 
>> >>>>> understand that this makes the solution somewhat incomplete but it
>> >>>>> allows us to finish this document now and to move forward.
>> >>>> 
>> >>>> That is my priority, too.
>> >>> 
>> >>> Good. So what speaks against saying that if attribute names clash and
>> >>> if attributes are scoped by a module name, then the encoding is XYZ?
>> >> 
>> >> I thought YANG 1.1 was a good opportunity to decide about how to do this scoping, provided that standard attributes are really needed.
>> >> 
>> > 
>> > Lets keep the discussion focused on the JSON document. Are you OK with
>> > the proposal to add text that attribute names may be scoped?
>> 
>> Yes, if there is no other choice. It is unclear what “scoped” means.
>> 
>
> Scoped by a namespace, such as 'namespace:identifier'.
>
> /js
>
> -- 
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1, 28759 Bremen, Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

-- 
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C