Skip to main content

How to create

There are multiple ways to create Triples on the Intuition platform. Choose the method that best fits your development workflow:

Development Options

SDK

Use the Intuition SDK for a streamlined development experience with TypeScript support and built-in helpers.

Explore SDK →

Smart Contracts

Interact directly with Intuition smart contracts for maximum control and customization.

View Smart Contracts →

Practical Implementation

Creating Triples

// Basic Triple creation
const triple = await createTriple({
subjectId: aliceAtom.id,
predicateId: livesInAtom.id,
objectId: parisAtom.id
});

// With temporal context
const employmentTriple = await createTriple({
subjectId: person.id,
predicateId: "employed-by",
objectId: company.id,
metadata: {
startDate: "2024-01-01",
department: "Engineering"
}
});

Best Practices for Structuring Triples

Use Precise Predicates

The Predicate Atom is crucial for clarity. Guidelines:

  • Search first: Check if a canonical predicate already exists
  • Reuse standards: Don't create [works for] if [employee of] is widely used
  • Converge on conventions: Using common predicates helps data link up instead of fragmenting

The Intuition community and token mechanics organically push toward standard predicates through signal accumulation.

For a curated list of recommended predicates, visit the Recommended Predicates List on the Intuition Portal.

One Fact Per Triple

Each Triple should capture a single discrete claim:

  • ❌ "Alice isFriendOf Bob and coworker at CompanyX"
  • ✅ Two separate Triples: one for friendship, another for workplace

Keeping to one relation makes staking and validation straightforward—people can agree with one link and not the other.

Leverage Nesting for Context

When statements need qualification:

  • Create auxiliary Triples rather than complicating the original
  • Attach timeframes or sources through supporting Triples
  • Use nested Triples for meta-information

Example: Time-bound relationships

Main Triple: [Alice] -- [is friend of] --> [Bob]
Context Triple: [Triple ID] -- [valid since] --> [2023]

Handle Counter-Claims Wisely

Generally, you don't need to manually create "not X" Triples—the negative staking vault handles disagreement. However, sometimes a negation has specific meaning that deserves its own predicate (e.g., [is Not Friend Of] as a distinct relation type).

The "Counter Triple" concept is more about how the UI and indexing organize the negative vault signal than about separate data objects