JSONPathを使用したセマンティック・モデルのカスタム・ルール問合せの記述について
JSONPathは、セマンティック・モデルのカスタム整合性チェック・ルールの作成に使用する問合せ言語です。 JSONPathでは、ビジネス制約およびデータ品質制約の違反についてセマンティック・モデルのオブジェクトをスキャンするユーザー定義ルールを作成できます。
カスタム整合性チェック・ルールを無期限の問合せとして記述することで、進化するモデル全体でゼロ、1または多数のノードを照合できるため、一貫性とワークフローの制限に最適です。
確定問合せと不確定問合せ
明確な問合せと無期限問合せの違いに注意してください。
- 確定パスは最大で1つのノードを選択し、実装では通常、確定パスを使用するときに単一の値またはnullを返します。 これは「単一ターゲット」形式です。
- 無期限パスでは、ゼロ、1つまたは複数のノードを選択し、一致のコレクション(多くの場合、リストまたは配列)を返すことができます。 フィルタ、ワイルドカード、ディープ・スキャン、スライスおよび複数索引セレクタにより、問合せは無期限になります。
カスタム整合性チェックで無期限の問合せが必要な理由
カスタム整合性チェックでは、次の理由で無期限の問合せが必要です。
- 包括的スキャン - 一貫性チェックでは、モデル全体で1つだけではなくすべての問題のあるインスタンスを見つける必要があります。 したがって、問合せは1つの評価で複数の一致を返すことができる必要があります。
- スキーマおよびバージョンの自己回復性 - セマンティック・モデルが進化するにつれて、たとえば、プロパティが追加され、配列が並べ替えられ、新しいネストが行われると、無期限の問合せはパターンに依存し、固定位置に依存しないため、有効のままになります。
- レポート・セマンティクスの消去 - 不確定な問合せは、自然に「N一致= N報告結果」にマップされますが、ゼロ一致はエラーや特殊なケースがない「問題なし」を正常に表します。
ヒントとトラブルシューティング
次の情報を使用して、JSONPath問合せを記述します。
- ルールを作成する場合は、「カスタム・ルール」ダイアログの「検証」ボタンを使用して、問合せの構文を検証します。 オブジェクトの小さなサンプルを使用して、妥当性チェックの選択と結果のカーディナリティを行います。
- 結果のカーディナリティを確認してください。 配列が必要で、ルールが単一のスカラーを返す場合は、フィルタまたはワイルドカードに調整して無期限にします。
- ラージ・オブジェクトの場合、
$..を可能なかぎり$.presentationTable.hierarchiesなどのサブツリー・ルートに置き換えることで、コストがかかるスキャンを絞り込みます。
リソース
Oracleでは、JSONPathおよび有効なJSONPath問合せの記述方法に精通していることを前提としています。
JSONPathを初めて使用する場合は、これらのリソースを使用して、JSONPath問合せの記述方法を学習してください。
JSONPath「カスタム整合性チェックの問合せ例」も参照してください。
| リソース | 説明 |
|---|---|
| 公式仕様(RFC 9535) | JSONPath構文、セレクタ、フィルタ、評価セマンティクスおよび適合性に関する標準IETF標準。 |
| Jayway JsonPath (Java) README | 実用的な構文、演算子、例およびAPIの使用方法の詳細を備えた一般的な実装。 |
| Hevoデータ | 例とフィルタの使用法を含む簡潔なチュートリアルスタイルの概要。 |
| REST APIチュートリアル: | JSONPathの基本および一般的な問合せパターンのガイド。 |
| JSONPathオンライン評価者 | サンプルJSONに対して式をプロトタイピングするための評価者。 |
| Site24x7 JSONパス評価者 | 対話型の結果パネルを備えた評価者/検証者。 |