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

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

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

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

命名空间语法

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

标准XDM

标准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 是字段名称。

兼容模式

在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指南.

在此页面上