Relations and tags
Model identified links and useful classifications.
Relation or classification
A relation connects identified objects: a quote belongs to a client, a result comes from work or a document supplies a source. A tag classifies an object using vocabulary. Both can be displayed together but serve different purposes.
Classification review states whether the Tag applies to the whole content or a selected passage. Adding or removing a Tag rewrites neither content nor its values. The card retains the name returned by Surface; when a preview does not include that name, it explains the absence and keeps exact references available in details.
| Element | Expected values | Example |
|---|---|---|
| Relation type | Declared definition | Client quote |
| Source and target | Compatible object identities | Q-1042 → North Studio |
| Direction | Incoming or outgoing in context | Quotes visible from Client |
| Cardinality | Declared minimum and maximum | One client per quote |
| Tags | Admitted vocabulary terms | Priority, Maintenance |
Define the policy
The Model declares relation types, compatible objects and operation effects. Checks apply when creating or changing links. Reverse views query existing links in the other direction rather than duplicate the relation.
When configuring linked fields, review the effects before confirming. If the response remains unverified, resume the same request without changing its selection. If the change is confirmed but its view cannot be refreshed, retry the read without confirming again. Technical coordinates remain available in details separate from declared names.
Example
Q-1042 references North Studio. Both objects carry the Maintenance tag. Removing the tag does not remove the client association. Opening the client displays the quote according to permissions and its declared Query.
Integrations configure these mappings between apps; graphs help explore relations visually.
Applied examples : One client, many quotes
The constraint governs links; the presentation group shows four results and access to the full list.
Configuration
Fragment placed in relationPolicies[]. Properties and accepted values.
{
"contract": "SurfaceRelationPolicy@1",
"key": "quote-client",
"linkTypePath": "application/client",
"source": {
"definitionPaths": [
"workspace/quotes/surface/quote"
],
"fields": []
},
"target": {
"definitionPaths": [
"workspace/clients/surface/client"
],
"fields": []
},
"maximumOutgoing": 1,
"maximumIncoming": null,
"acyclic": false,
"deletion": "forbid",
"maximumTraversalNodes": 1000
}
Variation and connection
Fragment placed in presentation.recordProfiles[].detail.relatedGroups[]. Properties and accepted values.
{
"key": "quotes",
"label": "Quotes",
"queryBindingKey": "client-quotes",
"maximumVisible": 4,
"openAllLabel": "View all quotes",
"rowIcon": null
}
UI layout example
The illustrative layout below places this configuration in the Clients/Quotes app. Insert each fragment at the stated location, with Field, Query and Action references matching the Model declarations.
- Selected client
- Search
- Quotes
- View all quotes