Experience Data Model (XDM)中的命名空间

IMPORTANT
在XDM中,命名空间(本页的主题)用于区分架构中的字段。 这与Identity Service中的身份命名空间概念不同,该概念使用命名空间来区分身份值。 请阅读相关文档 身份服务中的命名空间 以了解更多信息。

体验数据模型(XDM)架构中的所有字段都有关联的命名空间。 利用这些命名空间,可扩展架构并在将不同的架构组件组合在一起时防止字段冲突。 本文档概述了XDM中的命名空间以及它们在中的表示方式 架构注册表API.

命名空间允许您在一个命名空间中定义一个字段,因为这意味着与不同命名空间中的相同字段不同。 实际上,字段的命名空间指示创建字段的人员(例如标准XDM(Adobe)、供应商或您的组织)。

例如,假定一个XDM架构使用 个人联系人详细信息 字段组,其中有一个标准 mobilePhone 存在于中的字段 xdm 命名空间。 在同一架构中,您还可以自行创建一个 mobilePhone 其他命名空间下的字段(您的 租户ID)。 这两个字段可以共存,但具有不同的底层含义或约束。

命名空间语法

以下部分演示了如何在XDM语法中分配命名空间。

标准XDM standard

标准XDM语法可让您深入了解命名空间在架构中的表示方式(包括 如何在Adobe Experience Platform中翻译它们)。

标准XDM使用 JSON-LD 将命名空间分配给字段的语法。 此命名空间采用URI形式(如 https://ns.adobe.com/xdm 对于 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
一个对象,定义可以使用的速记前缀,而不是下面的完整命名空间URI properties.
@id
记录的唯一标识符,由定义 JSON-LD规范.
xdm:sku
使用速记前缀表示命名空间的字段示例。 在本例中, xdm 是命名空间(https://ns.adobe.com/xdm),和 sku 是字段名称。
https://ns.adobe.com/xdm/channels/application
使用完整命名空间URI的字段示例。 在本例中, https://ns.adobe.com/xdm/channels 是命名空间,并且 application 是字段名称。
https://ns.adobe.com/vendorA/product/stockNumber
供应商资源提供的字段使用自己的唯一命名空间。 在此示例中, https://ns.adobe.com/vendorA/product 是供应商命名空间,并且 stockNumber 是字段名称。
tenantId:internalSku
您的组织定义的字段使用您的唯一租户ID作为其命名空间。 在此示例中, 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"
        }
      }
    }
  }
}

后续步骤

本指南概述了XDM命名空间以及它们在JSON中的表示方式。 有关如何使用API配置XDM模式的更多信息,请参见 架构注册表API指南.

recommendation-more-help
62e9ffd9-1c74-4cef-8f47-0d00af32fc07