Resources |
◎ COVESA Events |
Join/Sign Up |
◎ Join COVESA |
Vehicle Data Model Requirements and Proposed Solutions
Overview
The primary purpose of this page is to provide requirements the COVESA Vehicle Data Model's modeling language. However, there are project level requirements as well. Business Rationale for a Vehicle Data Model and Pain Points with the current model are listed below as well. In addition, you can find a detailed presentation on moving towards a Vehicle Data Model here.
VSS Modeling Language Requirements
The following table represents a zoomed-out view of the essential requirements that the VSS modeling language should satisfy. They are based on the different stakeholders' desires which have been collected through multiple exchanges.
If you consider that a particular criterium or aspect is missing, feel free to contribute. Bear in mind that any contribution must be framed in a collaborative way to foster community support and future adoption.
Criteria | Requirement description | Current (VSPEC) | Desired | Tests | PoC Phase 1 (June) | Notes/Questions |
|---|---|---|---|---|---|---|
Simplicity* The quality or condition of being easy to understand, use or do |
| ✅ Yes | ✅ Yes | Have those with experience with VSS provide their feedback on how human-readable they feel VDM is | Must have |
|
Technology Agnosticism* Interoperable and flexible across various platforms, devices, or environments, not tied to specific vendors, technologies, or frameworks.
|
| ✅ Yes Via vss-tools. | ✅ Yes | Server and client may be written in Python, Ruby, Java, Go, JavaScript,... Does not dictate which database system to use Not tied to a specific framework like Django Is transport agnostic and may be implemented over various protocols HTTP, WebSockets,... Support for primitive types like Int, Boolean String etc | Must have
| More detail/examples are needed.
IMHO this can always be argued. The main thing is, that people with EXISTING VSS solutions should (be motivated to) test the new approach. They already are divers tech wise so if they can use (either via vspec and classic tools or with some new toolchain) the new model, we are at least as tech-agnostic as before.... |
Modularity* Quality of being composed of separate, interchangeable units or modules that, when combined, form a complete whole, facilitating flexibility, scalability, and ease of maintenance.
Having independent components (modules) that can be developed, managed, and modified separately yet seamlessly integrated or combined. |
| ⚠️ Partly Specification can be split into multiple files. However, not all components are reusable (e.g., allowed values). | ✅ Yes | Must be able to break down large schema into modular, manageable pieces support for imports → with `module..` or `import..` support to define overlays - add, delete, override property Verify cross-module Reference<…> fields compile and generate correctly | Must have |
|
Scalability & Maintainability* Ability to grow and and handle increasing demands while being easily understood, modified, and maintained. |
| ⚠️ Partly
| ✅ Yes | test metadata support. |
|
|
Metadata Resource Uniqueness* See note |
| ⚠️Partly Just the Fully-Qualified Name (fqn) and the UUID that can be constructed from the metadata are unique. Specification of a concept can appear multiple times. | ✅ Yes | detect duplicate UUIDs validate namespacing prevents collisions when two modules define same short name. |
| This sounds like a concept identifier:
A concept identifier in data modeling is a unique and stable reference (often called an identifier or key) that represents a specific concept or entity within a data model. It's used to clearly distinguish one concept from another and to enable reliable referencing and linkage of data across different contexts or systems. Key characteristics of a concept identifier:
Examples:
Practical usage in data modeling:
Importance: Having clearly defined concept identifiers ensures:
In summary, a concept identifier is foundational in robust data modeling because it provides clear, stable, and unambiguous references to concepts within data systems. |
Support for Multiple Classification Schemes* |
| ❌No One tree has one dimension only. Paths of the expanded tree create dependencies and moving a concept to another part in the tree is usually painful. | ✅ Yes | Detect and error on cyclic imports between modules validate cross module references. |
| @Daniel Alvarez-Coello Would you please elaborate on this and provide an example? Answer: Similarly to the filter categories (aka., facets) in an online shop, a concept might appear under multiple ones making it findable. That is the "fancy" use, on a more basic level I assume, this also allows you to group/structure e.g. "All ADAS elements" and "All Fleet management relevant elements" or all "Instrument Cluster data", wherein each of those graphs ,ay refer to some of the same elements. Not sure this this is the same point, or belongs somewhere else... |
Support for Cross Domain References* |
| ❌No VSS tree has one dimension only. One fixed hierarchy! | ✅ Yes |
|
| Examples are needed. |
Support for the Specification of Capabilities* |
| ❌No VSS focuses on the data structure (e.g., datatypes, units, etc.) But, no possible interactions with the specified data are formally described (e.g., Concept Seat is modeled but not the possible operations on that property). | ✅ Yes | Confirm auto-generated getX, listX, createX, updateX, deleteX queries/mutations exist for each concepts. (standardized queries)ensure interface declarations map correctly schema. |
| Examples are needed. |
Community and Tools* |
| ❌No Limited to COVESA community and the vss-tools (mainly exporters). Any change in the modeling language requires rework of the tools. | ✅ Yes | test multi-target codegen conforms to its schema - google protobuffs. | Must Have |
|
Support for Automated Reasoning** |
| ❌No No mechanism for semantic correctness and consistency. (e.g., what distinguishes a Car from a Motorcycle? etc.) | ⚠️Partly Only via add-ons. |
|
| Examples are needed |
OTHER - Non (Some of them can sorted in above categories) | ||||||
Separation of Concerns | Data vs Interface
| ⚠️Partly | ✅ Yes |
|
| This is not an issue of the modeling language, but rather an agreement on the operational workflow of the project. Regarding the above response, it would seem you are both getting at the same point. That said, the Support for the Specification of Capabilities* touches on this as well. It is important to keep this separation. @Paul Boyes |
Versioning Support |
| ⚠️Partly There are different releases in VSS. | ✅ Yes | ensure semantic versioning is supported??? |
| This is not an issue of the modeling language, but rather an agreement on the operational workflow of the project. Already covered above. See "Scalability & Maintainability" It is not currently called out explicitly in "Scalability & Maintainability". It should be. @Paul Boyes |
Evolving |
| ❌No | ✅ Yes |
|
| Already covered above. See "Scalability & Maintainability" Should be added explicitly to "Scalability & Maintainability" @Paul Boyes |
Non-Functional |
| ⚠️Partly | ✅ Yes |
|
| Already covered by the other criteria. Add items to "Scalability & Maintainability", "Community and Tools", "Technology Agnosticism", etc. Should be added explicitly if not already done. @Paul Boyes |
Works with VSS |
|
|
| Ability to generate VSPEC files | Must Have |
|
Other? <Add here> | ||||||
|
|
|
|
|
|
|
* = Must-have feature!
** = Nice-to-have feature that is not seen as essential by the members in COVESA. Possible limited support of it via add-ons.
VSS modelling language alternatives
Criteria | VSPEC | GraphQL | SKOS (RDF) | GraphQL + SKOS | UML (XMI) | OMG IDL | Protobuf | OpenAPI | SHACL (RDF) | JSON Schema | OWL (RDF) |
|---|---|---|---|---|---|---|---|---|---|---|---|
Simplicity* | ✅ Yes | ✅ Yes | ⚠️ Partly | ✅ Yes | ❌No | ? | ✅ Yes | ✅ Yes | ❌No | ⚠️ Verbose | ❌No |
Technology Agnosticism* | ✅ Yes | ✅ Yes | ⚠️ Partly | ✅ Yes | ⚠️ Partly | ? | ❌No | ✅ Yes | ⚠️ Partly | ✅ Yes | ❌No |
Modularity* | ⚠️ Partly | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ? | ❌No | ⚠️ Partly | ✅ Yes | ✅ Yes | ✅ Yes |
Scalability & Maintainability* | ⚠️ Partly | ✅ Yes | ✅ Yes | ✅ Yes | ❌No | ? | ⚠️ Partly | ⚠️ Partly | ⚠️ Partly | ⚠️ Partly | ❌No |
Metadata Resource Uniqueness* | ⚠️Partly | ⚠️ Partly | ✅ Yes | ✅ Yes | ❌No | ? | ⚠️ Partly | ⚠️ Partly | ✅ Yes | ❌No | ✅ Yes |
Support for Multiple Classification Schemes* | ❌No | ⚠️ Partly | ✅ Yes | ✅ Yes | ⚠️ Partly | ? | ❌No | ❌No | ⚠️ Partly | ❌No | ✅ Yes |
Support for Cross Domain References* | ❌No | ✅ Yes | ✅ Yes | ✅ Yes | ⚠️ Partly | ? | ❌No | ❌No |