Atom Best Practices
This guide provides comprehensive best practices for creating effective, reusable Atoms that contribute to a high-quality Intuition knowledge graph.
Creating Effective Atomsβ
1. Leverage Deterministic IDsβ
Remember that identical atomData will always produce the same Atom ID. This ensures:
- No duplicate Atoms for the same data
- Predictable, verifiable identifiers
- Consistent references across the network
// Same data = same Atom ID
const atom1 = createAtom({ data: "Ethereum" })
const atom2 = createAtom({ data: "Ethereum" })
// atom1.id === atom2.id (always true)
2. Check for Similar Atomsβ
Before creating new Atoms, search for existing canonical Atoms:
- Reduces fragmentation
- Leverages existing Signal
- Improves data consistency
- Benefits from accumulated trust
3. Use Clear, Descriptive Dataβ
Choose unambiguous, descriptive data values:
Good:
{ "data": "Machine Learning" }
{ "data": "Vitalik Buterin" }
{ "data": "2024-01-15T10:00:00Z" }
Avoid:
{ "data": "ML" } // Ambiguous
{ "data": "VB" } // Unclear
{ "data": "today" } // Not specific
4. Maintain Single Purposeβ
Each Atom should represent one thing:
Good:
const ethereum = { data: "Ethereum" }
const blockchain = { data: "blockchain" }
const platform = { data: "platform" }
// Combine via Triple
[Ethereum] - [is a] - [blockchain platform]
Avoid:
// Too much packed into one Atom
const composite = { data: "Ethereum is a blockchain platform founded in 2015" }
5. Consider Reusabilityβ
Design Atoms that others will want to reference:
- Use common terminology
- Follow domain conventions
- Keep scope focused
- Think composably
Atom Design Patternsβ
Think of Atoms as words in the Intuition dictionary:
- They are the lego-like pieces that snap into many contexts
- Community Signal concentrates on the words that matter most
- Triples form the "sentences" that connect these dictionary words together
Pattern: Universal Conceptsβ
Create Atoms for widely-applicable concepts:
[true]
[false]
[yes]
[no]
[member of]
[created by]
[owns]
Pattern: Domain-Specific Termsβ
Use precise domain language:
[smart contract]
[ERC-20 token]
[liquidity pool]
[validator node]
Pattern: Temporal Markersβ
Include specific timestamps or dates:
[2024-01-15]
[Q1 2024]
[2024-01-15T10:30:00Z]
Integration with Triplesβ
Atoms gain their true power when connected via Triples:
Subject Atomsβ
The entity being described:
[Alice]
[Ethereum]
[USDC Token]
Predicate Atomsβ
The relationship or property:
[owns]
[created]
[member of]
[deployed on]
Object Atomsβ
The value or target:
[Bob]
[blockchain]
[Ethereum network]
[2024-01-15]
This separation allows each component to be independently verified, updated, and trusted.
Naming Conventionsβ
Consistency Rulesβ
- Use camelCase for property names in structured data
- Maintain consistent terminology across related atoms
- Follow established domain conventions
- Use singular form unless specifically plural
Examplesβ
Good:
{
"type": "concept",
"content": "Smart Contract",
"category": "blockchain"
}
Consistent:
{
"type": "entity",
"content": "Uniswap Protocol",
"category": "defi"
}
Metadata Best Practicesβ
Required Metadataβ
Always include:
- Creation timestamps
- Creator's DID
- Version information for mutable atoms
{
"metadata": {
"created": "2024-01-15T10:30:00Z",
"creator": "did:ethr:mainnet:0x123...",
"version": "1.0",
"lastModified": "2024-01-15T10:30:00Z"
}
}
Optional but Recommendedβ
{
"metadata": {
"description": "Brief description of the Atom",
"tags": ["relevant", "keywords"],
"category": "domain-category",
"source": "https://source-url.com",
"license": "CC-BY-4.0"
}
}
Scalable Designβ
Design for Composabilityβ
Create Atoms that can be combined in multiple ways:
// Reusable building blocks
const alice = { data: "Alice" }
const bob = { data: "Bob" }
const friendOf = { data: "friend of" }
const knows = { data: "knows" }
// Multiple compositions
[Alice] - [friend of] - [Bob]
[Alice] - [knows] - [Bob]
Consider Future Extensibilityβ
Design with growth in mind:
- Use versioning
- Include extension points
- Maintain backward compatibility
- Document changes
Maintain Backward Compatibilityβ
When updating Atoms:
- Preserve existing fields
- Add new fields carefully
- Document breaking changes
- Consider migration paths
Common Pitfalls to Avoidβ
1. Overly Broad Atomsβ
Avoid:
{ "data": "Technology" } // Too broad
Better:
{ "data": "Blockchain Technology" }
{ "data": "AI Technology" }
2. Redundant Informationβ
Avoid:
{
"data": "Ethereum blockchain cryptocurrency"
}
Better:
// Separate Atoms connected via Triples
[Ethereum] - [is a] - [blockchain]
[Ethereum] - [is a] - [cryptocurrency]
3. Time-Sensitive Data Without Timestampsβ
Avoid:
{ "data": "Current CEO" }
Better:
[Company X] - [has CEO] - [Person Y]
// Add temporal context via Triple metadata
4. Ambiguous Referencesβ
Avoid:
{ "data": "Paris" } // City or person?
Better:
{ "data": "Paris, France" }
{ "data": "Paris Hilton" }
Performance Considerationsβ
Optimize for Queriesβ
- Use indexed fields
- Keep data structures flat when possible
- Minimize nested complexity
- Consider query patterns
Balance Detail and Sizeβ
- Include necessary context
- Avoid bloat
- Use references for large data
- Store heavy content off-chain (IPFS)
Quality Checklistβ
Before creating an Atom, verify:
- Clear, unambiguous data
- Single, focused purpose
- Follows naming conventions
- Includes required metadata
- Checked for existing similar Atoms
- Designed for reusability
- Appropriate granularity
- Verifiable content
- Respects community standards
- Documented if complex
Next Stepsβ
- Triple Fundamentals - Learn how to connect Atoms into meaningful relationships
- Signal Fundamentals - Understand how to build trust in your Atoms
- Atom Structuring - Review advanced structuring techniques