Re: [Json] JSON Schema Language

Carsten Bormann <cabo@tzi.org> Sat, 04 May 2019 07:58 UTC

Return-Path: <cabo@tzi.org>
X-Original-To: json@ietfa.amsl.com
Delivered-To: json@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1FBF912004C for <json@ietfa.amsl.com>; Sat, 4 May 2019 00:58:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Level:
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, 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 HdKentULcg_J for <json@ietfa.amsl.com>; Sat, 4 May 2019 00:58:36 -0700 (PDT)
Received: from smtp.uni-bremen.de (gabriel-vm-2.zfn.uni-bremen.de [134.102.50.17]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F2B56120019 for <json@ietf.org>; Sat, 4 May 2019 00:58:35 -0700 (PDT)
Received: from [192.168.217.106] (p54A6CC75.dip0.t-ipconnect.de [84.166.204.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.uni-bremen.de (Postfix) with ESMTPSA id 44x1bD5F7QzyV4; Sat, 4 May 2019 09:58:32 +0200 (CEST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <39682ec8-f993-a44c-d3e2-1638d2c1608f@gmail.com>
Date: Sat, 04 May 2019 09:58:32 +0200
Cc: Ulysse Carion <ulysse@segment.com>, json@ietf.org
X-Mao-Original-Outgoing-Id: 578649510.37251-2ebd5673e8c1504cdc54fe4254fcd83c
Content-Transfer-Encoding: quoted-printable
Message-Id: <29CAE1CE-D6CB-4796-B2F2-2095BE921385@tzi.org>
References: <CAJK=1RjV1uv0eOdtFZ8cKn-FfCwCiGP5r2hOz1UamiM6YV4H1A@mail.gmail.com> <39682ec8-f993-a44c-d3e2-1638d2c1608f@gmail.com>
To: Anders Rundgren <anders.rundgren.net@gmail.com>
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/json/CNWPCkJGeX2l2AKErqYsvQl3IfU>
Subject: Re: [Json] JSON Schema Language
X-BeenThere: json@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "JavaScript Object Notation \(JSON\) WG mailing list" <json.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/json>, <mailto:json-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/json/>
List-Post: <mailto:json@ietf.org>
List-Help: <mailto:json-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/json>, <mailto:json-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 04 May 2019 07:58:38 -0000

On May 4, 2019, at 06:47, Anders Rundgren <anders.rundgren.net@gmail.com> wrote:
> 
> Example: although 10.0 is a valid JSON Number, in system where you expect
> an integer, this should be flagged as a syntax error.

10.0 is an integer number.

“Schema Languages” operate at the data model level.  In the JSON data model, there is only one kind of number.  
Of course, the JSON data model is not actually defined in a standard, which is one of the major shortcomings of JSON.

See appendix E of draft-ietf-cbor-cddl-08.txt for the way that is handled in CDDL.

In an alternate JSON universe(*), you would start by applying ISO 6093 (ECMA-63 [1]).
NR1 becomes an integer, NR2 and NR3 become floating point values.  
You then still have to decide what the JSON constructions not covered by ISO 6093 become, e.g., what 1e5 is; in C that would be a float while in Ada that is an integer, IIRC.
If you define that int/float distinction properly, and make it available at the data model level, you can have the “schema language” act on that.

Grüße, Carsten

(*) which is indeed well-supported by implementations outside JavaScript, just not by specifications.
[1] https://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-63,%201st%20Edition,%20September%201980.pdf