Espace de noms dans le modèle de données d’expérience (XDM)
Tous les champs des schémas de modèle de données d’expérience (XDM) sont associés à un espace de noms. Ces espaces de noms vous permettent d’étendre vos schémas et d’empêcher les collisions de champs lorsque différents composants de schéma sont rassemblés. Ce document fournit un aperçu des espaces de noms dans XDM et de la manière dont ils sont représentés dans l’ API Schema Registry.
L’espace de noms permet de définir un champ dans un espace de noms comme signifiant quelque chose de différent du même champ dans un autre espace de noms. En pratique, l’espace de noms d’un champ indique qui a créé le champ (par exemple, XDM standard (Adobe), un fournisseur ou votre organisation).
Prenons l’exemple d’un schéma XDM qui utilise le groupe de champs Personal Contact Details, qui comporte un champ mobilePhone
standard qui existe dans l’espace de noms xdm
. Dans le même schéma, vous êtes également libre de créer un champ mobilePhone
distinct sous un autre espace de noms (votre identifiant client). Ces deux domaines peuvent coexister tout en ayant des significations ou des contraintes sous-jacentes différentes.
Syntaxe des espaces de noms
Les sections suivantes montrent comment les espaces de noms sont affectés dans la syntaxe XDM.
XDM standard standard
La syntaxe XDM standard fournit des informations sur la représentation des espaces de noms dans les schémas (y compris la manière dont ils sont traduits dans Adobe Experience Platform).
XDM standard utilise la syntaxe JSON-LD pour affecter des espaces de noms aux champs. Cet espace de noms se présente sous la forme d’un URI (tel que https://ns.adobe.com/xdm
pour l’espace de noms xdm
) ou d’un préfixe abrégé configuré dans l’attribut @context
d’un schéma.
Voici un exemple de schéma pour un produit dans la syntaxe XDM standard. À l’exception de @id
(l’identifiant unique tel que défini par la spécification JSON-LD), chaque champ situé sous properties
commence par un espace de noms et se termine par le nom du champ. Si vous utilisez un préfixe short défini sous @context
, l’espace de noms et le nom du champ sont séparés par deux points (:
). Si vous n’utilisez pas de préfixe, l’espace de noms et le nom du champ sont séparés par une barre oblique (/
).
{
"$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
est l’espace de noms (https://ns.adobe.com/xdm
) et sku
est le nom du champ.https://ns.adobe.com/xdm/channels/application
https://ns.adobe.com/xdm/channels
est l’espace de noms et application
est le nom du champ.https://ns.adobe.com/vendorA/product/stockNumber
https://ns.adobe.com/vendorA/product
est l’espace de noms du fournisseur et stockNumber
est le nom du champ.tenantId:internalSku
tenantId
est l’espace de noms du client (https://ns.adobe.com/tenantId
) et internalSku
est le nom du champ.Mode de compatibilité compatibility
Dans Adobe Experience Platform, les schémas XDM sont représentés en syntaxe Mode de compatibilité, qui n’utilise pas la syntaxe JSON-LD pour représenter les espaces de noms. Plutôt, Platform convertit l’espace de noms en un champ parent (en commençant par un trait de soulignement) et imbrique les champs en dessous.
Par exemple, le XDM standard repo:createdDate
est converti en _repo.createdDate
et apparaîtra sous la structure suivante en mode de compatibilité :
"_repo": {
"type": "object",
"properties": {
"createdDate": {
"type": "string",
"format": "datetime"
}
}
}
Les champs qui utilisent l’espace de noms xdm
apparaissent comme des champs racine sous properties
et déposez le préfixe xdm:
qui apparaîtra dans la syntaxe XDM standard. Par exemple, xdm:sku
est simplement répertorié comme sku
à la place.
Le fichier JSON suivant représente la manière dont l’exemple de syntaxe XDM standard illustré ci-dessus est traduit en mode de compatibilité.
{
"$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"
}
}
}
}
}
Étapes suivantes
Ce guide fournit un aperçu des espaces de noms XDM et de leur représentation dans JSON. Pour plus d’informations sur la configuration des schémas XDM à l’aide de l’API, consultez le guide de l’API Schema Registry.