Holons & Data Model
A Holon is the fundamental data unit of OASIS — a self-contained, composable object that can represent anything: a game level, a player item, a quest, a social connection, or any structured data your OApp needs.
What is a Holon?
The term comes from Arthur Koestler's philosophy: a holon is something that is simultaneously a whole and a part. In OASIS this means:
- Every holon is a complete, standalone data object with its own ID.
- Every holon can contain child holons, forming arbitrarily deep trees.
- Every holon can belong to multiple parents (a directed acyclic graph, not just a tree).
This makes holons ideal for representing the hierarchical, interconnected nature of metaverse content — worlds contain zones, zones contain objects, objects contain properties — without imposing a rigid schema.
Holon Schema
| Field | Type | Description |
|---|---|---|
id | guid | Unique OASIS identifier, auto-assigned on create |
name | string | Human-readable name |
description | string | Optional description |
holonType | string enum | Semantic type — see Holon Types below |
metaData | Dictionary<string, object> | Arbitrary key-value store — put your OApp-specific fields here |
parentHolonId | guid | Optional parent holon — enables tree structures |
parentHolonIds | guid[] | Multiple parents — enables graph structures |
createdByAvatarId | guid | Avatar that created this holon |
modifiedByAvatarId | guid | Avatar that last modified this holon |
createdDate | ISO 8601 | Auto-set on create |
modifiedDate | ISO 8601 | Auto-set on update |
isActive | boolean | False after soft-delete |
version | number | Incremented on each save — used for optimistic concurrency |
Holon Types
The holonType field is a hint to the OASIS kernel and providers about how to handle the holon. Use Custom for OApp-specific data.
| HolonType | Used for |
|---|---|
Custom | OApp-defined data (default) |
Quest | Quest definition and state |
Mission | Mission definition |
Player | Player-specific game data (separate from Avatar) |
GreatWork | Community project or collaborative build |
CelestialBody | WEB5 spatial object (planet, star, station) |
CelestialSpace | WEB5 spatial region |
GeoNFT | Geolocated NFT |
Example: OApp Game Level
json
{
"name": "The Lost Cavern",
"holonType": "Custom",
"parentHolonId": "<oapp-root-holon-id>",
"metaData": {
"levelNumber": 3,
"difficulty": "hard",
"enemyCount": 42,
"unlockKarmaRequired": 500,
"completionKarmaReward": 150
}
}