sdcvalidator-ts について
sdcvalidator-tsは、公開モデルに照らしてSDC4 Governed Data Recordsを検証し、意味エラーを回復するTypeScriptライブラリ兼MCPサーバーです。sdcvalidator 4.6.3と整合する結果を必要とする開発者やエージェント向けで、Node、Deno、ブラウザーに対応します。
主な機能
- 01SDC4モデルに基づくレコード検証
- 02ExceptionalValuesによる意味エラーの回復
- 03スキーマ準拠の確認
- 04エラーパスと制約分類の報告
- 05限定されたXSD 1.1構文の実装
- 06未対応のスキーマ構文の拒否
活用シーン
- 01管理対象XMLレコードの検証
- 02回復可能な意味データエラーの修復
- 03利用前のSDC4スキーマ確認
- 04ローカル参照モデルを使ったオフライン検証
MCP 対応
MCPサーバーは、インスタンス検証、詳細レポート、意味エラーの回復、スキーマ準拠確認のツールを提供します。指定されたスキーマとインスタンスのファイルを読み込み、ローカル参照モデルを使えばオフラインで動作します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 今日に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| schema_path | string | はい | SDC4 データモデル XSD ファイルへのパス。 |
| instance_path | string | はい | 検証する XML インスタンス(Governed Data Record)へのパス。 |
| reference_path | string | いいえ | SDC4 参照モデル(sdc4.xsd)のローカルコピーへの任意のパスです。指定しない場合、モデルの include はその URL から取得されます。 |
詳細
sdcvalidator-ts
TypeScript による SDC4 検証です。Governed Data Record を公開済みの SDC4 モデルに照らして検証し、ISO 21090 ExceptionalValues を使用して意味エラーを回復します。適合性テストスイートでは、参照実装である sdcvalidator と同じ結果が得られます。
適合対象: sdcvalidator 4.6.3( 適合性テストスイートの全 151 ケース)。 CI では、このリリースのテストスイートをタグで固定して実行します。
Node(20 以降)、Deno(Supabase Edge Functions を含む)、ブラウザーで動作します。モデルとレコードのテキストを渡すため、ファイルの読み取りやネットワークへのリクエストは行いません。
import { SDC4Validator, REFERENCE_MODEL_URL } from 'sdcvalidator-ts';
const validator = new SDC4Validator({
text: modelXsd, // the model's published XSD
resolve: (location) => sdc4Xsd, // the reference model it includes (REFERENCE_MODEL_URL)
});
const result = validator.validate(recordXml);
// { valid, structural: [...], semantic: [{ path, ev, kind, constraint, message }, ...] }
const recovered = validator.recover(recordXml);
// { ok, recoveries: [{ path, code, name, inserted }], unrecoverable: [...], record, text }
// Throws StructuralValidationError if the record has structural errors.
MCP サーバー
パッケージには MCP サーバーが含まれているため、エージェントから直接呼び出せます。stdio 経由で JSON-RPC 2.0 を使用し、Node で実行されます。指定されたファイルを読み取ります。
npx sdcvalidator-ts mcp
| ツール | 説明 |
|---|---|
validate_instance | エラー数とともに合格または不合格を返します |
validate_and_report | すべてのエラーについて、パス、階層、失敗した制約、ExceptionalValue コードを返します |
recover_instance | 回復したレコードと各値を返します。構造エラーがある場合は拒否されます |
check_schema_compliance | スキーマが SDC4 の原則(拡張ではなく制限)に従っているかを確認します |
各ツールは schema_path と instance_path を受け取ります(コンプライアンスチェックではスキーマのみ)。さらに、任意で reference_path も指定できます。モデルの xsd:include にある参照モデルは URL から一度取得され、キャッシュされます。reference_path を指定すると、そのローカルコピーから読み取るため、サーバーはオフラインで動作します。
MCP レジストリには io.github.SemanticDataCharter/sdcvalidator-ts として登録されています。
「同じ結果」の意味
適合性テストスイートでは、各ケースについて次の項目を比較します。
- 判定結果
- パスごとの構造エラーと意味エラー
- 各意味エラーの ExceptionalValue コード
- 回復の結果
- 回復したレコード(コメントを無視し、ツリーとして比較)
エラーメッセージは比較しません。エラーはメッセージの表現ではなく、失敗した制約によって分類されます。
ExceptionalValue コードは参照実装(sdcvalidator 4.6.3)のものです。
OTH: 列挙値の範囲外の値。INV: 型に適合しない値、またはその他のファセット(パターン、長さ、範囲、桁数、組み込み型固有の範囲)、固定値、アサーションのいずれかに違反する値。NA: 要素のみが許可される場所にある文字データ。- コードなし: 構造要素(
label、vtb、vteなど)のエラー。回復できません。
sdcvalidator のマッピングが変更されると、テストスイートの期待値も変更されます。このライブラリは、次のリリース前にその変更に追従します。
XSD のサブセット
SDC4 スキーマでは XSD 1.1 の限られた部分が使われており、このライブラリはその部分を実装しています。
- 要素: グローバル要素とローカル要素、および
ref、出現回数、fixed、abstract、置換グループ。 - 複合型: 複合コンテンツと単純コンテンツ、制限と拡張、sequence と choice。
- 単純型: restriction(enumeration、pattern、length、range、digits、whiteSpace ファセットを含む)と list。約 40 種類の組み込み型。
xsd:assert: fontoxpath で評価され、派生型にも継承されます。xsd:include。
サブセット外の構文を検出すると、それを示す UnsupportedSchemaError が発生します。無視されることはありません。
DOCTYPE とエンティティ宣言は解析前に拒否されるため、外部エンティティが解決されることはありません。
開発
npm install
npm run typecheck
npm test # needs the conformance suite: a sibling sdcvalidator checkout, or CONFORMANCE_DIR
npm run build
依存関係は厳密に固定されています。@xmldom/xmldom 0.9.12(解析用)と fontoxpath 3.34.0(アサーション用の XPath 3.1)です。
ライセンス
Apache-2.0。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。