Show Menu
主题×

附录

本文档提供与使用模式注册表API相关的补充信息。

兼容性模式

Experience Data Model(XDM)是一个公开记录的规范,由Adobe推动,旨在提高数字体验的互操作性、表现力和强大功能。 Adobe在GitHub上的开放源项目中维护 源代码和正式XDM定义 。 这些定义以XDM标准记号编写,使用JSON-LD(链接数据的JavaScript对象记号)和JSON模式作为定义XDM模式的语法。
在公共存储库中查看正式的XDM定义时,您会发现标准XDM与Adobe Experience Platform中看到的不同。 您在Experience Platform中看到的内容称为兼容性模式,它提供了标准XDM与平台内使用方式之间的简单映射。

兼容性模式的工作原理

兼容性模式允许XDM JSON-LD模型通过更改标准XDM中的值,同时保持语义相同,与现有数据基础结构一起使用。 它使用嵌套的JSON结构,以类树格式显示模式。
标准XDM和兼容性模式之间的主要区别是删除了字段名称的“xdm:”前缀。
下面是一个并排比较,其中显示了标准XDM和兼容性模式中与生日相关的字段(已删除“description”属性)。 请注意,兼容性模式字段包括对“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设计为可与多种解决方案和服务结合使用,每种解决方案和服务都有各自的技术挑战和限制(例如,某些技术如何处理特殊特征)。 为了克服这些限制,开发了兼容性模式。
大多数Experience Platform服务(包括目录、数据湖和实时客户用户档案)都使用兼容性模式代替标准XDM。 模式注册表API还使用兼容性模式,此文档中的示例都使用兼容性模式显示。
值得知道的是,标准XDM与在Experience Platform中操作的方式之间有映射,但这不应影响您对平台服务的使用。
开放源项目可供您使用,但在通过模式注册表与资源交互时,本文档中的API示例提供您应了解和遵循的最佳实践。

在API中定义XDM字段类型

XDM模式使用JSON模式标准和基本字段类型进行定义,并对Experience Platform强制实施的字段名称进行附加约束。 XDM允许您通过使用格式和可选约束定义其他字段类型。 XDM字段类型由字段级属性显示 meta:xdmType
是系 meta:xdmType 统生成的值,因此您无需将此属性添加到字段的JSON中。 最佳实践是使用JSON模式类型(如字符串和整数),并按照下表中的定义设置相应的最小/最大约束。
下表概述了使用可选属性定义标量字段类型和更具体的字段类型的相应格式。 有关可选属性和类型特定关键字的更多信息,请通过 JSON模式文档获取
要开始,请查找所需的字段类型,并使用提供的示例代码构建API请求。
所需类型 (meta:xdmType) JSON (JSON模式) 代码示例
字符串 type: string可选属性:
  • 图案
  • 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属性:
  • 默认
使用“meta:enum”指定面向客户的选项标签:
        “sampleField”:{ "type":"string", "enum":[ "value1", "value2", "value3" ], "meta:enum:{ "value1":“值1”、“值2”:“值2”、“值3”:"Value 3" }, "default":"value1" }
      

数字 type:最低 数量:最大为±2.23×10^308 :±1.80×10^308
        “sampleField”:{ "type":"number" }
      

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 }
      

type:最 大积分:2^15 最小值:-2^15
        “sampleField”:{ "type":“integer”、“minimum”:-32768, "maximum":32768 }
      

字节 type:最 大积分:2^7 最小值:-2^7
        “sampleField”:{ "type":“integer”、“minimum”:-128, "maximum":128 }
      

布尔 type:boolean {true, false}可 选属性:
  • 默认
        “sampleField”:{ "type":“boolean”、“default”:false }
      

date type: stringformat:date
        “sampleField”:{ "type":"string", "format":“date”、“examples”:["2004-10-23"] }
      

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":“date-time”、“examples”:["2004-10-23T12:00:00-06:00"] }
      

Date-Time(由 RFC 3339第5.6节定义),其中 “date-time”=完整日期“T”全时: (YYYY-MM-DD'T'HH:MM:SS.SSX)
阵列 type:阵列 items.type可以使用任何标量类型定义:
        “sampleField”:{ "type":“array”、“items”:{ "type":"string" } }
      

由另一个模式定义的对象数组:
        “sampleField”:{ "type":“array”、“items”:{ "$ref":"id" } }
      

其中,“id”是引用模式的{id}。
对象 type:对象 属性。{field}.type可以使用任何标量类型定义:
        “sampleField”:{ "type":“object”、“properties”:{ "field1":{ "type":"string" }, "field2":{ "type":"number" } } }
      

引用模式定义的“object”类型字段:
        “sampleField”:{ "type":“对象”、“$ref”:"id" }
      

其中,“id”是引用模式的{id}。
地图 type:对 象注 意:“map”数据类型的使用是为行业和供应商模式的使用而保留的,不可用于租户定义的字段。 当数据表示为映射到某些值的键时,或者当键不能合理地包含在静态模式中且必须被视为数据值时,它会在标准模式中使用。 “映射”不能定义任何属性。 它必须定义一个“additionalProperties”模式来描述“map”中包含的值类型。 XDM中的“map”只能包含单个数据类型。 值可以是任何有效的XDM模式定义,包括数组或对象,或作为对其他模式的引用(通过$ref)。 具有“string”类型的值的映射字段:
        “sampleField”:{ "type":"object", "additionalProperties":{ "type":"string" } }
      

映射字段,其值为字符串数组:
        “sampleField”:{ "type":"object", "additionalProperties":{ "type":“array”、“items”:{ "type":"string" } } }
      

引用其他模式的映射字段:
        “sampleField”:{ "type":"object", "additionalProperties":{ "$ref":"id" } }
      

其中,“id”是引用模式的{id}。

将XDM类型映射到其他格式

下表介绍了“meta:xdmType”与其他序列化格式之间的映射。
XDM类型
(meta:xdmType)
JSON
(JSON模式)
Parce
(类型/注释)
Spark SQL
Java
斯卡拉
.NET
CosmosDB
MongoDB
塞式飞行器
Protobuf 2
字符串
type:string
BYTE_ARRAY/UTF8
StringType
java.lang.String
字符串
System.String
字符串
字符串
字符串
字符串
数字
类型:数字
多次
DoubleType
java.lang.多次
双精度
系统。多次
数值
多次
双精度
多次
type:
integermaximum:253+1
INT64
LongType
java.lang.Long
System.Int64
数值
整数
int64
int
type:
integermaximum:231
INT32/INT_32
IntegerType
java.lang.Integer
Int
System.Int32
数值
int
整数
int32
type:
integermaximum:215
INT32/INT_16
ShortType
java.lang.Short
System.Int16
数值
int
整数
int32
字节
type:
integermaximum:27
INT32/INT_8
ByteType
java.lang.Short
字节
System.SByte
数值
int
整数
int32
布尔
类型:布尔值
BOOLEAN
BooleanType
java.lang.Boolean
Boolean
System.Boolean
Boolean
bool
整数
整数
date
type:
stringformat:date
(RFC 3339,第5.6节)
INT32/日
日期类型
java.util.Date
java.util.Date
System.DateTime
字符串
date
Integer
(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
Integer
(unix millis)
int64
(unix millis)
地图
对象
MAP annotated group
< key_type> MUST be STRING
< value_type> type of map values
MapType
"keyType" MUST be StringType
"valueType"是映射值的类型。
java.util.Map
地图
---
对象
对象
地图
map< key_type, value_type>