Show Menu
トピック×

付録

このドキュメントでは、スキーマレジストリAPIの操作に関する補足情報を提供します。

互換モード

エクスペリエンスデータモデル(XDM)は、アドビが推進する公式に文書化された仕様で、デジタルエクスペリエンスの相互運用性、表現力、パワーを向上させます。 アドビは、GitHub上の オープンソースプロジェクトにソースコードと正式なXDM定義を保持しています 。 これらの定義はXDM標準表記で記述され、JSON-LD(リンクデータのJavaScript Object Notation)とJSONスキーマをXDMスキーマを定義する文法として使用します。
パブリックリポジトリで正式なXDM定義を調べると、標準のXDMはAdobe Experience Platformでの表示とは異なることがわかります。 Experience Platformで表示される内容は「互換性モード」と呼ばれ、標準のXDMとプラットフォーム内での使用方法の間の単純なマッピングを提供します。

互換モードの動作

互換モードを使用すると、標準のXDM内の値を変更しながらセマンティックを同じままにすることで、XDM JSON-LDモデルが既存のデータインフラストラクチャと連携できます。 ネストされたJSON構造を使用し、スキーマをツリー形式で表示します。
標準のXDMと互換モードの主な違いは、フィールド名のプレフィックス「xdm:」が削除されたことです。
標準のXDMと互換モードの両方で、誕生日関連のフィールド(「description」属性を削除した状態)を並べて比較した結果を次に示します。 「Compatibility Mode」フィールドには、「meta:xdmField」属性と「meta:xdmType」属性に、XDMフィールドへの参照とそのデータ型が含まれています。
標準XDM 互換モード
        { "xdm:birthDate": { "title": "生年月日", "種類": "string", "format": "date", }, "xdm:birthDayAndMonth": { "title": "生年月日", "種類": "string", "pattern": "[0-1][0-9]-[0-9][0-9]", }, "xdm:birthYear": { "title": "生年"、"タイプ": "integer", "minimum": 1, "maximum": 32767 }
      

        { "birthDate": { "title": "生年月日", "種類": "string", "format": "date", "meta:xdmField": "xdm:birthDate", "meta:xdmType": "date" }, "birthDayAndMonth": { "title": "生年月日", "種類": "string", "pattern": "[0-1][0-9]-[0-9][0-9]"、"meta:xdmField": "xdm:birthDayAndMonth", "meta:xdmType": "string" }, "birthYear": { "title": "生年"、"タイプ": "integer", "minimum": 1, "maximum": 32767, "meta:xdmField": "xdm:birthYear", "meta:xdmType": "short" }
      

互換モードが必要な理由

Adobe Experience Platformは、複数のソリューションおよびサービスと連携するように設計されており、それぞれ独自の技術的な課題と制限(特定のテクノロジーでの特殊文字の扱いなど)を持ちます。 これらの制限を克服するため、互換モードが開発されました。
カタログ、Data Lake、リアルタイム顧客プロファイルを含むほとんどのExperience Platformサービスでは、標準のXDMの代わりに互換モードが使用されます。 スキーマレジストリAPIでも互換モードが使用され、このドキュメントの例はすべて互換モードを使用して表示されます。
標準のXDMとExperience Platformでの動作との間でマッピングが行われることを知っておくことをお勧めしますが、これはPlatform Servicesの使用に影響を与えないでください。
オープンソースプロジェクトは利用できますが、スキーマレジストリを通じてリソースとの対話に関しては、このドキュメントのAPIの例が、知り、従うべきベストプラクティスを提供します。

APIでのXDMフィールドタイプの定義

XDMスキーマは、JSONスキーマ標準と基本的なフィールドタイプを使用して定義され、Experience Platformによって適用されるフィールド名に対する追加の制限があります。 XDMでは、形式やオプションの制約を使用して、追加のフィールドの種類を定義できます。 XDMフィールドタイプは、フィールドレベルの属性( )で公開され meta:xdmType ます。
meta:xdmType はシステム生成値なので、このプロパティをフィールドのJSONに追加する必要はありません。 ベストプラクティスは、JSONスキーマタイプ(文字列や整数など)と、以下の表に定義されている適切な最小/最大制約を使用することです。
次の表に、オプションのプロパティを使用して、スカラーフィールドの種類とより具体的なフィールドの種類を定義するための適切な形式の概要を示します。 オプションのプロパティとタイプ固有のキーワードに関する詳細は、 JSONスキーマのドキュメントを参照してください
まず、目的のフィールドタイプを探し、提供されたサンプルコードを使用してAPIリクエストを作成します。
目的のタイプ (meta:xdmType) JSON (JSONスキーマ) コードサンプル
文字列 type: stringOptionalプロパティ:
  • pattern
  • minLength
  • maxLength
        "sampleField": { "type": "string", "pattern": "^[A-Z]{2}$", "maxLength": 2 }
      

uri (xdmType:string) type: stringformat: uri
        "sampleField": { "type": "string", "format": "uri" }
      

enum (xdmType: 文字列) type: stringOptionalプロパティ:
  • default
「meta:enum」を使用して、顧客に表示するオプションラベルを指定します。
        "sampleField": { "type": "string", "enum": [ "value1", "value2", "value3" ], "meta:enum": { "value1": "値1", "値2": "値2", "値3": "値3" }, "デフォルト": "value1" }
      

数値 type: numberminimum: ±2.23×10^308 最大: ±1.80×10^308
        "sampleField": { "type": "number" }
      

long type: 最 大整数:2^53+1 最小:-2^53+1
        "sampleField": { "type": "integer", "minimum": -9007199254740992、「maximum」: 9007199254740992 }
      

int type: 最大 整数:2^31 最小:-2^31
        "sampleField": { "type": "integer", "minimum": -2147483648、「maximum」: 2147483648 }
      

short type: 最大 整数:2^15 最小:-2^15
        "sampleField": { "type": "integer", "minimum": -32768、「maximum」: 32768 }
      

byte type: 最大 整数:2^7 最小:-2^7
        "sampleField": { "type": "integer", "minimum": -128、"maximum": 128 }
      

ブール型 type: boolean {true, false} オプションのプロパティ:
  • default
        "sampleField": { "type": "boolean", "default": false }
      

date type: stringformat: date
        "sampleField": { "type": "string", "format": "日付", "例": ["2004-10-23"] }
      

RFC 3339の RFC 3339セクション5.6 で定義される日付。ここで、"full-date" = date-fullyear "-" date-month "-" date-mday (YYYY-MM-DD)
date-time type: stringformat: date-time
        "sampleField": { "type": "string", "format": "日付時間"、"例": ["2004-10-23T12:00:00-06:00"] }
      

RFC 3339の SSXセクション5.6 で定義される日付 — 時刻。ここで、"date-time" = full-date "T" full-time: (YYYY-MM-DD'T'HH:MM:SS.SSX)
array type: array items.typeは、任意のスカラー型を使用して定義できます。
        "sampleField": { "type": "array", "items": { "type": "string" } }
      

別のスキーマで定義されたオブジェクトの配列:
        "sampleField": { "type": "array", "items": { "$ref": "id" } }
      

ここで、"id"は参照スキーマーの{id}です。
object type: object 。{field}.typeは、任意のスカラー型を使用して定義できます。
        "sampleField": { "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "number" } } } }
      

参照スキーマで定義されるタイプ「object」のフィールド:
        "sampleField": { "type": "オブジェクト", "$ref": "id" }
      

ここで、"id"は参照スキーマーの{id}です。
map type: objectNote: 'map'データ型の 使用は、業界およびベンダーのスキーマ使用のために予約されており、テナント定義フィールドでは使用できません。 ある値にマップするキーとしてデータが表される場合や、静的なスキーマにキーを適切に含めることができず、データ値として扱う必要がある場合は、標準スキーマで使用されます。 'map'はプロパティを定義してはいけません。 'map'に含まれる値のタイプを記述する「additionalProperties」スキーマを1つ定義する必要があります。 XDMの「map」には、1つのデータ型のみを含めることができます。 値は、配列やオブジェクト、または別のスキーマへの参照を含む任意の有効なXDMスキーマ定義です($ref経由)。 値のタイプが「string」のフィールドをマップ:
        "sampleField": { "type": "object", "additionalProperties":{ "type": "string" } }
      

文字列の配列である値を持つフィールドをマップします。
        "sampleField": { "type": "object", "additionalProperties":{ "type": "array", "items": { "type": "string" } } }
      

別のスキーマを参照するMapフィールド:
        "sampleField": { "type": "object", "additionalProperties":{ "$ref": "id" } }
      

ここで、"id"は参照スキーマーの{id}です。

XDM型の他の形式へのマッピング

次の表に、「meta:xdmType」と他のシリアル化形式の対応付けを示します。
XDM Type
(meta:xdmType)
JSON
(JSONスキーマ)
パーケ
(タイプ/注釈)
Spark SQL
Java
スカラ
.NET
CosmosDB
MongoDB
エアロスパイク
プロトバフ2
文字列
type:string
BYTE_ARRAY/UTF8
StringType
java.lang.String
文字列
System.String
文字列
文字列
文字列
文字列
数値
type:number
重複
DoubleType
java.lang.Double
重複
System.Double
数値
重複
重複
重複
long
type:
integermaximum:253+1
INT64
LongType
java.lang.Long
ロング
System.Int64
数値
long
整数
int64
int
type:
integermaximum:231
INT32/INT_32
IntegerType
java.lang.Integer
整数
System.Int32
数値
int
整数
int32
short
type:
integermaximum:215
INT32/INT_16
ShortType
java.lang.Short
Short
System.Int16
数値
int
整数
int32
byte
type:
integermaximum:27
INT32/INT_8
ByteType
java.lang.Short
バイト
System.SByte
数値
int
整数
int32
ブール型
type:boolean
BOOLEAN
BooleanType
java.lang.Boolean
Boolean
System.Boolean
Boolean
bool
整数
整数
date
type:
stringformat:date
(RFC 3339、セクション5.6)
INT32/DATE
DateType
java.util.Date
java.util.Date
System.DateTime
文字列
date
整数
(unix millis)
int64
(unix millis)
date-time
type:
stringformat:date-time
(RFC 3339、セクション5.6)
INT64/TIMESTAMP_MILLIS
TimestampType
java.util.Date
java.util.Date
System.DateTime
文字列
timestamp
整数
(unix millis)
int64
(unix millis)
map
object
MAP注釈付きグループ
< key_type>は、マップ値のSTRING
< value_type>型である必要があります
MapType
"keyType"はStringType
"valueType"はmap値の型である必要があります。
java.util.Map
マップ
---
object
object
map
map< key_type, value_type>