# GraphQL Subgraph

### GraphQL Subgraph&#x20;

The Graph is an indexing protocol for organizing blockchain data and making it easily accessible with GraphQL. RARA has developed a subgraph to make RARA protocol data easily available.

* [theGraph Playground](https://thegraph.com/hosted-service/subgraph/rara-social/rara-social-curation-protocol)

### Entity Definitions

* **Source**: a “Source” entity represents an external NFT that has been registered with the RARA protocol for use as a reaction.&#x20;
* **Transform**: a “Transform” entity represents a specific version of an external NFT that has been registered with the RARA protocol for use as a reaction. This concept allows for multiple versions of an external NFT to be represented in the RARA protocol.&#x20;
* **Reaction**: a “Reaction” entity represents a transform that has been purchased by a user to use as a reaction to a curated NFT.
* **UserReaction**: a “UserReaction” entity is a representation of a single reaction owned by a single user.&#x20;
* **UserSpend**: a “UserSpend” entity is a representation of a specific use of a reaction to a curated NFT by a user. This entity includes the user’s NFT exhibit tags and comments. ​​
* **CuratorVaultToken**: a “​​CuratorVaultToken” entity represents an external NFT that has been curated with the RARA protocol.
* **UserSell**: a “UserSell” entity is created each time a user sells curation tokens.
* **UserPosition**: a “UserPosition” entity represents a user’s balance in a specific ​​CuratorVaultToken&#x20;
* **UserEarning**: a “UserEarning” entity represents a single user’s royalty earnings.

### Contract Event Diagram&#x20;

This diagram illustrates the relationship between contract functions, contract events, and the graph entities:

* [Contract Event Diagram](https://docs.google.com/drawings/d/1KvYW_xUW6QL3wyIvNb-t4BnOA-fzm9zOwyiaoDrQr4E/edit?usp=sharing)

### Source Code

* Entity Schema
  * [Schema](https://github.com/rara-social/rara-protocol/blob/main/subgraph/src/schema.graphql)
* Event Mappings
  * [MakerRegistrar](https://github.com/rara-social/rara-protocol/blob/main/subgraph/src/mapping/MakerRegistrar.ts)
  * [ReactionVault](https://github.com/rara-social/rara-protocol/blob/main/subgraph/src/mapping/ReactionVault.ts)
  * [CuratorVault](https://github.com/rara-social/rara-protocol/blob/main/subgraph/src/mapping/CuratorVault.ts)
