Experience Data Model (XDM)の名前空間
Experience Data Model (XDM)スキーマのすべてのフィールドには、関連付けられた名前空間があります。 これらの名前空間を使用すると、異なるスキーマコンポーネントが統合されたときに、スキーマを拡張し、フィールドの競合を防ぐことができます。 このドキュメントでは、XDMの名前空間の概要と、Schema Registry APIでの名前空間の表現方法について説明します。
名前空間を使用すると、1つの名前空間のフィールドを、別の名前空間の同じフィールドとは異なる意味として定義できます。 実際には、フィールドの名前空間は、フィールドを作成したユーザー(標準XDM (Adobe)、ベンダー、組織など)を示します。
例えば、xdm名前空間に存在する標準mobilePhone フィールドを持つ個人連絡先の詳細 フィールドグループ を使用するXDM スキーマを考えてみましょう。 同じスキーマで、別の名前空間( テナント ID)の下に個別のmobilePhone フィールドを作成することもできます。 これらのフィールドはどちらも、異なる基本意味や制約を持ちながら共存できます。
名前空間構文
次の節では、XDM構文で名前空間を割り当てる方法を示します。
標準 XDM standard
標準のXDM構文は、insightに、スキーマで名前空間がどのように表されるかを示します(例:Adobe Experience Platformでの変換方法)。
標準XDMでは、JSON-LD構文を使用して、フィールドに名前空間を割り当てます。 この名前空間は、URI (xdm名前空間のhttps://ns.adobe.com/xdmなど)の形式、またはスキーマの@context属性で設定された略語プレフィックスの形式で提供されます。
次に、標準XDM構文の製品のスキーマの例を示します。 @id (JSON-LD仕様で定義されている一意の識別子)を除き、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 スキーマを設定する方法について詳しくは、Schema Registry API ガイド を参照してください。