Data models used to drive the OpenActive validator and developer documentation.
This library provides all the JSON representations of the models in the versions/<version>/models directory. It is capable of storing multiple versions of the spec.
The library provides various exports:
Returns a list of examples relating to the specification version supplied.
Each object in the list should contain the following keys:
- name - A human-readable name describing the example.
- file - The file the example is in.
const{ getExamples }=require('@openactive/data-models');constexamples=getExamples('2.0');// [// {// "file": "event_example_1.json",// "name": "Example Event"// },// // ...// ]Returns a list of examples relating to the specification version supplied, that includes the JSON content of these examples.
Each object in the list should contain the following keys:
- name - A human-readable name describing the example.
- file - The file the example is in.
- data - The JSON data of the example file.
const{ getExamplesWithContent }=require('@openactive/data-models');(async()=>{constexamples=awaitgetExamplesWithContent('2.0');// [// {// "file": "event_example_1.json",// "name": "Example Event",// "data": { ... }// },// // ...// ]})();Returns a resolved version of a property, indicating its namespace, prefix and alias. It will by default insert the OpenActive context for the provided specification version at the top of the context tree.
const{ getFullyQualifiedProperty }=require('@openactive/data-models');letinfo=getFullyQualifiedProperty('type');// {// "prefix": null,// "namespace": null,// "label": "@type",// "alias": "type",// }letinfo=getFullyQualifiedProperty('meetingPoint','2.0');// {// "prefix": "oa",// "namespace": "https://openactive.io/",// "label": "meetingPoint",// "alias": "meetingPoint",// }letinfo=getFullyQualifiedProperty('schema:name','2.0');// {// "prefix": "schema",// "namespace": "https://schema.org/",// "label": "name",// "alias": null,// }letinfo=getFullyQualifiedProperty('beta:field','2.0');// {// "prefix": null,// "namespace": null,// "label": "beta:field",// "alias": null,// }Returns the meta data relating to the specification version supplied.
The meta data should contain the following keys:
- defaultPrefix - The default prefix that is used in the
@vocabfield of the OpenActive JSON-LD definition. - openActivePrefix - The prefix used for OpenActive fields
- contextUrl - The URL that the JSON context of this specification is published at
- specUrl - The URL that the human-readable version of this specification is published at
- defaultActivityLists - An array of activity list URLs that accompany this spec
- baseGraph - A base object used when generating the
@graphproperty of the OpenActive JSON-LD definition. - keywords - A map of aliases for JSON-LD keywords.
- namespaces - A map of prefixes to namespaces used in the OpenActive JSON-LD definition.
- feedConfigurations - A map of feed configurations, to be used by the Dataset Site generators.
const{ getMetaData }=require('@openactive/data-models');constmetaData=getMetaData('2.0');// {// "defaultPrefix": "schema",// "openActivePrefix": "oa",// "contextUrl": "https://openactive.io/",// "specUrl": "https://openactive.io/modelling-opportunity-data/EditorsDraft/",// "defaultActivityLists": [// "https://openactive.io/activity-list"// ],// "baseGraph": {},// "keywords": {// "type": "@type",// "id": "@id"// },// "namespaces": {// "oa": "https://openactive.io/",// "dc": "http://purl.org/dc/terms/",// "owl": "http://www.w3.org/2002/07/owl#",// "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",// "rdfa": "http://www.w3.org/ns/rdfa#",// "rdfs": "http://www.w3.org/2000/01/rdf-schema#",// "schema": "https://schema.org/",// "skos": "http://www.w3.org/2004/02/skos/core#",// "xsd": "http://www.w3.org/2001/XMLSchema#",// "pending": "https://pending.schema.org/"// }// }Returns the model definition, augmented based on model inheritance, for a particular version of the spec.
const{ loadModel }=require('@openactive/data-models');// Returns the latest version of this modelconsteventModel=loadModel('Event');// Returns the 2.0 version of this modelconsteventModel2=loadModel('Event','2.0');Returns a map of raw model definitions for a particular version of the spec.
const{ getModels }=require('@openactive/data-models');// Returns the latest version of the models mapconstmodels=getModels();// Returns the 2.0 version of the models mapconstmodels2=getModels('2.0');Returns a Set containing the fully qualified property names within the version
const{ getProperties }=require('@openactive/data-models');// Returns the latest version of the properties Setconstmodels=getProperties();// Returns the 2.0 version of the properties Setconstmodels2=getProperties('2.0');Returns the bundled JSON-LD version of the schema.org vocabulary.
A hash of available versions. This includes some named aliases. You can pass the keys of this hash to any of the above methods in the version parameter.
const{ versions }=require('@openactive/data-models');// {// "latest": "2.x",// "2.0": "2.x"// }$ git clone git@github.com:openactive/data-models.git
$ cd data-models
$ npm installThis project uses Jasmine for its tests. All spec files are located alongside the files that they target.
To run tests locally, run:
$ npm testThe test run will also include a run of eslint. To run the tests without these, use:
$ npm run test-no-lintAdd new models to the versions/models directory.
Find more on the models, see the model reference
To release after pushing changes to git run the following:
npm test- check tests passnpm version patch- to bump the patch version (see semver)npm publish- to publish to npmgit push- to push the repo, as npm will have created git tags with the last command that need to be pushed- Redeploy
data-model-validator-sitein Heroku, and it will auto update (for patch and minor version bumps only, major versions are breaking changes by definition so require code changes to the other projects).