> For the complete documentation index, see [llms.txt](https://relationlabs.gitbook.io/protocol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://relationlabs.gitbook.io/protocol/indexer/introduction.md).

# Definition and usage

As a part of the Relation Protocol, the main function of the Graph Indexer is to construct a social graph:

[Events](https://ethereum.org/en/glossary/#events) are the atomic units in the Relation social graph. The general technical [specification](http://eips.ethereum.org/EIPS/eip-6239) of the Relation Protocol defines three events:

* CreateRDF: Triggered when a SBT containing RDF semantics is created.
* UpdateRDF: Triggered when a SBT containing RDF semantics is updated.
* RemoveRDF: Triggered when a SBT containing RDF semantics is removed.

The Graph Indexer parses these three events by listening to transactions on the blockchain. Users' social interactions are then stored in a graph database, thus constructing a social graph(see Figure: 7-1). This helps individual developers and companies to build a more meaningful user relationship in Dapps and other decentralized projects. It can foster a more user-friendly social network experience.

<figure><img src="/files/AEjX0pnSopmYL3QR1UZl" alt=""><figcaption><p>Figure 7-1</p></figcaption></figure>

This chapter will show you how to construct a `Graph Indexer`:

1. [Listen to events on the blockchain.](/protocol/indexer/event-listener.md): Listens to all events conforming to the [EIP6239](http://eips.ethereum.org/EIPS/eip-6239) specification on the blockchain.
2. [Parse RDF data](/protocol/indexer/parse-data.md): Parse the RDF from the event conforming to the [Schema specification](/protocol/schema-standard/how-schema-limit-contract.md) and construct it into data structure in a graph.
3. [Build the social graph](/protocol/indexer/build-graph.md): Store the data into the graph database.

{% embed url="<https://youtu.be/8X420sNwygI>" %}
