The Follow the Money (FtM) data model is designed for storing complex object graphs using three primary concepts: Entities, References, and Streams. Understanding how these interact is essential for modeling data correctly within the ecosystem.
1. Entities
An entity is a JSON object representing a specific object in the graph. Every entity must contain three standard fields:
id: A unique identifier for the entity.schema: A string specifying the type of the entity (e.g., Person, Company).properties: A dictionary where keys are property names and values are arrays of strings. Even single-valued properties must be represented as an array.
2. References
Entities link to one another using a special property type called entity. Instead of nesting the target object, the property stores the id of the referenced entity.
3. Interstitial Entities
When a relationship between two entities has its own metadata (e.g., a person's ownership percentage in a company), do not attempt to model this as a simple edge. Instead, create an interstitial entity. This is a dedicated entity that holds references to both participants and contains the relationship-specific properties.
Warning: Do not assume that entities derived from schema:Thing are nodes and schema:Interval are edges. This is a false assumption that leads to bugs; always use interstitial entities for attributed relationships.
{
"id": "1b38214f88d139897bbd13eabde464043d84bbf9",
"schema": "Person",
"properties": {
"name": ["John Doe"],
"nationality": ["us", "au"],
"birthDate": ["1982"]
}
}