Show Menu
TEMAS×

Apéndice

Este documento proporciona información adicional relacionada con el trabajo con la API del Registro de Esquemas.

Modo de compatibilidad

El modelo de datos de experiencia (XDM) es una especificación documentada públicamente, impulsada por Adobe para mejorar la interoperabilidad, la expresividad y el poder de las experiencias digitales. Adobe mantiene el código fuente y las definiciones XDM formales en un proyecto de código abierto en GitHub . Estas definiciones se escriben en notación estándar XDM, utilizando JSON-LD (JavaScript Object Notation for Linked Data) y Esquema JSON como gramática para definir esquemas XDM.
Al consultar las definiciones XDM formales en el repositorio público, puede ver que el XDM estándar difiere de lo que ve en Adobe Experience Platform. Lo que se ve en la plataforma de experiencia se llama Modo de compatibilidad y proporciona una asignación sencilla entre el XDM estándar y la forma en que se utiliza dentro de la plataforma.

Funcionamiento del modo de compatibilidad

El modo de compatibilidad permite que el modelo JSON-LD de XDM funcione con la infraestructura de datos existente alterando los valores dentro del XDM estándar manteniendo la semántica igual. Utiliza una estructura JSON anidada, que muestra esquemas en un formato de árbol.
La principal diferencia que notará entre el modo XDM estándar y el modo de compatibilidad es la eliminación del prefijo "xdm:" para los nombres de campo.
A continuación se muestra una comparación paralela que muestra los campos relacionados con el cumpleaños (con los atributos "description" eliminados) tanto en el modo XDM estándar como en el modo de compatibilidad. Observe que los campos Modo de compatibilidad incluyen una referencia al campo XDM y su tipo de datos en los atributos "meta:xdmField" y "meta:xdmType".
XDM estándar Modo de compatibilidad
        { "xdm:bornDate": { "title": "Fecha de nacimiento", "tipo": "string", "format": "date", }, "xdm:bornDayAndMonth": { "title": "Fecha de nacimiento", "tipo": "string", "pattern": "[0-1][0-9]-[0-9][0-9]", }, "xdm:bornYear": { "title": "Año de nacimiento", "tipo": "integer", "Minimum": 1, "máximo": 32767 }
      

        { "bornDate": { "title": "Fecha de nacimiento", "tipo": "string", "format": "date", "meta:xdmField": "xdm:bornDate", "meta:xdmType": "date" }, "bornDayAndMonth": { "title": "Fecha de nacimiento", "tipo": "string", "pattern": "[0-1][0-9]-[0-9][0-9]", "meta:xdmField": "xdm:bornDayAndMonth", "meta:xdmType": "string" }, "bornYear": { "title": "Año de nacimiento", "tipo": "integer", "Minimum": 1, "máximo": 32767, "meta:xdmField": "xdm:bornYear", "meta:xdmType": "short" }
      

¿Por qué es necesario el modo de compatibilidad?

Adobe Experience Platform está diseñado para trabajar con múltiples soluciones y servicios, cada uno con sus propios desafíos y limitaciones técnicos (por ejemplo, cómo ciertas tecnologías manejan caracteres especiales). Para superar estas limitaciones, se desarrolló el Modo de compatibilidad.
La mayoría de los servicios de la plataforma de experiencia, incluidos Catálogo, Data Lake y Perfil del cliente en tiempo real, utilizan el modo de compatibilidad en lugar del XDM estándar. La API del Registro de Esquema también utiliza el Modo de compatibilidad y todos los ejemplos de este documento se muestran mediante el Modo de compatibilidad.
Vale la pena saber que se produce una asignación entre el XDM estándar y la manera en que se realiza en la plataforma de experiencia, pero no debería afectar al uso de los servicios de plataforma.
El proyecto de código abierto está disponible para usted, pero cuando se trata de interactuar con los recursos a través del Registro de Esquemas, los ejemplos de API de este documento proporcionan las mejores prácticas que debe conocer y seguir.

Definición de tipos de campo XDM en la API

Los esquemas XDM se definen utilizando estándares de Esquema JSON y tipos de campo básicos, con restricciones adicionales para los nombres de campo que se aplican en Experience Platform. XDM permite definir tipos de campo adicionales mediante el uso de formatos y restricciones opcionales. Los tipos de campo XDM están expuestos por el atributo de nivel de campo meta:xdmType .
meta:xdmType es un valor generado por el sistema y, por lo tanto, no es necesario agregar esta propiedad al JSON para el campo. Lo mejor es utilizar tipos de Esquemas JSON (como cadena e entero) con las restricciones mínimas/máximas adecuadas, tal como se define en la tabla siguiente.
En la tabla siguiente se describe el formato adecuado para definir tipos de campos escalares y tipos de campos más específicos mediante propiedades opcionales. Puede obtener más información sobre las propiedades opcionales y las palabras clave específicas del tipo a través de la documentación del Esquema JSON.
Para empezar, busque el tipo de campo deseado y utilice el código de muestra proporcionado para generar la solicitud de API.
Tipo deseado(meta:xdmType) JSON (Esquema JSON) Ejemplo de código
string type: stringPropiedades opcionales:
  • pattern
  • minLength
  • maxLength
        "sampleField": { "type": "string", "pattern": "^[A-Z]{2}$", "maxLength": 2 }
      

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

enum (xdmType: string) type: stringOptional, propiedad:
  • predeterminada
Especifique las etiquetas de opciones orientadas al cliente mediante "meta:enum":
        "sampleField": { "type": "string", "enum": [ "valor1", "valor2", "valor3" ], "meta:enum": { "value1": "Valor 1", "valor2": "Valor 2", "valor3": "Valor 3" }, "predeterminado": "value1" }
      

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

long type: entero máximo:2^53+1 mínimo:-2^53+1
        "sampleField": { "type": "integer", "Minimum": -9007199254740992, "máximo": 9007199254740992 }
      

int type: entero máximo:2^31 mínimo:-2^31
        "sampleField": { "type": "integer", "Minimum": -2147483648, "máximo": 2147483648 }
      

short type: entero máximo:2^15 mínimo:-2^15
        "sampleField": { "type": "integer", "Minimum": -32768, "máximo": 32768 }
      

byte type: entero máximo:2^7 mínimo:-2^7
        "sampleField": { "type": "integer", "Minimum": -128, "máximo": 128 }
      

Booleano type: boolean {true, false} Propiedad opcional:
  • predeterminada
        "sampleField": { "type": "boolean", "default": false }
      

date type: formato de cadena: date
        "sampleField": { "type": "string", "format": "date", "samples": ["2004-10-23"] }
      

Fecha tal como se define en RFC 3339, sección 5.6 , donde "full-date" = date-fullyear "-" date-month "-" date-mday (AAAA-MM-DD)
date-time type: formato de cadena: date-time
        "sampleField": { "type": "string", "format": "date-time", "ejemplos": ["2004-10-23T12:00:00-06:00"] }
      

Fecha y hora tal como se define en RFC 3339, sección 5.6 , donde "fecha y hora" = fecha completa "T" a tiempo completo: (AAAA-MM-DD'HH:MM:SS.SSX)
array type: array items.type se puede definir con cualquier tipo escalar:
        "sampleField": { "type": "array", "items": { "type": "string" } }
      

Matriz de objetos definida por otro esquema:
        "sampleField": { "type": "array", "items": { "$ref": "id" } }
      

Donde "id" es el {id} del esquema de referencia.
object type: object propiedades de contenidos.{field}.type se puede definir con cualquier tipo escalar:
        "sampleField": { "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "number" } } }
      

Campo de tipo "objeto" definido por un esquema de referencia:
        "sampleField": { "type": "object", "$ref": "id" }
      

Donde "id" es el {id} del esquema de referencia.
map type: objectNota: El uso del tipo de datos 'map' está reservado para el uso de esquemas del sector y del proveedor y no está disponible para su uso en campos definidos por el inquilino. Se utiliza en esquemas estándar cuando los datos se representan como claves que se asignan a algún valor, o cuando las claves no pueden incluirse razonablemente en un esquema estático y deben tratarse como valores de datos. UN 'mapa' NO DEBE definir ninguna propiedad. DEBE definir un solo esquema "extraProperties" para describir el tipo de valores contenidos en el "mapa". Un 'mapa' en XDM puede contener un solo tipo de datos. Los valores pueden ser cualquier definición de esquema XDM válida, incluyendo una matriz o un objeto, o como referencia a otro esquema (mediante $ref). Campo de mapa con valores de tipo 'string':
        "sampleField": { "type": "object", "extraProperties":{ "type": "string" } }
      

Campo de asignación con valores como matriz de cadenas:
        "sampleField": { "type": "object", "extraProperties":{ "type": "array", "items": { "type": "string" } } } }
      

Campo de mapa que hace referencia a otro esquema:
        "sampleField": { "type": "object", "extraProperties":{ "$ref": "id" } }
      

Donde "id" es el {id} del esquema de referencia.

Asignación de tipos XDM a otros formatos

La tabla siguiente describe la asignación entre "meta:xdmType" y otros formatos de serialización.
Tipo
XDM(meta:xdmType)
JSON
(Esquema JSON)
Parquet
(tipo/anotación)
Spark SQL
Java
Scala
.NET
CosmosDB
MongoDB
Aerospike
Protobuf 2
string
type:string
BYTE_ARRAY/UTF8
StringType
java.lang.String
Cadena
System.String
Cadena
string
Cadena
string
number
type:number
DOBLE
DoubleType
java.lang.Doble
Duplicada
System.Doble
Número
doble
Duplicada
doble
long
tipo:
entero máximo:253+1
INT64
LongType
java.lang.Long
Largo
System.Int64
Número
long
Número entero
int64
int
tipo:
entero máximo:231
INT32/INT_32
IntegerType
java.lang.Integer
Int
System.Int32
Número
int
Número entero
int32
short
tipo:
entero máximo:215
INT32/INT_16
ShortType
java.lang.Short
Corto
System.Int16
Número
int
Número entero
int32
byte
tipo:
entero máximo:27
INT32/INT_8
ByteType
java.lang.Short
Byte
System.SByte
Número
int
Número entero
int32
Booleano
type:boolean
BOOLEAN
BooleanType
java.lang.Boolean
Booleano
System.Boolean
Booleano
bool
Número entero
Número entero
date
type:
stringformat:date
(RFC 3339, sección 5.6)
INT32/FECHA
DateType
java.util.Date
java.util.Date
System.DateTime
Cadena
date
Entero
(milis unix)
int64
(milisegundos unix)
date-time
type:
stringformat:date-time
(RFC 3339, sección 5.6)
INT64/TIMESTAMP_MILLIS
TimestampType
java.util.Date
java.util.Date
System.DateTime
Cadena
timestamp
Entero
(milis unix)
int64
(milisegundos unix)
map
object
El grupo
anotado MAP< key_type> DEBE ser STRING
< value_type> tipo de valores de mapa
MapType
"keyType" DEBE ser StringType
"valueType" es el tipo de valores de asignación.
java.util.Map
Mapa
---
object
object
map
map< key_type, value_type>