Indexing

Monitoring, ingesting, and materializing the Fide Context Graph.

Indexing is the Ingestion Path of the Fide Context Protocol. This page covers how broadcast Signed Statements are discovered, validated, and materialized into a queryable graph. Indexing is optional infrastructure — applications can implement their own indexing, use shared indexers, or query statements directly.

SDK Support

The SDK provides verification utilities for indexers. See Indexing in the SDK documentation for available functions.

FCP specifies what must be validated (signatures, timestamps, strict violations) but not how to store or query the data. Storage technology is an implementation choice. This reference implementation uses a Pure Graph Architecture:

  • 2 Core Tables: fcp_raw_identifiers (fingerprint↔identifier mapping), fcp_statements (all graph edges)
  • All relationships are Statements via PROV-O and W3C Security patterns (prov:wasGeneratedBy, prov:wasAssociatedWith, sec:controller)
  • Type-Safe Enums: PostgreSQL enum types for entity types, source types, and predicate types

The Ingestion Pipeline

Indexers discover Fide attestation registries through topic scanning or manual configuration (see Broadcasting: Discovery).

Indexing Metadata

Indexers often attach extra metadata that is not part of the core statement graph.

  • indexed_at: when this indexer first observed an attestation in a registry
  • anchored_at (optional): when the attestation was first verifiably included in an anchored batch (external sequencing layer)

Discovery Flow

Scan: Query GitHub API for topic fide-attestation-registry

Register: Add discovered repo URLs to your sync list (or equivalent mechanism in your indexing pipeline)

Ingest: Start the indexing pipeline to begin validating and materializing attestations from discovered registries


Suggested Indexer Architecture

This reference implementation uses a relational database (PostgreSQL via Supabase) with two core tables and supporting views.

Tables

fcp_raw_identifiers

Prop

Type

Fingerprint ↔ identifier lookup table.


fcp_statements

Prop

Type

Core triple store: all facts as subject-predicate-object tuples.


Query Patterns

Query patterns extract specific patterns from fcp_statements to provide queryable subsets of the graph (see Querying for application-level query logic). These are implemented via the materialized view below and TypeScript service layers for complex patterns.

Identity Resolution

Fide IDs (did:fide:0x...) are deterministic but fragmented. A single person may have multiple Fide IDs (one for Twitter, one for GitHub, one for a wallet).

Indexers must resolve these fragments into a single, cohesive entity.

Implementation Guides

For detailed algorithms and SQL patterns, see the Identity Resolution Guides.

Materialized View: Statements with Resolved Identifiers

Pre-resolves identifier aliases to canonical primaries and materializes human-readable identifier strings. Excludes owl:sameAs statements to prevent circular resolution logic.

Prop

Type


On this page