# Social Graph

Social Graph（社交图谱）是表示实体之间的社会关系的图，它是一个社交网络的模型呈现。在Relation Protocol中，社交图谱是指通过无数个Semantic SBT中存储的社交数据，在图数据库中组合而成的Web3社交图谱。Relation Protocol的社交图谱预定义了如下几个场景：

* Identity
* Relationship
* Publication

## Identity

在Relation协议中，身份由Relation Name Service 和若干个用于描述用户身份的Semantic SBTs组合而成。

Relation协议的身份设计是具有高扩展性的，在Relation 的协议中，所有符合Contract Open Standard的中描述身份的合约，其RDF数据均会被解析为用户身份的一部分。通过这种方式，我们希望所有开发者都可以参与去中心化网络中身份体系的构建过程。

<figure><img src="https://3668324987-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdqevFF76s9Kq7JWAPlD3%2Fuploads%2Fgit-blob-6d274b3a2c44106acfb9fafbac165de6b03e487d%2Fimage%20(1).png?alt=media" alt=""><figcaption><p>图 2-6 可编程社交身份</p></figcaption></figure>

## Relationship

在Relation协议中，关系代表了主体与主体之间的社会关系连接。同时，在某些特定的场景下，关系将被用于定义权限，如：只有关注我的人可以查看我发布的内容。

Relation协议中预定了两种关系场景：

Follow：指地址与地址间的关注关系。当一个用户关注另一个用户时，他将获得标记follow的SBT。

DAO：DAO是一个群组关系的表达，用户通过创建一个DAO的实体，使得SBT可以作为DAO的成员资格被发放给不同用户

## Publication

Publication是Relation协议中各种类型的内容发布模块，它是创作者发布的原创内容，可以是文本、图片、视频或其他格式的内容。Publication包含两种：

Content：公开类型的内容发布，所有人都可以阅读其中的内容。

Privacy Content：带有隐私的内容发布，创作者可以通过设置可见性，使得仅特定对象可以阅读内容。特定对象可以是指定的地址、NFT的holder等。

## 场景扩展

除了上述场景，Relation社交图谱同样支持场景的扩展，开发者可以通过定义符合规范定的Schema，提交当前社交图谱中尚未覆盖的场景，并定义初始RDF。
