Show Menu
THEMEN×

Anhang

Dieses Dokument enthält zusätzliche Informationen zum Arbeiten mit der Schema Registry API.

Kompatibilitätsmodus

Das Experience Data Model (XDM) ist eine öffentlich dokumentierte Spezifikation, die von Adobe zur Verbesserung der Interoperabilität, Ausdrucksfähigkeit und Leistungsfähigkeit digitaler Erlebnisse unterstützt wird. Adobe verwaltet den Quellcode und formale XDM-Definitionen in einem Open-Source-Projekt auf GitHub . Diese Definitionen werden in XDM Standard Notation geschrieben, wobei JSON-LD (JavaScript Object Notation for Linked Data) und JSON-Schema als Grammatik zur Definition von XDM-Schemas verwendet werden.
Wenn Sie sich die formalen XDM-Definitionen im öffentlichen Repository ansehen, können Sie erkennen, dass sich der Standard-XDM von dem unterscheidet, was Sie in Adobe Experience Platform sehen. Was Sie in Experience Platform sehen, wird als "Kompatibilitätsmodus"bezeichnet und bietet eine einfache Zuordnung zwischen Standard-XDM und der Art und Weise, wie es in der Plattform verwendet wird.

Funktionsweise des Kompatibilitätsmodus

Der Kompatibilitätsmodus ermöglicht es dem XDM JSON-LD-Modell, mit der vorhandenen Dateninfrastruktur zu arbeiten, indem Werte innerhalb des XDM-Standards verändert werden, während die Semantik gleich bleibt. Es verwendet eine verschachtelte JSON-Struktur, die Schemas in einem baumähnlichen Format anzeigt.
Der Hauptunterschied, den Sie zwischen Standard-XDM und Kompatibilitätsmodus bemerken werden, ist die Entfernung des Präfix "xdm:"für Feldnamen.
Im Folgenden finden Sie einen Vergleich, der sowohl im Standard-XDM- als auch im Kompatibilitätsmodus Geburtstagsbezogene Felder (mit entfernten "Beschreibungsattributen") nebeneinander anzeigt. Beachten Sie, dass die Felder für den Kompatibilitätsmodus einen Verweis auf das XDM-Feld und seinen Datentyp in den Attributen "meta:xdmField"und "meta:xdmType"enthalten.
Standard-XDM Kompatibilitätsmodus
        { "xdm:bornDate": { "title": "Geburtsdatum", "Typ": "string", "format": "date", }, "xdm:bornDayAndMonth": { "title": "Geburtsdatum", "Typ": "string", "pattern": "[0-1][0-9]-[0-9][0-9]", }, "xdm:bornYear": { "title": "Geburtsjahr", "Typ": "integer", "minimum": 1, "Maximum": 32767 }
      

        { "bornDate": { "title": "Geburtsdatum", "Typ": "string", "format": "date", "meta:xdmField": "xdm:bornDate", "meta:xdmType": "date" }, "bornDayAndMonth": { "title": "Geburtsdatum", "Typ": "string", "pattern": "[0-1][0-9]-[0-9][0-9]", "meta:xdmField": "xdm:bornDayAndMonth", "meta:xdmType": "string" }, "bornYear": { "title": "Geburtsjahr", "Typ": "integer", "minimum": 1, "Maximum": 32767, "meta:xdmField": "xdm:bornYear", "meta:xdmType": "short" }
      

Warum ist der Kompatibilitätsmodus erforderlich?

Adobe Experience Platform ist für die Verwendung mit mehreren Lösungen und Diensten konzipiert, die jeweils eigene technische Herausforderungen und Einschränkungen aufweisen (z. B. wie bestimmte Technologien Sonderzeichen handhaben). Um diese Einschränkungen zu überwinden, wurde der Kompatibilitätsmodus entwickelt.
Die meisten Experience Platform-Dienste, einschließlich Catalog, Data Lake und Echtzeit-Kundendaten, verwenden den Kompatibilitätsmodus anstelle des Standard-XDM. Die Schema Registry API verwendet auch den Kompatibilitätsmodus. Die Beispiele in diesem Dokument werden alle mithilfe des Kompatibilitätsmodus angezeigt.
Es lohnt sich zu wissen, dass eine Zuordnung zwischen Standard-XDM und der Art und Weise erfolgt, wie sie in Experience Platform operalisiert wird, sollte jedoch nicht Ihre Verwendung von Platform-Diensten beeinträchtigen.
Das Open-Source-Projekt steht Ihnen zur Verfügung, aber wenn es darum geht, mit Ressourcen über die Schema-Registrierung zu interagieren, bieten die API-Beispiele in diesem Dokument die Best Practices, die Sie kennen und befolgen sollten.

Definieren von XDM-Feldtypen in der API

XDM-Schema werden mithilfe von JSON-Schema-Standards und einfachen Feldtypen definiert, mit zusätzlichen Einschränkungen für Feldnamen, die von Experience Platform erzwungen werden. Mit XDM können Sie zusätzliche Feldtypen mithilfe von Formaten und optionalen Einschränkungen definieren. Die XDM-Feldtypen werden durch das Attribut auf Feldebene offen gelegt, meta:xdmType .
meta:xdmType ist ein systemgenerierter Wert. Daher müssen Sie diese Eigenschaft nicht zum JSON für Ihr Feld hinzufügen. Es empfiehlt sich, JSON-Schema-Typen (z. B. String und Ganzzahl) mit den entsprechenden Min/Max-Einschränkungen zu verwenden, wie in der folgenden Tabelle definiert.
In der folgenden Tabelle sind die entsprechenden Formatierungen zur Definition von skalaren Feldtypen und spezifischeren Feldtypen mit optionalen Eigenschaften aufgeführt. Weitere Informationen zu optionalen Eigenschaften und typspezifischen Suchbegriffen finden Sie in der Dokumentation zum JSON-Schema .
Suchen Sie zunächst den gewünschten Feldtyp und verwenden Sie den Beispielcode, der zum Erstellen Ihrer API-Anforderung bereitgestellt wird.
Gewünschter Typ (meta:xdmType) JSON (JSON-Schema) Codebeispiel
Zeichenfolge type: stringOptional-Eigenschaften:
  • pattern
  • minLength
  • maxLength
        "sampleField": { "type": "string", "pattern": "^[A-Z]{2}$", "maxLength": 2 }
      

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

enum (xdmType: string) type: stringOptional-Eigenschaft:
  • Standard
Geben Sie mit "meta:enum"Beschriftungen für kundenorientierte Optionen an:
        "sampleField": { "type": "string", "enum": [ "value1", "value2", "value3" ], "meta:enum": { "value1": "Value 1", "value2": "Value 2", "value3": "Value 3" }, "default": "value1" }
      

number type: numerminimum: ±2,23×10^308 Maximal: ±1,80×10^308
        "sampleField": { "type": "number" }
      

long type: integerMaximum:2^53+1 minimum:-2^53+1
        "sampleField": { "type": "integer", "minimum": -9007199254740992, "Maximal": 9007199254740992 }
      

int type: integerMaximum:2^31 minimum:-2^31
        "sampleField": { "type": "integer", "minimum": -2147483648, "Maximal": 2147483648 }
      

short type: integerMaximum:2^15 minimum:-2^15
        "sampleField": { "type": "integer", "minimum": -32768, "Maximum": 32768 }
      

byte type: integerMaximum:2^7 minimum:-2^7
        "sampleField": { "type": "integer", "minimum": -128, "Maximum": 128 }
      

Boolescher Wert type: boolean {true, false} Optional, Eigenschaft:
  • Standard
        "sampleField": { "type": "boolean", "default": false }
      

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

Datum gemäß RFC 3339, Abschnitt 5.6 , wobei "Volldatum" = Datum-Volljahr "-" Datum-Monat "-" Datum-Tag-Tag (JJJJ-MM-TT)
date-time type: Zeichenformat: date-time
        "sampleField": { "type": "string", "format": "date-time", "example": ["2004-10-23T12:00:00-06:00"] }
      

Date-Time gemäß RFC 3339, Abschnitt 5.6 , wobei "date-time" = full-date "T" full-time: (YYYY-MM-DD'T'HH:MM:SS.SSSSX)
array type: array items.type kann mit einem beliebigen Skalartyp definiert werden:
        "sampleField": { "type": "array", "items": { "type": "string" } }
      

Array von Objekten, die durch ein anderes Schema definiert werden:
        "sampleField": { "type": "array", "items": { "$ref": "id" } }
      

Dabei ist "id"die {id} des Referenz-Schemas.
object type: object zu erhalten.{field}.type kann mit einem beliebigen Skalartyp definiert werden:
        "sampleField": { "type": "object", "properties": { "field1": { "type": "string" }, "field2": { "type": "number" } } }
      

Feld des Typs "Objekt", das durch ein Referenz-Schema definiert wird:
        "sampleField": { "type": "object", "$ref": "id" }
      

Dabei ist "id"die {id} des Referenz-Schemas.
map type: objectHinweis:Die Verwendung des Datentyps "map"ist für die Verwendung durch Branchen- und Händlerfelder reserviert und steht nicht zur Verwendung in Mietfeldern zur Verfügung. Sie wird in Standard-Schemas verwendet, wenn Daten als Schlüssel dargestellt werden, die einem bestimmten Wert zugeordnet sind, oder bei denen Schlüssel vernünftigerweise nicht in ein statisches Schema einbezogen werden können und als Datenwerte behandelt werden müssen. Eine 'Map' DARF KEINE Eigenschaften definieren. Es MUSS ein einzelnes "additionalProperties"-Schema definieren, um die in der "map" enthaltenen Werte zu beschreiben. Eine "Map" in XDM kann nur einen einzigen Datentyp enthalten. Werte können eine beliebige gültige XDM-Schema-Definition sein, einschließlich eines Arrays oder eines Objekts, oder als Verweis auf ein anderes Schema (über $ref). Feld mit Werten vom Typ "String"zuordnen:
        "sampleField": { "type": "object", "additionalProperties":{ "type": "string" } }
      

Zuordnungsfeld mit Werten als Array von Zeichenfolgen:
        "sampleField": { "type": "object", "additionalProperties":{ "type": "array", "items": { "type": "string" } } }
      

Zuordnungsfeld, das auf ein anderes Schema verweist:
        "sampleField": { "type": "object", "additionalProperties":{ "$ref": "id" } }
      

Dabei ist "id"die {id} des Referenz-Schemas.

Zuordnen von XDM-Typen zu anderen Formaten

Die folgende Tabelle beschreibt die Zuordnung zwischen "meta:xdmType"und anderen Serialisierungsformaten.
XDM-Typ
(meta:xdmType)
JSON
(JSON-Schema)
Parquet
(type/annotation)
Spark SQL
Java
Scala
.NET
CosmosDB
MongoDB
Aerospike
Protokoll 2
Zeichenfolge
type:string
BYTE_ARRAY/UTF8
StringType
java.lang.String
Zeichenfolge
System.String
Zeichenfolge
Zeichenfolge
Zeichenfolge
Zeichenfolge
number
type:number
DUBLETTE
DoubleType
java.lang.Double
Doppelt
System.Double
Zahl
Dublette
Doppelt
Dublette
long
type:
integerMaximum:253+1
INT64
LongType
java.lang.Long
lang
System.Int64
Zahl
long
Ganzzahl
int64
int
type:
integerMaximum:231
INT32/INT_32
IntegerType
java.lang.Integer
Int
System.Int32
Zahl
int
Ganzzahl
int32
short
type:
integerMaximum:215
INT32/INT_16
ShortType
java.lang.Short
Short
System.Int16
Zahl
int
Ganzzahl
int32
byte
type:
integerMaximum:27
INT32/INT_8
ByteType
java.lang.Short
Byte
System.SByte
Zahl
int
Ganzzahl
int32
Boolescher Wert
Typ:boolean
BOOLEAN
BooleanType
java.lang.Boolean
Boolesch
System.Boolean
Boolesch
bool
Ganzzahl
Ganzzahl
date
Typ:
stringformat:date
(RFC 3339, Abschnitt 5.6)
INT32/DATE
DateType
java.util.Date
java.util.Date
System.DateTime
Zeichenfolge
date
Integer
(Unix-Millis)
int64
(Unix-Millis)
date-time
type:
stringformat:date-time
(RFC 3339, Abschnitt 5.6)
INT64/TIMESTAMP_MILLIS
TimestampType
java.util.Date
java.util.Date
System.DateTime
Zeichenfolge
timestamp
Integer
(Unix-Millis)
int64
(Unix-Millis)
map
object
MAP-kommentierte Gruppe
< Schlüssel_Typ> MUSS STRING
< Wert_Typ> Typ der Map-Wertesein
MapType
"keyType"MUSS StringType
"valueType"der Typ der Map-Werte sein.
java.util.Map
Landkarte
---
object
object
map
map< key_type, value_type>