Show Menu
TÓPICOS×

Apêndice

Este documento fornece informações complementares relacionadas ao trabalho com a API de registro do Schema.

Modo de compatibilidade

O Experience Data Model (XDM) é uma especificação documentada publicamente, impulsionada pela Adobe para melhorar a interoperabilidade, a expressividade e a potência das experiências digitais. A Adobe mantém o código-fonte e as definições formais de XDM em um projeto de código-fonte aberto no GitHub . Essas definições são escritas na notação XDM Standard, usando a notação JSON-LD (JavaScript Object Notation for Linked Data) e o Schema JSON como a gramática para definir schemas XDM.
Ao analisar as definições formais de XDM no repositório público, você pode ver que o XDM padrão é diferente do que você vê na Adobe Experience Platform. O que você está vendo na plataforma Experience é chamado de Modo de compatibilidade e fornece um mapeamento simples entre o XDM padrão e a forma como ele é usado na plataforma.

Como o Modo de compatibilidade funciona

O Modo de compatibilidade permite que o modelo XDM JSON-LD funcione com a infraestrutura de dados existente, alterando valores dentro do XDM padrão e mantendo a semântica igual. Ele usa uma estrutura JSON aninhada, exibindo schemas em um formato semelhante a uma árvore.
A principal diferença que você observará entre o XDM padrão e o Modo de compatibilidade é a remoção do prefixo "xdm:" para nomes de campos.
A seguir está uma comparação lado a lado mostrando campos relacionados ao aniversário (com atributos de "descrição" removidos) no XDM padrão e no Modo de compatibilidade. Observe que os campos Modo de compatibilidade incluem uma referência ao campo XDM e seu tipo de dados nos atributos "meta:xdmField" e "meta:xdmType".
XDM padrão Modo de compatibilidade
        { "xdm:bornDate": { "title": "Data de nascimento", "tipo": "string", "format": "date", }, "xdm:bornDayAndMonth": { "title": "Data de nascimento", "tipo": "string", "pattern": "[0-1][0-9]-[0-9][0-9]", }, "xdm:bornYear": { "title": "Ano de nascimento", "tipo": "número inteiro", "mínimo": 1, "máximo": 32767 }
      

        { "bornDate": { "title": "Data de nascimento", "tipo": "string", "format": "date", "meta:xdmField": "xdm:bornDate", "meta:xdmType": "date" }, "bornDayAndMonth": { "title": "Data de nascimento", "tipo": "string", "pattern": "[0-1][0-9]-[0-9][0-9]", "meta:xdmField": "xdm:bornDayAndMonth", "meta:xdmType": "string" }, "bornYear": { "title": "Ano de nascimento", "tipo": "número inteiro", "mínimo": 1, "máximo": 32767, "meta:xdmField": "xdm:bornYear", "meta:xdmType": "short" }
      

Por que o Modo de compatibilidade é necessário?

A Adobe Experience Platform foi projetada para trabalhar com várias soluções e serviços, cada um com seus próprios desafios e limitações técnicas (por exemplo, como determinadas tecnologias lidam com caracteres especiais). A fim de ultrapassar estas limitações, foi desenvolvido o Modo de Compatibilidade.
A maioria dos serviços da plataforma Experience, incluindo Catálogo, Data Lake e Perfil do cliente em tempo real, usam o Modo de compatibilidade no lugar do XDM padrão. A API do Registro do Schema também usa o Modo de compatibilidade e os exemplos neste documento são mostrados usando o Modo de compatibilidade.
Vale a pena saber que um mapeamento ocorre entre o XDM padrão e a forma como ele é operacionalizado na plataforma da experiência, mas não deve afetar seu uso dos serviços da plataforma.
O projeto de código aberto está disponível para você, mas quando se trata de interagir com recursos por meio do Registro de Schemas, os exemplos de API neste documento fornecem as práticas recomendadas que você deve conhecer e seguir.

Definição de tipos de campos XDM na API

Os schemas XDM são definidos usando padrões de Schema JSON e tipos de campo básicos, com restrições adicionais para nomes de campo que são impostas pela plataforma de experiência. O XDM permite que você defina tipos de campo adicionais por meio do uso de formatos e restrições opcionais. Os tipos de campo XDM são expostos pelo atributo de nível de campo, meta:xdmType .
meta:xdmType é um valor gerado pelo sistema e, portanto, não é necessário adicionar essa propriedade ao JSON para o seu campo. A prática recomendada é usar tipos de Schemas JSON (como string e integer) com as restrições mín/máx apropriadas, conforme definido na tabela abaixo.
A tabela a seguir descreve a formatação apropriada para definir tipos de campos escalares e tipos de campos mais específicos usando propriedades opcionais. Mais informações sobre propriedades opcionais e palavras-chave específicas do tipo estão disponíveis na documentação do Schema JSON.
Para começar, localize o tipo de campo desejado e use o código de amostra fornecido para criar sua solicitação de API.
Tipo desejado(meta:xdmType) JSON (Schema JSON) Amostra de código
string tipo: propriedades stringOptional:
  • padrão
  • minLength
  • maxLength
        "sampleField": { "type": "string", "pattern": "^[A-Z]{2}$", "maxLength": 2 }
      

uri (xdmType:string) tipo: formato de string: uri
        "sampleField": { "type": "string", "format": "uri" }
      

enum (xdmType: string) tipo: propriedade stringOptional:
  • default
Especifique rótulos de opção voltados para o cliente usando "meta:enum":
        "sampleField": { "type": "string", "enum": [ "value1", "value2", "value3" ], "meta:enum": { "value1": "Valor 1", "valor 2": "Valor 2", "valor3": "Valor 3" }, "padrão": "value1" }
      

número tipo: número mínimo: ±2,23×10^308 máximo: ±1,80×10^308
        "sampleField": { "type": "number" }
      

long tipo: número inteiro máximo:2^53+1 mínimo:-2^53+1
        "sampleField": { "type": "número inteiro", "mínimo": -9007199254740992, "máximo": 9007199254740992 }
      

int tipo: número inteiro máximo:2^31 mínimo:-2^31
        "sampleField": { "type": "número inteiro", "mínimo": -2147483648, "máximo": 2147483648 }
      

short tipo: número inteiro máximo:2^15 mínimo:-2^15
        "sampleField": { "type": "número inteiro", "mínimo": -32768, "máximo": 32768 }
      

byte tipo: número inteiro máximo:2^7 mínimo:-2^7
        "sampleField": { "type": "número inteiro", "mínimo": -128, "máximo": 128 }
      

booleano tipo: propriedade boolean {true, false} Opcional:
  • default
        "sampleField": { "type": "booleano", "padrão": false }
      

date tipo: formato de string: date
        "sampleField": { "type": "string", "format": "data", "exemplos": ["2004-10-23"] }
      

Data definida pela RFC 3339, seção 5.6 , em que "data completa" = data-limite "-" data-mês "-" data-dia (AAAA-MM-DD)
data e hora tipo: formato de string: data e hora
        "sampleField": { "type": "string", "format": "date-time", "exemplos": ["2004-10-23T12:00:00-06:00"] }
      

Data e hora, conforme definido pela seção 5.6 da RFC 3339, em que "data e hora" = data completa "T" em tempo integral: (AAAA-MM-DD'T'HH:MM:SS.SSSSX)
matriz tipo: matriz items.type pode ser definido usando qualquer tipo escalar:
        "sampleField": { "type": "array", "items": { "type": "string" } }
      

Matriz de objetos definidos por outro schema:
        "sampleField": { "type": "array", "items": { "$ref": "id" }
      

Onde "id" é o {id} do schema de referência.
objeto tipo: objeto de mídia.{field}.type pode ser definido usando qualquer tipo escalar:
        "sampleField": { "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "number" } }
      

Campo do tipo "objeto" definido por um schema de referência:
        "sampleField": { "type": "object", "$ref": "id" }
      

Onde "id" é o {id} do schema de referência.
mapa tipo: objectNote: o uso do tipo de dados 'map' é reservado para uso pelo setor e pelo schema do fornecedor e não está disponível para uso em campos definidos pelo locatário. É usado em schemas padrão quando os dados são representados como chaves que mapeiam para algum valor, ou quando as chaves não podem ser incluídas em um schema estático e devem ser tratadas como valores de dados. UM 'mapa' NÃO DEVE definir nenhuma propriedade. É NECESSÁRIO definir um único schema "additionalProperties" para descrever o tipo de valores contidos no 'map'. Um "mapa" no XDM pode conter apenas um único tipo de dados. Os valores podem ser qualquer definição válida de schema XDM, incluindo uma matriz ou um objeto, ou como referência a outro schema (via $ref). Mapear campo com valores do tipo 'string':
        "sampleField": { "type": "object", "additionalProperties":{ "type": "string" } }
      

Mapear campo com valores sendo uma matriz de sequências de caracteres:
        "sampleField": { "type": "object", "additionalProperties":{ "type": "array", "items": { "type": "string" } }
      

Campo de mapa que faz referência a outro schema:
        "sampleField": { "type": "object", "additionalProperties":{ "$ref": "id" }
      

Onde "id" é o {id} do schema de referência.

Mapeamento de tipos XDM para outros formatos

A tabela abaixo descreve o mapeamento entre "meta:xdmType" e outros formatos de serialização.
Tipo
XDM(meta:xdmType)
JSON
(Schema JSON)
Parquet
(tipo/anotação)
SQL Spark
Java
Scala
.NET
CosmosDB
MongoDB
Aerospie
Protobuf 2
string
tipo:string
BYTE_ARRAY/UTF8
StringType
java.lang.String
String
System.String
String
string
String
string
número
tipo:número
DUPLO
DoubleType
java.lang.Duplo
Duplo
Sistema.Duplo
Número
duplo
Duplo
duplo
long
tipo:
número inteiro máximo:253+1
INT64
LongType
java.lang.Long
Longo
System.Int64
Número
long
Número inteiro
int64
int
type:
integermaximum:231
INT32/INT_32
IntegerType
java.lang.Integer
Int
System.Int32
Número
int
Número inteiro
int32
short
type:
integermaximum:215
INT32/INT_16
ShortType
java.lang.Short
Curto
System.Int16
Número
int
Número inteiro
int32
byte
type:
integermaximum:27
INT32/INT_8
ByteType
java.lang.Short
Byte
System.SByte
Número
int
Número inteiro
int32
booleano
tipo:booleano
BOOLEANO
BooleanType
java.lang.Boolean
Booleano
System.Boolean
Booleano
bool
Número inteiro
Número inteiro
date
type:
stringformat:date
(RFC 3339, seção 5.6)
INT32/DATE
DateType
java.util.Date
java.util.Date
System.DateTime
String
date
Inteiro
(unix millis)
int64
(unix millis)
data e hora
type:
stringformat:date-time
(RFC 3339, seção 5.6)
INT64/TIMESTAMP_MILLIS
TimestampType
java.util.Date
java.util.Date
System.DateTime
String
carimbo de data e hora
Inteiro
(unix millis)
int64
(unix millis)
mapa
objeto
O grupo
anotado MAP< key_type> DEVE ser STRING
< value_type> do tipo de valores de mapa
MapType
"keyType" DEVE ser StringType
"valueType" é o tipo de valores de mapa.
java.util.Map
Mapa
---
objeto
objeto
mapa
map< key_type, value_type>