Create your data model with a google spreadsheet


This post became obsolete, go for the new master sheet


This is a resource, especially for those who have limited knowledge of JSON schema.

If you want to create a basic version of a data model (not all JSON schema is implemented), you can use a copy of this spreadsheet as template. This spreadsheet is always available at short name.

You need to fill the blue cells for these parameters:

  • Subject: Official Subject where this data model should be allocated. (Check the official list)
  • DataModel: Official data model name (Only one word i.e. WeatherForecast, no _).
  • Title: use to be the name data model name with spaces. (i.e. Weather Forecast)
  • Global Description: General text description of the data model. (2 lines is nice)
  • Property name: Exactly this, the name of the property. Use camelCase. It would be good to check here whether this property already exists (you can copy and paste). Use those you need and leave one empty after those you filled. Properties below an empty property name are ignored.
  • NGSI type: (Property, Relationship or Geoproperty)
  • Data type: Type of data in the property. (array and object are not fully implemented)
  • Other restrictions: If you are unfamiliar with JSON schema leave it empty.
  • Description: Official description of the property.

Once you’ve got the schema, grab some examples (It is always good to review the contribution manual) and you can make a Pull Request on any of the subjects of any domain in Github. Or just use this form.

NOTE 1: The first option will be attended quicker than the second.

NOTE 2: Do not write out of the blue cells (it will be ignored). And do not add or remove cells. The converter script looks for these precise locations in blue.

NOTE 3: Your spreadsheet has to be made public. (anyone with the link), otherwise, the script will not be able to retrieve your data.


Parameters: (Mandatories)


Output: A json schema based on the properties defined in the database. This is an alpha version so errors are not managed.

    This form generates a json schema based on the properties of a google sheet (Based on this template)


    By using this form you agree with the storage and handling of your data by this website.

    After clicking it will appear a message confirming the submission

    It will take a while to redirect to the feedback on a specific page

    Thanks for being patient

    Alpha version for drafting a data model

    In case you are not an expert for creating a JSON schema (one of the elements of a data model)
    On this page, you have a spreadsheet for helping with the first steps.

    1.- Fill the spreadsheet with the names of the properties for your model

    2.- fill the NGSI type (Property, Relationship or Geoproperty)

    3.- In case of property, fill the data type (array and object types are currently not completely supported)

    4.- Fill in the description

    5.- Click the button, the page will reload

    6.- voila! you have your json schema below the spreadsheet, just copy and paste into your favourite editor.

    The python code for it is also made public in the utils directory in the data models repo.

    Include levels of privacy of properties in their description

    The privacy of the data contained in a property has been under discussion for the documentation of any property.

    Now there is a first version on how to implement it.

    The contribution manual has been updated for this possibility. See the specific slide about it.

    Privacy clause: Privacy:’[high/medium/low]

    Describes if the property has any kind of information related with personal data. Current options:

    • No clause: (default) this property does not contain personal data
    • Privacy:’high’: Those properties that refer to data on ideology, union affiliation, religion, beliefs, racial origin, health or sexual life.
    • Privacy:’medium’. Those properties related to the provision of financial solvency and credit services of people and those that contain definition of characteristics or personality and that allow evaluating certain aspects of personality or behavior of people.
    • Privacy:’low’.  Those properties that contains personal data different from the rest of types.


    “refUserDevice” :{

    “description”: “Property. Model:’’. Privacy:’low’. An object representing the current device used by the User.”.


    Instructions to be listed as a data model adopter of Smart Data Models

    It has been updated the format of the list of adopters of the data models (formerly were markdown files), now in it is rename into ADOPTERS.yaml based on this yaml template which allows an automatic processing. (Further announcements could be included in a future).

    Further instructions in the page Data Models Adopters how to located in the menu option Data models -> Data Models Adopters How to

    Improved the database of properties

    The database for the searching on data models, properties and their descriptions has been expanded to allow filtering also by :

    • NGSI type (one of Property, Relationship or Geoproperty)
    • data type (string, number, boolean, array, object, etc)

    Additionally, it has been updated containing more than 11.000 items

    Accessible from the front page in this widget (Structured check)

    You can export the results

    Specifications in languages in the readme of the data models

    Now you can see the links to the specification in two languages, Spanish y French in the of every data models. German and Japanese are in the queue.

    See here an example


    All specifications updated

    All the specifications (the text descriptions of the data model located in the /doc directory of each daat model) for the different domains and languages (currently French and Spanish besides English) have been updated to the new format. See an example in Spanish and French.

    All of them are generated automatically from the json schema (which is the unique source of truth for the data model)

    The contribution manual explains further details.

    Raise an issue for any point you find in the new format.



    Check a schema validates a payload

    If you want to check if a schema validates a payload  through this API call


    Parameters: (Mandatories)

    • payloadUrl: The url of the payload in RAW version
    • schemaUrl: The link to the RAW version of the json schema (see example)


    Output: A json payload with these properties

    • result: Boolean. if the schema validates the payload.
    • time: time stamp in ISO 8601 (CET) of the validation
    • payloadUrl: The url of the payload in RAW version submitted
    • schemaUrl: The link to the RAW version of the json schema submitted

    on error

    • cause: The description of the cause for the rejection to the validation

    updated the contribution manual

    The contribution manual (link in the upper menu of main page) is updated due to the change in the approach for documenting the data models.

    Main changes:

    • Properties’ definitions are now included as an attribute in the json schema
    • The specification is generated automatically based on the json schema
    • Json schema has to pass a test to be approved.

    See the rest of changes in the link

    Create automatically the specification of your data model

    The new version of the smart data models specification is on progress (most of the /doc directories of the data models have a version). If you want to check how this would look like you can have through this API call


    Parameters: (Mandatories)

    • dataModel: The name of the entity for the specification
    • schemaUrl: The link to the RAW version of the json schema (see example)
    • examplesUrl: the url of where the 4 examples required for a data model are available (named
    • notesUrl: The url to the yaml for the customization paragraphs (notesHeader, after the title, notesMiddle, after properties’ list and notesFooter by the end)
    • mail:  a valid mail of yours


    Output: A markdown text that although the HTML visualization is faulty, the source code of the page can be pasted in any markdown viewer (optimized for github) and you see will see something like this.

    We are on the transition to having all the data models compliant.