JSON入力パラメータの検証
オプションで、DBMS_VECTOR.UTL
関数およびDBMS_VECTOR_CHAIN.UTL
関数へのJSON入力の構造を検証できます。この関数は、JSONを使用して入力パラメータを定義します。
JSONデータはスキーマレスであるため、ベクトル・ユーティリティ・パッケージAPIが実行時に行う検証量は最小限で、パフォーマンスが向上します。APIでは、必須のJSONパラメータ(APIを実行するために指定したパラメータ)のみが検証されますが、オプションのJSONパラメータおよび属性は検証されません。
APIをコールする前に、DBMS_JSON_SCHEMA
パッケージのサブプログラムを使用して、PARAMS
句で指定する入力データが特定のJSONスキーマに対して有効かどうかをテストできます。これにより、柔軟性が向上し、スキーマが有効なデータのみがJSON列に挿入されるようになります。
次のスキーマに対して、DBMS_VECTOR.UTL
およびDBMS_VECTOR_CHAIN.UTL
ファンクションのJSON入力パラメータを検証します。
-
データベース・プロバイダの場合:
-
SCHEMA_CHUNK
{ "title" : "utl_to_chunks", "description" : "Chunk parameters", "type" : "object", "properties" : { "by" : {"type" : "string", "enum" : [ "chars", "characters", "words", "vocabulary" ] }, "max" : {"type" : "string", "pattern" : "^[1-9][0-9]*$" }, "overlap" : {"type" : "string", "pattern" : "^[0-9]+$" }, "split" : {"type" : "string", "enum" : [ "none", "newline", "blankline", "space", "recursively", "custom" ] }, "vocabulary" : {"type" : "string" }, "language" : {"type" : "string" }, "normalize" : {"type" : "string", "enum" : [ "all", "none", "options" ] }, "norm_options" : {"type" : "array", "items": { { "type": "string", "enum": ["widechar", "whitespace", "punctuation"] } }, "custom_list" : {"type" : "array", "items": { "type": "string" } }, "extended" : {"type" : "boolean" } }, "additionalProperties" : false }
-
SCHEMA_VOCAB
{ "title" : "create_vocabulary", "description" : "Create vocabulary parameters", "type" : "object", "properties" : { "table_name" : {"type" : "string" }, "column_name" : {"type" : "string" }, "vocabulary_name" : {"type" : "string" }, "format" : {"type" : "string", "enum" : [ "BERT", "GPT2", "XLM" ] }, "cased" : {"type" : "boolean" } }, "additionalProperties" : false, "required" : [ "table_name", "column_name", "vocabulary_name" ] }
-
SCHEMA_LANG
{ "title" : "create_lang_data", "description" : "Create language data parameters", "type" : "object", "properties" : { "table_name" : {"type" : "string" }, "column_name" : {"type" : "string" }, "preference_name" : {"type" : "string" }, "language" : {"type" : "string" } }, "additionalProperties" : false, "required" : [ "table_name", "column_name", "preference_name", "language" ] }
-
SCHEMA_TEXT
{ "title": "utl_to_text", "description": "To text parameters", "type" : "object", "properties" : { "plaintext" : {"type" : "boolean" }, "charset" : {"type" : "string", "enum" : [ "UTF8" ] } }, "additionalProperties": false }
-
SCHEMA_DBEMB
{ "title" : "utl_to_embedding", "description" : "To DB embeddings parameters", "type" : "object", "properties" : { "provider" : {"type" : "string" }, "model" : {"type" : "string" } }, "additionalProperties": true, "required" : [ "provider", "model" ] }
-
SCHEMA_SUM
{ "title" : "utl_to_summary", "description" : "To summary parameters", "type" : "object", "properties" : { "provider" : {"type" : "string" }, "numParagraphs" : {"type" : "number" }, "language" : {"type" : "string" }, "glevel" : {"type" : "string" } }, "additionalProperties" : true, "required" : [ "provider" ] }
-
-
For REST Providers:
SCHEMA_REST
{ "title" : "REST parameters", "description" : "REST versions of utl_to_embedding, utl_to_summary, utl_to_generate_text", "type" : "object", "properties" : { "provider" : {"type" : "string" }, "credential_name" : {"type" : "string" }, "url" : {"type" : "string" }, "model" : {"type" : "string" } }, "additionalProperties" : true, "required" : [ "provider", "credential_name", "url", "model" ] }
サードパーティ・サービス・プロバイダに対するすべてのRESTコールは、それぞれの埋込み、要約およびテキスト生成操作に対して同じスキーマを共有します。
例:
-
JSONスキーマに対してJSONデータを検証するには、PL/SQLファンクションまたはプロシージャの
DBMS_JSON_SCHEMA.is_valid()
を使用します。このファンクションは、有効な場合は
1
を返し、無効な場合は0
を返します(無効なデータはオプションでエラーを発生させる可能性があります)。このプロシージャでは、有効な場合はTRUE
、OUT
パラメータの値として無効な場合はFALSE
が返されます。l_valid := sys.DBMS_JSON_SCHEMA.is_valid(params, json(SCHEMA), dbms_json_schema.RAISE_ERROR);
-
プロシージャ(関数ではない)
is_valid
を使用する場合、OUT
パラメータとして検証エラー・レポートにアクセスできます。プロシージャをこのように使用すると、スキーマに対してデータがチェックされ、妥当性(BOOLEAN
)およびエラー(JSON
)のパラメータに出力されます。sys.DBMS_JSON_SCHEMA.is_valid(params, json(SCHEMA), l_valid, l_errors);
-
エラーの詳細な検証レポートを読み取るには、PL/SQLプロシージャ
DBMS_JSON_SCHEMA.validate_report
を使用します。(プロシージャではなく)ファンクション
is_valid
を使用する場合、このようなレポートにアクセスできません。関数is_valid
のかわりに、SQL問合せでPL/SQLファンクションDBMS_JSON_SCHEMA.validate_report
を使用して検証し、プロシージャis_valid
のOUT
パラメータで提供されるものと同じ完全な検証情報をJSON型のインスタンスとして返すことができます。SELECT JSON_SERIALIZE(DBMS_JSON_SCHEMA.validate_report('json',SCHEMA) returning varchar2 PRETTY);