Namespace no Experience Data Model (XDM)
Todos os campos nos esquemas do Experience Data Model (XDM) têm um namespace associado. Esses namespaces permitem estender seus esquemas e evitar colisões de campo à medida que diferentes componentes de esquema são reunidos. Este documento fornece uma visão geral dos namespaces no XDM e como eles são representados na API do Registro de Esquema.
O namespace permite definir um campo em um namespace como significando algo diferente do mesmo campo em um namespace diferente. Na prática, o namespace de um campo indica quem criou o campo (como o XDM padrão (Adobe), um fornecedor ou sua organização).
Por exemplo, considere um esquema XDM que usa o [grupo de campos de Detalhes de Contato Pessoal], que tem um campo mobilePhone
padrão que existe no namespace xdm
. No mesmo esquema, você também pode criar um campo mobilePhone
separado em um namespace diferente (sua ID de locatário). Ambos os campos podem coexistir enquanto têm diferentes significados ou restrições subjacentes.
Sintaxe de namespace
As seções a seguir demonstram como os namespaces são atribuídos na sintaxe XDM.
XDM padrão standard
A sintaxe XDM padrão fornece informações sobre como os namespaces são representados nos esquemas (incluindo como são traduzidos na Adobe Experience Platform).
O XDM padrão usa a sintaxe JSON-LD para atribuir namespaces a campos. Este namespace vem na forma de um URI (como https://ns.adobe.com/xdm
para o namespace xdm
) ou como um prefixo abreviado que é configurado no atributo @context
de um esquema.
Veja a seguir um exemplo de esquema para um produto na sintaxe XDM padrão. Com exceção de @id
(o identificador exclusivo conforme definido pela especificação JSON-LD), cada campo em properties
começa com um namespace e termina com o nome do campo. Se estiver usando um prefixo abreviado definido em @context
, o namespace e o nome do campo serão separados por dois-pontos (:
). Se não estiver usando um prefixo, o namespace e o nome do campo serão separados por uma barra (/
).
{
"$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
.@id
xdm:sku
xdm
é o namespace (https://ns.adobe.com/xdm
) e sku
é o nome do campo.https://ns.adobe.com/xdm/channels/application
https://ns.adobe.com/xdm/channels
é o namespace e application
é o nome do campo.https://ns.adobe.com/vendorA/product/stockNumber
https://ns.adobe.com/vendorA/product
é o namespace do fornecedor e stockNumber
é o nome do campo.tenantId:internalSku
tenantId
é o namespace do locatário (https://ns.adobe.com/tenantId
) e internalSku
é o nome do campo.Modo de compatibilidade compatibility
No Adobe Experience Platform, os esquemas XDM são representados na sintaxe Modo de Compatibilidade, que não usa a sintaxe JSON-LD para representar namespaces. Em vez disso, o Platform converte o namespace em um campo principal (começando com um sublinhado) e aninha os campos sob ele.
Por exemplo, o XDM padrão repo:createdDate
é convertido em _repo.createdDate
e aparece na seguinte estrutura no Modo de Compatibilidade:
"_repo": {
"type": "object",
"properties": {
"createdDate": {
"type": "string",
"format": "datetime"
}
}
}
Os campos que usam o namespace xdm
aparecem como campos raiz em properties
e removem o prefixo xdm:
que apareceria na sintaxe XDM padrão. Por exemplo, xdm:sku
está simplesmente listado como sku
.
O JSON a seguir representa como o exemplo de sintaxe XDM padrão mostrado acima é traduzido para o Modo de compatibilidade.
{
"$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"
}
}
}
}
}
Próximas etapas
Este guia forneceu uma visão geral dos namespaces XDM e como eles são representados no JSON. Para obter mais informações sobre como configurar esquemas XDM usando a API, consulte o Guia da API do Registro de Esquemas.