このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

スキーマ属性 の検索結果:

TypeScriptの型は、データの妥当性をどこまで守ってくれるのか?

…SONスキーマでは、スキーマ属性という形で簡単な部分集合型をサポートしています。JSONスキーマベースのCatyスキーマもスキーマ属性を書けます。もし、integer型にスキーマ属性minimum, maximumが使えるなら、次のような感じになります。 type colorStrength = integer(minimum=0, maximum=255); class RgbColor3a { r:colorStrength; g:colorStrength; b:col…

正規表現とオートマトン:JSONオブジェクトの妥当性検証

…SONスキーマでは、スキーマ属性で色々な制約が書けます。スカラー型に関するスキーマ属性の例は既に述べました。オブジェクト型に対するスキーマ属性では、処理のタイミングが二箇所考えられます。オブジェクト開始記号 '{' の直後とオブジェクト終了記号 '}' の直後です。上の図のPとQは、スキーマ属性に対応する述語ノードです。どの位置に述語ノードを挿入するのが適切かはスキーマ属性により、また実装により異なります。(図のなかの、白丸の状態ノードとQを結ぶ点線はあまり意味が無いので気に…

JSONにバイナリデータ

「JSONスキーマ属性とその適用対象の一覧 2010年春・編」から引用: 僕は、JSONでもBase64エンコードのbinary型をネイティブ・サポートすべきだと思っています。XML Schema Part 2: Datatypes ではバイナリデータをサポートしてます(http://www.w3.org/TR/xmlschema-2/#base64Binary)。バイナリがあれば、"format" : "image/gif" のようなスキーマ属性指定にも意味を持たせられます…

JSONスキーマ属性とその適用対象の一覧 2010年春・編

「JSONスキーマ属性とその適用対象の一覧」(2009年6月)の情報を更新します。現状の最新JSONスキーマ仕様を反映させます。 最新JSONスキーマ仕様 http://tools.ietf.org/html/draft-zyp-json-schema-02 ごく最近導入されたuniqueItemsスキーマ属性は以前から欲しくて僕が勝手に導入していたものです(http://d.hatena.ne.jp/m-hiyama/20090616/1245112697、http://d…

JSONだってハイパーメディア -- JSONハイパースキーマ仕様をなんとかしたい

…った参照型 参照型のスキーマ属性 言い残したこと ハイパースキーマの目的JSONハイパースキーマ仕様は、JSONデータ(主にJSONオブジェクトデータ)をハイパーメディアとみなすための仕様です。JSONオブジェクトをハイパーメディアとみなすためには、次のことが必要です。 与えられたJSONオブジェクトの、どのプロパティがハイパーリンクであるかを識別する。 それぞれのハイパーリンクが、いかなる関係を表しているかを識別する ハイパーリンクのURIが、どのような法則に従うべきか/従…

HTMLフォームで使うデータ型のJSONスキーマ

…glelineというスキーマ属性を追加することにします。また、有限マルチセットはJSONスキーマの型としては存在しないので、配列型で代用します。有限マルチセット型の判定のために、uniqueというスキーマ属性も追加することにします。unique=true である配列は、同じ値の項目が二度以上出現できないという制約を持ち、事実上有限マルチセットとなります。それぞれのフォームコントロールに対応する型のJSONスキーマのスキーマをCatyスキーマ構文で書いてみます(ややこしいぞ)。…

最近のCatyスキーマを解説します

…ルとシングルトン型 スキーマ属性 事例「しょうがないので、マイクロフォーマットのデータモデルを僕が考えた」で例題とした、マイクロフォーマットのhCardに適合した簡単な人物情報の例を挙げましょう。インスタンスは次のようなものです。 { "vcard" : { "fn" : "檜山 正幸", "email" : ["hiyama{AT}chimaira{DOT}org"], "url" : ["http://www.chimaira.org/", "http://d.haten…

最近のJSONスキーマを解説します

…型 全称型 その他のスキーマ属性 HTMLとJSON 型表現がJSONインスタンス型を表す式を型表現(type expression)と呼びます。JSONスキーマの特徴は、型表現がまたJSONデータであることです。これには、メタデータをデータとして扱えるという大きな利点があります。しかし、人間が読み書きするには辛いものがあります。Catyスキーマ記述言語では、読み書きのしやすさを最優先しました。マイクロフォーマットの構造的人名をJSONスキーマとCatyスキーマの型表現*1で…

Catyの総称(多相)型サポートに向けて

…ngth=10) はスキーマ属性の指定で、これによりstring型を制限します。 値パラメータを持つ型です。score(max=100) という型は、integer(minimum=0, maximum=100) に展開されます。値パラメータの参照に %max を使ってますが、これは一案で、他の構文になるかもしれません。 _T という型パラメータを伴ったリスト型の定義です。型パラメータ(型変数)名はアンダスコアから始まる約束です。 長さ2の配列を使ったペア型の定義ですね。 整…

Catyの新スキーマ言語と型システムの必要性

…たいなら、次のようにスキーマ属性で修飾します。 { "name" : string(minLength = 2, maxLength = 20), "gender" : ("male" | "female") } こうして定義された新しい型に、personという名前(型名)を付けたいなら、次のような型定義文を書きます。 type person = { "name" : string(minLength = 2, maxLength = 20), "gender" : ("ma…

Catyコマンド宣言の構文

…約語にオプショナルなスキーマ属性 * never の意味は、出力が存在しないこと(voidとは違う!) * anyScalar の意味は、(number|string|boolean|null) */ 簡易列挙型 ::= 値 | '(' 値 ('|' 値)* ')' /* 値は、nullを除く組み込みスカラー型のリテラル、 * ただし、同じ種類の値で重複はなし */ 型変数 ::= アンダスコアからはじまる名前 コマンド名 ::= いずれ定義する(当面、単純な名前) オプショ…

Jcentric型システム:プラグインによるユーザー定義型

…どの型がありません。スキーマ属性patternがあるので、文字列を正規表現で制限することはできますが、これで何でも解決するわけではありません。ユーザーがプログラムを書くことにより(「スキーマを書くことにより」ではない)新しい型を定義できるメカニズムを入れざるを得ないようです。プログラムにより新しい型を定義できるメカニズムとは、つまり、型システム(の実装)が拡張ポイントを持つことです。その拡張ポイントの仕様をJavaインターフェースの構文で書いてみると次のようです(実装言語がJ…

Jcentric型システムの宣言スタイル・スキーマ構文

…表現されます。使えるスキーマ属性は大幅に減っています。optionalやadditonalPropertiesのように明らかに不要なものもありますが、解釈がハッキリしないものや、処理と実装の都合で面倒なものは削りました。モジュール内のコメント構文次のいずれかがコメントです。 '//' から改行まで '/*' から '*/' まで 「/* */」スタイルのコメントが入れ子にできると便利ですが、あまり前例がないので、入れ子は認めないことにします。「/* */」のなかに「//」が入…

Jsonic型システムのコア

…です。また、JSONスキーマ属性を使った制限や修飾は、ここでは触れません。内容: 基本型 型システムの要件 オプショナル型 配列型 タプル型、リスト型 列挙型 有限集合型と複数選択型 オブジェクト型 -- 次の機会 基本型基本のスカラー型は次のとおり。(nullもスカラーとみなすことにします。) integer number string boolean null 型Sのインスタンスが、必ず型Tのインスタンスであるとき、S ⊆ T と書くことにします。関係「⊆」により、型の全…

JSONパス形式スキーマ

…l=true というスキーマ属性を使いますが、ここでは、正規表現風に表現します。$.#.x というパスパターンを見れば、$.# がオブジェクトであること、$が配列であることは推測できるので、$.# と $ に関する記述は省略できます。コメントも省略してコンパクトに書けば: $.#.x : integer; $.#.y : integer; $.#.color : string?, default="black"; $.#.state : enum? ["hidden", "s…

JSONスキーマと列挙型

…ーマの構文(ただし、スキーマ属性labelを追加)だと: { "id" : "Dessert", "type" : "string", "label" : "お飲み物", "enum" : ["teaHot", "teaIce", "coffeeHot", "coffeeIce"], "options" : [ { "value" : "teaHot", "label" : "紅茶 (ホット)" }, { "value" : "teaIce", "label" : "紅茶 (…

JSONスキーマと総称コレクション型

…も欲しいんですけど スキーマ属性により、集合型とバッグ型を導入する 他の案 あと、それと JSONスキーマにおけるタプルとリストJSONスキーマでは、配列(array)の用途が2つ想定されています。1つはタプルであり、もう1つはリストです。この2つの特徴は次のとおり。 タプルは、項目の数が決まっている。項目の型はバラバラでもよい。 リストは、項目の数は自由(項目なしの空でもよい)。項目の型は決まっていて、どの項目も同じ型。 項目の数が2で、項目の型が string, inte…

JSONスキーマとユーザーインターフェース

…optionsというスキーマ属性があります。optionsスキーマ属性はインスタンスの妥当性検証には影響しません(The "options" attribute does not affect validation)。ユーザーインターフェースへのヒントとなります(The "options" attribute can be used for user interfaces in conjunction with "enum" to define the labels for …

JSONスキーマ属性とその適用対象の一覧

…しないところです。 スキーマ属性名 プロパティ number string array object optional ○ - - - - additionalProperties - - - - ○ requires ○ - - - - identity ○ - - - - minimum - ○ - - - maximum - ○ - - - minItems - - - ○ - maxItems - - - ○ - pattern - - ○ - - minLength…

最小抽象ファイルシステムの仕様案 その3

…注釈 // その他のスキーマ属性は json-schema.org 参照 FileMetadata = object { "contentLength" : integer(minimum = 0), "contentType" : string(optional = true, remark = "MIMEメディアタイプ"), "created" : TimeStamp(optional = true), "lastModified" : TimeStamp, "readO…

JSONスキーマのローカル構文に関する思案・試案

…加プロパティの問題 スキーマ属性の記述 ユニオン型 その他の問題点 単純なパターンによる型記述とりあえず安直に考えて、JSONのインスタンスと同じ形式で、値の代わりに型を記述したパターンが簡単そうです。 人に関する情報のスキーマなら次のようになります。 { "name" : string, "age" : integer, "mailAddress" : string } 見やすくていいですよね。配列型のパターン記述としては、[integer] と書くと「整数の配列(リスト)…

JSONの可能性がグンと拡がるぞ! JSONスキーマ

…書き方、その第一歩 スキーマ属性による制約 よく使いそうなスキーマ属性 integer, numberに使えるスキーマ属性 stringに使えるスキーマ属性 integer, number, stringに使えるスキーマ属性 配列に使える属性 プロパティの出現性に関するスキーマ属性 まずはサンプルかつてJSON改のサンプルとして次のようなデータ・インスタンスを出しました。これはプレーンなJSONデータではなくて、型情報を付加したものです。 // 平面内の折れ線 polygon…