Model Validation Rules
GraphValidationService enforces validation rules across structural, semantic, and domain categories based on the active authoring mode.
The GraphValidationService analyses model graphs in real time and reports issues grouped by severity: Error, Warning, and Info. The service applies different rule sets depending on the current authoring mode, so that validations remain relevant to the target platform.
Validation Categories
The rules are organised into three categories that correspond to different layers of model correctness.
Core Validation Rules
The following rules cover structural and semantic validation of the model graph.
| # | Rule ID | Severity | Category | Description |
|---|---|---|---|---|
| 1 | missing-primary-key | Error | Structural | Node has no primary key property defined |
| 2 | missing-label | Error | Structural | Node has no label defined |
| 3 | duplicate-property-name | Error | Structural | Property name is used multiple times on the same node |
| 4 | invalid-foreign-key | Error | Semantic | Foreign key references a non-existent node or property |
| 5 | orphan-node | Warning | Structural | Node has no connections to other nodes |
| 6 | missing-cardinality | Warning | Semantic | Edge has no cardinality defined (1:1, 1:N, N:M) |
| 7 | circular-dependency | Warning | Semantic | Circular foreign key chain detected between nodes |
| 8 | missing-index | Info | Semantic | Foreign key property is not marked as indexed |
| 9 | naming-convention | Info | Structural | Name does not follow the configured naming convention |
| 10 | empty-description | Info | Structural | Node or property lacks a documentation description |
Search Validation Rules
The following rules validate search projection configuration. They apply only when properties have search projections enabled.
| # | Rule ID | Severity | Description |
|---|---|---|---|
| 1 | search-duplicate-field-name | Error | Two properties project to the same field name in the search index |
| 2 | search-vector-missing-dimensions | Error | A dense_vector field has no dimensions value configured |
| 3 | search-analyzer-conflict | Warning | Both analyzer and indexAnalyzer/searchAnalyzer are set on the same field |
| 4 | search-vector-missing-profile | Warning | A vector field has no vectorSearchProfile assigned |
| 5 | search-key-not-filterable | Warning | A field marked as key does not have the filterable behaviour enabled |
| 6 | search-nested-no-flag | Warning | A property with nested field type does not have the nested flag set |
| 7 | search-geo-missing-type | Warning | A geographic property has no explicit search field type (geo_point or geo_shape) |
| 8 | search-boost-without-scoring | Info | A boost value is set on a field but scoringEnabled is false on the search profile |
Severity Levels
Error
The model is invalid. These issues must be resolved before the model is used for code generation, view creation, or publishing.
Warning
The model is technically valid but may produce unexpected results. Review these issues and resolve them where appropriate.
Info
Suggestions for improving model quality and documentation. These do not block any operations.