FIWARE Data Model validator is an utility to help the management of NGSI DataModels. Its code leverage on the AJV JSON Schema Validator.
The FIWARE Data Model validator perform the following checks for each Data Model:
To install the validator on your machine, you need Node.js 7.0.0+. Instructions on how to install Node.js are available here.
Once Node.js installed in your system, you can install the validator with the following command:
npm install -g fiware-model-validator
To use the validator, execute it from the root of the DataModel repository:
validate -p DataModel -w ignore -i [common-schema.json,geometry-schema.json]
Command-line available options are:
-i, --dmv:importSchemas
. Additional schemas that will be included during
validation. Default imported schemas are: common-schema.json,
geometry-schema.json [array]-w, --dmv:warnings
. How to handle FIWARE Data Models checks warnings.
true (default)
- print warnings, but does not fail.ignore
- do nothing and do not print warnings.fail
- print warnings, and fails.-p, --dmv:path
. The path of FIWARE Data Model(s) to be validated (if
recursion enabled, it will be the starting point of recursion)-c, --dmv:contextBroker
. Enable example testing with Orion Context Broker-u, --dmv:contextBrokerUrl
. Orion Context Broker URL for Example testing-v, --version
. Print the validator version-h, --help
. Print the help messageIf you want to execute validate
outside the root directory and you want to
import the common schemas, you have to import them using the correct path.
If you experience un expected behaviours, you can check the process using the debug functionality, e.g.:
DEBUG=* validate -p .
For a more fine grained configuration you can create a config.json
file. An
example is provided in the repository.
Options available are:
dmv:importSchemas
: the list of schemas to be imported as support to
validation. Default value: ['common-schema.json','geometry-schema.json']
dmv:warnings
: how to handle FIWARE Data Models checks warnings.
true (default)
- print warnings, but does not fail.ignore
- do nothing and do not print warnings.fail
- print warnings, and fails.dmv:warningChecks
: The list of checks that should be executed:
schemaExist
: existence of JSON SchemadocExist
: existence of DocumentationdocFolderExist
: existence of Doc folderexampleExist
: existence of one or more JSON examplesmodelNameValid
: adherence of Data Model name to FIWARE Data Models
guidelinesreadmeExist
: existence of README filedmv:recursiveScan
: enable or disable the recursive scanning of directory.
Default value: true
dmv:validateExamples
: enable or disable the validation of JSON Examples.
Default value: true
dmv:loadModelCommonSchemas
: automatically include any file named
*-schema.json
in data path.dmv:ignoreFolders
: The list of folder names that should be ignored.
Default value: ['harvest','auxiliary','img']
dmv:docFolders
: The list of folder names that are expected to contain
Documentation: Default value: ['doc']
dmv:contextBroker
: Enable JSON example testing with Orion Context Broker.
Default value: false
dmv:contextBrokerUrl
: The URL for the Orion Context Broker for JSON
example testing. Default value: http://localhost:1026/v2
ajv:missingRefs
: handling of missing referenced schemas. See
ajv for more details. Option values:
true (default)
- if the reference cannot be resolved during
compilation the exception is thrown. The thrown error has properties
missingRef (with hash fragment) and missingSchema (without it). Both
properties are resolved relative to the current base ID (usually schema
id, unless it was substituted).ignore
- to log error during compilation and always pass validation.fail
- to log error and successfully compile schema but fail
validation if this rule is checked.ajv:extendRefs
: validation of other keywords when $ref is present in the
schema. See ajv for more details.
Option values:
ignore
- when $ref is used other keywords are ignored (as per JSON
Reference standard). A warning will be logged during the schema
compilation.fail (default)
- if other validation keywords are used together with
$ref the exception will be thrown when the schema is compiled. This
option is recommended to make sure schema has no keywords that are
ignored, which can be confusing.true
- validate all keywords in the schemas with $ref (the default
behaviour in versions before ajv 5.0.0).ajv:allErrors
: when true
check all rules collecting all errors, when
false
return after the first error. See
ajv for more details. Default value:
true
Should you want to change the code of the validator, to install your modified version, you simply need to compile it with the following command:
npm install -g