Experience Data Model (XDM)中的命名空间
体验数据模型(XDM)架构中的所有字段都有关联的命名空间。 利用这些命名空间,可扩展架构并在将不同的架构组件组合在一起时防止字段冲突。 本文档概述了XDM中的命名空间以及它们在架构注册表API中的表示方式。
命名空间允许您在一个命名空间中定义一个字段,因为这意味着与不同命名空间中的相同字段不同。 实际上,字段的命名空间指示创建字段的人员(例如标准XDM(Adobe)、供应商或您的组织)。
例如,考虑使用个人联系人详细信息字段组的XDM架构,该字段组的标准mobilePhone
字段存在于xdm
命名空间中。 在同一架构中,您也可以在不同的命名空间(您的租户ID)下创建单独的mobilePhone
字段。 这两个字段可以共存,但具有不同的底层含义或约束。
命名空间语法
以下部分演示了如何在XDM语法中分配命名空间。
标准XDM standard
标准XDM语法提供了在架构中如何表示命名空间的分析(包括它们在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"
}
}
}
@context
properties
下可以使用的速记前缀,而不是完整的命名空间URI。@id
xdm:sku
xdm
是命名空间(https://ns.adobe.com/xdm
),sku
是字段名。https://ns.adobe.com/xdm/channels/application
https://ns.adobe.com/xdm/channels
是命名空间,application
是字段名。https://ns.adobe.com/vendorA/product/stockNumber
https://ns.adobe.com/vendorA/product
是供应商命名空间,stockNumber
是字段名。tenantId:internalSku
tenantId
是租户命名空间(https://ns.adobe.com/tenantId
),internalSku
是字段名。兼容模式 compatibility
在Adobe Experience Platform中,XDM架构以兼容模式语法表示,该语法不使用JSON-LD语法表示命名空间。 相反,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"
}
}
}
}
}