#
Schema Reference
#
Schema Reference
This page defines the main schema concepts used throughout Curiosity Workspace.
#
Node schema
A node schema defines a type of entity stored in the graph. It typically contains:
- Type name (e.g.,
Device,SupportCase) - Key fields that uniquely identify nodes of that type
- Properties used for display, filtering, and indexing
- Optional: a timestamp field used for time filters and recency sorting
#
Example (C# schema annotations)
[Node]
public class SupportCase
{
[Key] public string Id { get; set; }
[Property] public string Summary { get; set; }
[Property] public string Content { get; set; }
[Timestamp] public DateTimeOffset Time { get; set; }
}
#
Edge schema
An edge schema defines relationship types between node types. Edges can be directional and are typically named to read well in traversal:
Case -> ForDevice -> DeviceDevice -> HasPart -> Part
#
Example (edge name constants)
public static class Edges
{
public const string HasPart = nameof(HasPart);
public const string PartOf = nameof(PartOf);
}
#
Keys
Keys define identity. Keys must be:
- stable over time
- available during ingestion
- unique within a node type
If you cannot rely on a natural key, use a deterministic ID strategy.
#
Properties
Properties store attributes:
- strings, numbers, enums
- timestamps
- structured fields used for filters
Properties are also what you typically index for text and vector search.
#
Aliases (conceptual)
Aliases represent alternative names for a node. They are useful for:
- variations in spelling/punctuation
- abbreviations and acronyms
- normalization across sources
Systems often store internal configuration objects (e.g., pipelines, indexes) as nodes. These may be hidden by default but can be inspected for debugging.
#
Related pages
- How to design schemas: Data Integration → Schema Design
- How to query: Graph Query Language