Show Menu
ARGOMENTI×

Appendice

Questo documento fornisce informazioni supplementari relative all'utilizzo dell' Schema Registry API.

Modalità compatibilità

Experience Data Model (XDM) è una specifica documentata pubblicamente, spinta da Adobe per migliorare l'interoperabilità, l'espressività e il potere delle esperienze digitali. Adobe mantiene il codice sorgente e le definizioni XDM formali in un progetto open source su GitHub . Queste definizioni sono scritte in Notazione standard XDM, utilizzando la Notazione oggetto JSON-LD (JavaScript Object Notation for Linked Data) e lo schema JSON come grammatica per la definizione degli schemi XDM.
Quando si esaminano le definizioni XDM formali nell'archivio pubblico, è possibile notare che lo standard XDM è diverso da quello visualizzato nell'Adobe Experience Platform . Ciò che vedete in Experience Platform è chiamato Modalità compatibilità e fornisce una semplice mappatura tra XDM standard e il modo in cui viene utilizzato all'interno Platform.

Funzionamento della modalità di compatibilità

La modalità di compatibilità consente al modello XDM JSON-LD di funzionare con l'infrastruttura dati esistente modificando i valori all'interno di XDM standard mantenendo la stessa semantica. Utilizza una struttura JSON nidificata, mostrando gli schemi in un formato simile a un albero.
La differenza principale che noterete tra XDM standard e Modalità compatibilità è la rimozione del prefisso "xdm:" per i nomi dei campi.
Di seguito è riportato un confronto affiancato che mostra i campi relativi al compleanno (con gli attributi "description" rimossi) sia in XDM standard che in Modalità compatibilità. I campi Modalità compatibilità includono un riferimento al campo XDM e al relativo tipo di dati negli attributi "meta:xdmField" e "meta:xdmType".
XDM standard Modalità compatibilità
        { "xdm:bornDate": { "title": "Data di nascita", "tipo": "string", "format": "date", }, "xdm:bornDayAndMonth": { "title": "Data di nascita", "tipo": "string", "pattern": "[0-1][0-9]-[0-9][0-9]", }, "xdm:bornYear": { "title": "Anno di nascita", "tipo": "integer", "Minimum": 1, "massimo": 32767 }
      

        { "bornDate": { "title": "Data di nascita", "tipo": "string", "format": "date", "meta:xdmField": "xdm:BirDate", "meta:xdmType": "date" }, "bornDayAndMonth": { "title": "Data di nascita", "tipo": "string", "pattern": "[0-1][0-9]-[0-9][0-9]", "meta:xdmField": "xdm:bornDayAndMonth", "meta:xdmType": "string" }, "bornYear": { "title": "Anno di nascita", "tipo": "integer", "Minimum": 1, "massimo": 32767, "meta:xdmField": "xdm:bornYear", "meta:xdmType": "short" }
      

Perché è necessaria la modalità di compatibilità?

Adobe Experience Platform è progettato per lavorare con più soluzioni e servizi, ciascuno con le proprie sfide e limitazioni tecniche (ad esempio, come alcune tecnologie gestiscono caratteri speciali). Per superare questi limiti, è stata sviluppata la Modalità di compatibilità.
La maggior parte Experience Platform dei servizi, inclusi Catalog, Data Lakee Real-time Customer Profile utilizzati Compatibility Mode al posto di XDM standard. L' Schema Registry API utilizza anche Compatibility Modee gli esempi in questo documento vengono visualizzati utilizzando Compatibility Mode.
Vale la pena sapere che una mappatura avviene tra XDM standard e il modo in cui viene operata, Experience Platformma non dovrebbe influenzare l'utilizzo dei Platform servizi.
Il progetto open source è a vostra disposizione, ma quando si tratta di interagire con le risorse tramite Schema Registry, gli esempi API di questo documento forniscono le best practice che dovreste conoscere e seguire.

Definizione dei tipi di campo XDM nell'API

Gli schemi XDM sono definiti utilizzando gli standard dello schema JSON e i tipi di campo di base, con vincoli aggiuntivi per i nomi di campo che vengono applicati da Experience Platform. XDM consente di definire ulteriori tipi di campi mediante l'uso di formati e vincoli facoltativi. I tipi di campo XDM sono esposti dall'attributo a livello di campo meta:xdmType .
meta:xdmType è un valore generato dal sistema e pertanto non è necessario aggiungere questa proprietà al JSON per il campo. Come procedura ottimale si consiglia di utilizzare tipi di schema JSON (come stringa e numero intero) con i vincoli min/max appropriati, come definito nella tabella seguente.
La tabella seguente delinea la formattazione appropriata per definire i tipi di campi scalari e i tipi di campi più specifici utilizzando le proprietà facoltative. Ulteriori informazioni sulle proprietà facoltative e sulle parole chiave specifiche per i tipi sono disponibili nella documentazione sullo schema JSON.
Per iniziare, trovate il tipo di campo desiderato e utilizzate il codice di esempio fornito per creare la richiesta API.
Tipo desiderato (meta:xdmType) JSON (Schema JSON) Esempio di codice
string type: Proprietà stringOptional:
  • pattern
  • minLength
  • maxLength
        "sampleField": { "type": "string", "pattern": "^[A-Z]{2}$", "maxLength": 2 }
      

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

enum (xdmType: string) type: Proprietà stringOptional:
  • default
Specificate le etichette delle opzioni rivolte al cliente utilizzando "meta:enum":
        "sampleField": { "type": "string", "enum": [ "value1", "value2", "value3" ], "meta:enum": { "value1": "Valore 1", "valore2": "Valore 2", "valore3": "Value 3" }, "default": "value1" }
      

numero type: numero minimo: ±2,23×10^308 massimo: ±1,80×10^308
        "sampleField": { "type": "number" }
      

long type: massimo intero:2^53+1 minimo:-2^53+1
        "sampleField": { "type": "integer", "Minimum": -9007199254740992, "massimo": 9007199254740992 }
      

int type: massimo intero:2^31 minimo:-2^31
        "sampleField": { "type": "integer", "Minimum": -2147483648, "massimo": 2147483648 }
      

short type: massimo intero:2^15 minimo:-2^15
        "sampleField": { "type": "integer", "Minimum": -32768, "massimo": 32768 }
      

byte type: massimo intero:2^7 minimo:-2^7
        "sampleField": { "type": "integer", "Minimum": -128, "massimo": 128 }
      

booleano type: boolean {true, false} Proprietà facoltativa:
  • default
        "sampleField": { "type": "boolean", "default": false }
      

date type: formato stringa: date
        "sampleField": { "type": "string", "format": "date", "example": ["2004-10-23"] }
      

Data come definita dalla RFC 3339, sezione 5.6 , dove "data completa" = data-intero "-" data-mese "-" data-giorno (AAAA-MM-GG)
data-ora type: formato stringa: data-ora
        "sampleField": { "type": "string", "format": "data-ora", "esempi": ["2004-10-23T12:00:00-06:00"] }
      

Data-ora, come definito dalla RFC 3339, sezione 5.6 , dove "data-ora" = data completa "T" a tempo pieno: (AAAA-MM-GG'T'HH:MM:SS.SSSSX)
array type: array items.type può essere definito utilizzando qualsiasi tipo scalare:
        "sampleField": { "type": "array", "items": { "type": "string" }
      

Array di oggetti definiti da un altro schema:
        "sampleField": { "type": "array", "items": { "$ref": "id" }
      

Dove "id" è il {id} dello schema di riferimento.
object type: object proprietà.{field}.type può essere definito utilizzando qualsiasi tipo scalare:
        "sampleField": { "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "number" } }
      

Campo di tipo "oggetto" definito da uno schema di riferimento:
        "sampleField": { "type": "object", "$ref": "id" }
      

Dove "id" è il {id} dello schema di riferimento.
map type: objectNota: l'utilizzo del tipo di dati 'map' è riservato all'utilizzo dello schema del settore e del fornitore e non è disponibile per l'uso nei campi definiti dal tenant. Viene utilizzato negli schemi standard quando i dati sono rappresentati come chiavi che corrispondono a un certo valore, o quando le chiavi non possono essere incluse in uno schema statico e devono essere trattate come valori di dati. UNA 'mappa' NON DEVE definire alcuna proprietà. DEVE definire un singolo schema "[!UICONTROL AdditionalProperties]" per descrivere il tipo di valori contenuti nella 'map'. Una 'mappa' in XDM può contenere un solo tipo di dati. I valori possono essere una qualsiasi definizione di schema XDM valida, inclusa una matrice o un oggetto, o come riferimento a un altro schema (tramite $ref). Campo mappa con valori di tipo 'stringa':
        "sampleField": { "type": "object", "AdditionalProperties":{ "type": "string" }
      

Mappa campo con valori che costituiscono un array di stringhe:
        "sampleField": { "type": "object", "AdditionalProperties":{ "type": "array", "items": { "type": "string" } } }
      

Campo mappa che fa riferimento a un altro schema:
        "sampleField": { "type": "object", "AdditionalProperties":{ "$ref": "id" }
      

Dove "id" è il {id} dello schema di riferimento.

Mappatura di tipi XDM ad altri formati

La tabella seguente descrive la mappatura tra "meta:xdmType" e altri formati di serializzazione.
XDM Type
(meta:xdmType)
JSON
(Schema JSON)
Parquet
(tipo/annotazione)
Spark SQL
Java
Scala
.NET
CosmosDB
MongoDB
Aerospike
Protobuf 2
string
type:string
BYTE_ARRAY/UTF8
StringType
java.lang.String
Stringa
System.String
Stringa
string
Stringa
string
numero
type:number
DOPPIO
DoubleType
java.lang.Double
Doppio
System.Double
Numero
double
Doppio
double
long
tipo:
numero intero massimo:253+1
INT64
LongType
java.lang.Long
Long
System.Int64
Numero
long
Intero
int64
int
tipo:
numero intero massimo:231
INT32/INT_32
IntegerType
java.lang.Integer
Int
System.Int32
Numero
int
Intero
int32
short
tipo:
numero intero massimo:215
INT32/INT_16
ShortType
java.lang.Short
Breve
System.Int16
Numero
int
Intero
int32
byte
tipo:
numero intero massimo:27
INT32/INT_8
ByteType
java.lang.Short
Byte
System.SByte
Numero
int
Intero
int32
booleano
type:boolean
BOOLEANO
BooleanType
java.lang.Boolean
Booleano
System.Boolean
Booleano
boe
Intero
Intero
date
type:
stringformat:date
(RFC 3339, sezione 5.6)
INT32/DATE
DateType
java.util.Date
java.util.Date
System.DateTime
Stringa
date
Integer
(unix millis)
int64
(unix millis)
data-ora
type:
stringformat:date-time
(RFC 3339, sezione 5.6)
INT64/TIMESTAMP_MILLIS
TimestampType
java.util.Date
java.util.Date
System.DateTime
Stringa
timestamp
Integer
(unix millis)
int64
(unix millis)
map
object
MAP annotated group
< key_type> DEVE essere STRING
< value_type> tipo di valori mappa
MapType
"keyType" DEVE essere StringType
"valueType" è il tipo di valori della mappa.
java.util.Map
Mappa
---
object
object
map
map< key_type, value_type>