Name: xdm
Owner: Adobe Systems Incorporated
Description: Experience Data Model
Created: 2017-12-04 14:40:24.0
Updated: 2018-01-17 14:25:37.0
Pushed: 2018-01-18 19:21:17.0
Size: 2108
Language: JavaScript
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
The Experience Data Model (XDM) is the language of digital experiences. XDM is a publicly documented specification, driven by Adobe to improve the interoperability, expressivness, and power of digital experiences. This repository contains the source code for the formal specification of the XDM model, using the JSON Schema language.
The project is laid out in the following way:
docs
: Markdown files that contain front-matter, introduction, and non-normative parts of XDMschemas
: JSON schema files constituting the normative part of XDM*.schema.json
is the schema file, e.g. event-envelope.schema.json
? we pick the .json
file extension for easy syntax highlighting in editors*.example.*.json
is an example file that will be validated against the *.schema.json
file, and if successful, merged into the *.schema.json
file as an "example"
field at the root of the schema before it is converted into Markdown or published*.invalid.*.json
is an invalid example file that will be validated against the *.schema.json
file. If the invalid
file validates (false positive), the schema is too lax and the overall build will fail. invalid
files will not be merged into documentation.*.description.md
is a description file that will be merged into the "description"
field at the root of the schema, allowing the authoring of longer descriptions. The merge happens before publishing the schema file or creating a joint Markdown fileschemas/assets
? for schemas related to the asset core concept, including image, video, documentschemas/audiences
? for schemas describing audiences, segments, and groups of consumersschemas/campaigns
? for schemas describing orchestrated experience campaignschemas/content
? for schemas related to content, including visual, audible, and virtual reality contentschemas/context
? for schemas related to the context of a digital experience, including profile, person, environmentschemas/data
? for schemas describing collected data, metric, etc.schemas/external/*
? for JSON Schema representation of externally defined standardsschemas/channels
? for schemas describing experience channels and locations thereinschemas/common
? for basic concepts like extensibility that are not covered in external
schemas*.ttl
: legacy schema files in Turtle Syntax that have not yet been converted into JSON Schemapackage.json
: a build file for npm
that allows the generation of Markdown from the JSON Schema source files and (later) the generation of an AEM package to be deployed on the Adobe I/O WebsiteREADME.md
: this fileCONTRIBUTING.md
: guidelines for contributors, covering process, conventions and design guidelinesThe tooling project (e.g. for generating Markdown documentation, example validation, JSON Schema documentation inlining) is located in the adobe/jsonschema2md git repository.
You need:
npm
curl
When all dependencies are installed, simply run
m install
m run package
This will fetch all dependencies, then generate Markdown in the docs/reference
directory and then generate an AEM package under xdm-docs.zip
. The package can be uploaded using the command
m run upload
upload
will upload to the Adobe I/O Staging instance. To upload to production, use upload:prod
instead.
The AEM password is not saved in this repository (of course), but you can set it using this command:
m config set xdm-models:aem_password $AEM_PASSWORD
This is assuming $AEM_PASSWORD
has been provided to your Continuous Integration system or set on the command line beforehand.
Running upload
will only make the documentation visible on the “author” instance, this means visitors to the site cannot see any of the documentation. To publish it, run the npm run activate
or npm run activate:prod
commands.
A full process would then look like this:
m config set xdm-models:aem_password $AEM_PASSWORD
m install
m test
m run package
m run upload
m run activate
This will generate documentation, create an AEM package, install it on (stage) author, and activate it from there, so that visitors can read the documentation.
The package.json
script will fetch a released version of the AEM Markdown Importer JAR using curl.
This project contains a minimal validation script that depends on NPM. You can use it to validate the JSON example files against the JSON Schema files after making changes to either.
m install
m test
m-models@0.0.1 test /Users/lars/Code/models
validate.sh
dating schemas/common/eventenvelope.example.1.json against schemas/common/eventenvelope.schema.json
mas/common/eventenvelope.example.1.json valid
dating schemas/common/eventenvelope.example.2.json against schemas/common/eventenvelope.schema.json
mas/common/eventenvelope.example.2.json valid
dating schemas/common/eventenvelope.example.3.json against schemas/common/eventenvelope.schema.json
mas/common/eventenvelope.example.3.json valid
dating schemas/common/eventenvelope.example.4.json against schemas/common/eventenvelope.schema.json
mas/common/eventenvelope.example.4.json valid
dating schemas/common/eventenvelope.example.5.json against schemas/common/eventenvelope.schema.json
mas/common/eventenvelope.example.5.json valid
If you see warnings or error messages (or an non-zero exit code), fix them before making a pull request.
Copyright 2017 Adobe Systems Incorporated. All rights reserved. This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license.
This license is acceptable for Free Cultural Works.
The licensor cannot revoke these freedoms as long as you follow the license terms.