エクスペリエンスデータモデル(XDM)の名前空間
エクスペリエンスデータモデル(XDM)スキーマのすべてのフィールドには、名前空間が関連付けられています。 これらの名前空間を使用すると、スキーマを拡張し、様々なスキーマコンポーネントが統合されてフィールドの競合を防ぐことができます。 このドキュメントでは、XDM の名前空間の概要と、 スキーマレジストリ API での表現方法について説明します。
名前空間を使用すると、ある名前空間のフィールドを、別の名前空間の同じフィールドとは異なるものを意味するように定義できます。 実際には、フィールドの名前空間は、フィールドを作成したユーザー(標準 XDM (Adobe)、ベンダー、組織など)を示します。
例えば、 個人の連絡先の詳細 フィールドグループ を使用する XDM スキーマについて考えてみます。このフィールドグループには、xdm 名前空間に存在する標準の mobilePhone フィールドがあります。 同じスキーマ内で、別の名前空間( テナント ID)の下に別の mobilePhone フィールドを自由に作成することもできます。 これらのフィールドは両方とも混在でき、基盤となる様々な意味や制約を持つことができます。
名前空間の構文
以下の節では、XDM 構文での名前空間の割り当て方法について説明します。
標準 XDM standard
標準 XDM 構文は、スキーマでの名前空間の表現方法(Adobe Experience Platformでの名前空間の翻訳方法 など)を示すinsightを提供します。
標準 XDM では、JSON-LD 構文を使用して名前空間をフィールドに割り当てます。 この名前空間は、URI の形式(xdm 名前空間の https://ns.adobe.com/xdm など)、またはスキーマの @context 属性に設定される短縮形のプレフィックスとして提供されます。
標準 XDM 構文での製品のスキーマ例を次に示します。 @id (JSON-LD 仕様で定義された一意の ID)を除き、properties の下の各フィールドは名前空間で始まり、フィールド名で終わります。 @context で定義された短縮形のプレフィックスを使用する場合、名前空間とフィールド名はコロン(:)で区切られます。 プレフィックスを使用しない場合、名前空間とフィールド名はスラッシュ(/)で区切られます。
{
"$id": "https://ns.adobe.com/xdm/schemas/mySchema",
"title": "Product",
"description": "Represents the definition of a Project",
"@context": {
"xdm": "https://ns.adobe.com/xdm",
"repo": "http://ns.adobe.com/adobecloud/core/1.0/",
"schema": "http://schema.org",
"tenantId": "https://ns.adobe.com/tenantId"
},
"properties": {
"@id": {
"type": "string"
},
"xdm:sku": {
"type": "string"
},
"xdm:name": {
"type": "string"
},
"repo:createdDate": {
"type": "string",
"format": "datetime"
},
"https://ns.adobe.com/xdm/channels/application": {
"type": "string"
},
"schema:latitude": {
"type": "number"
},
"https://ns.adobe.com/vendorA/product/stockNumber": {
"type": "string"
},
"tenantId:internalSku": {
"type": "number"
}
}
}
@contextproperties の下で、完全な名前空間 URI の代わりに使用できる短縮形のプレフィックスを定義するオブジェクト。@idxdm:skuxdm は名前空間(https://ns.adobe.com/xdm)、sku はフィールド名です。https://ns.adobe.com/xdm/channels/applicationhttps://ns.adobe.com/xdm/channels は名前空間で、application はフィールド名です。https://ns.adobe.com/vendorA/product/stockNumberhttps://ns.adobe.com/vendorA/product はベンダーの名前空間で、stockNumber はフィールド名です。tenantId:internalSkutenantId はテナント名前空間(https://ns.adobe.com/tenantId)で、internalSku はフィールド名です。互換性モード compatibility
Adobe Experience Platformでは、XDM スキーマは、JSON-LD 構文を使用して名前空間を表さない 互換モード 構文で表されます。 代わりに、Experience Platformは(アンダースコアで始まる)名前空間を親フィールドに変換し、その下にフィールドをネストします。
例えば、標準 XDM repo:createdDate は _repo.createdDate に変換され、互換性モードでは次の構造で表示されます。
"_repo": {
"type": "object",
"properties": {
"createdDate": {
"type": "string",
"format": "datetime"
}
}
}
xdm 名前空間を使用するフィールドは、properties の下のルートフィールドとして表示され、 標準 XDM 構文 に表示される xdm: プレフィックスをドロップします。 例えば、xdm:sku は代わりに sku として単にリストされます。
次の JSON は、上記の標準 XDM 構文の例が互換性モードにどのように翻訳されるかを表しています。
{
"$id": "https://ns.adobe.com/xdm/schemas/mySchema",
"title": "Product",
"description": "Represents the definition of a Project",
"properties": {
"_id": {
"type": "string"
},
"sku": {
"type": "string"
},
"name": {
"type": "string"
},
"_repo": {
"type": "object",
"properties": {
"createdDate": {
"type": "string",
"format": "datetime"
}
}
},
"_channels": {
"type": "object",
"properties": {
"application": {
"type": "string"
}
}
},
"_schema": {
"type": "object",
"properties": {
"application": {
"type": "string"
}
}
},
"_vendorA": {
"type": "object",
"properties": {
"product": {
"type": "object",
"properties": {
"stockNumber": {
"type": "string"
}
}
}
}
},
"_tenantId": {
"type": "object",
"properties": {
"internalSku": {
"type": "number"
}
}
}
}
}
次の手順
このガイドでは、XDM 名前空間の概要と JSON での表現方法を説明しました。 API を使用して XDM スキーマを設定する方法について詳しくは、『 スキーマレジストリ API ガイド 』を参照してください。