使用The Graph 索引链上RDF数据

The GraphQL API是Relation基于The Graph开发的链上图数据查询服务

概述

在部署Semantic SBT合约后,项目方可以通过对接The Graph 服务,来获取链上SBT对应的RDF数据。

在获取到RDF数据后,项目方可以自行选择对应的图数据库来存储从链上的RDF数据。

本文档以AWS的Neptune为例,演示如何将链上RDF数据保存至图数据中。

具体步骤:

  1. 通过The Graph获取到数据实体中的RDF数据内容,即链上数据的turtle数据对象

  2. 通过调用合约的schemaURI方法查询RDF对应的数据schema。

  3. 将schema和turtle数据对象按SPARQL UPDATE语法格式拼接成对应的图数据库插入语句。

  4. 调用Neptune的服务接口

GraphQL API服务介绍

数据访问方式:

  • 通过The Graph 官方提供的webUI(playground)的方式查询

  • 通过HTTP请求方式查询

  • 通过JS Client的方式查询

数据实体

  • id: The transaction id .

  • txnHash: The transaction hash in blockchain.

  • blockNumber: The block number.

  • contract: The contract address.

  • owner: The token owner of SBT.

  • tokenId: The token id of SBT.

  • turtle: The RDF content.

Web UI的方式查询

GraphQL API项目地址:

https://thegraph.com/hosted-service/subgraph/relationlabs/semantic-sbt

可以登录后可以通过The Graph提供的playground进行查询

HTTP REST 请求

查询最近两条(对应参数 first:2)token对应的数据实体

查询结果

通过JS Client的方式查询

安装 @apollo/client 和 graphql组件

初始化client

获取图数据库对应的Schema

通过调用合约的schemaURI方法查询schema。

该schema用于构建图数据库时,存储数据时使用。

RDF数据导入图数据库

  1. aws控制台启动一个Neptune实例

  2. 将turtle数据与对应schema拼接成SPARQL update语句

3. 调用Neptune服务接口保存RDF数据

4. 调用Neptune服务接口查询保存的数据

代码示例

下边通过一段python代码,来示例如何查询链上RDF数据,并保存至Neptune图数据库中的完整过程。

Last updated