Sintaxe de namespace

As seções a seguir demonstram como os namespaces são atribuídos na sintaxe XDM.

XDM padrão

A sintaxe XDM padrão fornece à insight como os namespaces são representados nos esquemas (incluindo como são traduzidos no Adobe Experience Platform).

O XDM padrão usa a sintaxe JSON-LD para atribuir namespaces a campos. Este namespace vem na forma de um URI (como https://ns.adobe.com/xdm para o namespace xdm) ou como um prefixo abreviado que é configurado no atributo @context de um esquema.

Veja a seguir um exemplo de esquema para um produto na sintaxe XDM padrão. Com exceção de @id (o identificador exclusivo conforme definido pela especificação JSON-LD), cada campo em properties começa com um namespace e termina com o nome do campo. Se estiver usando um prefixo abreviado definido em @context, o namespace e o nome do campo serão separados por dois-pontos (:). Se não estiver usando um prefixo, o namespace e o nome do campo serão separados por uma barra (/).

{
  "$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"
    }
  }
}
PropriedadeDescrição
@contextUm objeto que define os prefixos abreviados que podem ser usados em vez de um URI de namespace completo em properties.
@idUm identificador exclusivo para o registro conforme definido pela especificação JSON-LD.
xdm:skuUm exemplo de um campo que usa um prefixo abreviado para denotar um namespace. Nesse caso, xdm é o namespace (https://ns.adobe.com/xdm) e sku é o nome do campo.
https://ns.adobe.com/xdm/channels/applicationUm exemplo de um campo que usa o URI de namespace completo. Nesse caso, https://ns.adobe.com/xdm/channels é o namespace e application é o nome do campo.
https://ns.adobe.com/vendorA/product/stockNumberOs campos fornecidos pelos recursos do fornecedor usam seus próprios namespaces exclusivos. Neste exemplo, https://ns.adobe.com/vendorA/product é o namespace do fornecedor e stockNumber é o nome do campo.
tenantId:internalSkuOs campos definidos pela organização usam a ID de locatário exclusiva como namespace. Neste exemplo, tenantId é o namespace do locatário (https://ns.adobe.com/tenantId) e internalSku é o nome do campo.

Modo de compatibilidade

No Adobe Experience Platform, os esquemas XDM são representados na sintaxe Modo de Compatibilidade, que não usa a sintaxe JSON-LD para representar namespaces. Em vez disso, o Experience Platform converte o namespace em um campo pai (começando com um sublinhado) e aninha os campos sob ele.

Por exemplo, o XDM padrão repo:createdDate é convertido em _repo.createdDate e aparece na seguinte estrutura no Modo de Compatibilidade:

"_repo": {
  "type": "object",
  "properties": {
    "createdDate": {
      "type": "string",
      "format": "datetime"
    }
  }
}

Os campos que usam o namespace xdm aparecem como campos raiz em properties e removem o prefixo xdm: que apareceria na sintaxe XDM padrão. Por exemplo, xdm:sku está simplesmente listado como sku.

O JSON a seguir representa como o exemplo de sintaxe XDM padrão mostrado acima é traduzido para o Modo de compatibilidade.

{
  "$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"
        }
      }
    }
  }
}