Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add EIP: Semantic Soulbound Tokens #6239

Merged
merged 33 commits into from
May 30, 2023
Merged

Add EIP: Semantic Soulbound Tokens #6239

merged 33 commits into from
May 30, 2023

Conversation

JessicaChg
Copy link
Contributor

When opening a pull request to submit a new EIP, please use the suggested template: https://github.com/ethereum/EIPs/blob/master/eip-template.md

We have a GitHub bot that automatically merges some PRs. It will merge yours immediately if certain criteria are met:

  • The PR edits only existing draft PRs.
  • The build passes.
  • Your GitHub username or email address is listed in the 'author' header of all affected PRs, inside .
  • If matching on email address, the email address is the one publicly listed on your GitHub profile.

@github-actions github-actions bot added s-draft This EIP is a Draft t-erc labels Dec 30, 2022
@eth-bot
Copy link
Collaborator

eth-bot commented Dec 30, 2022

✅ All reviewers have approved.

@github-actions github-actions bot added the c-new Creates a brand new proposal label Dec 30, 2022
@JessicaChg JessicaChg changed the title semantic-soulbound-tokens draft EIP-6239: semantic-soulbound-tokens draft Dec 30, 2022
@JessicaChg JessicaChg changed the title EIP-6239: semantic-soulbound-tokens draft Add EIP-6239: Semantic-soulbound-tokens Dec 30, 2022
@JessicaChg JessicaChg dismissed a stale review via 4cb0309 January 2, 2023 05:57
EIPS/eip-6239.md Outdated
---
eip: 6239
title: Semantic Soulbound Tokens
description: Adding RDF triples to EIP-721 and EIP-5192 metadata to capture the social meaning of the Token
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your wording implied (to me at least) that this standard extended either EIP-721 or EIP-5192. I think this is more clear:

Suggested change
description: Adding RDF triples to EIP-721 and EIP-5192 metadata to capture the social meaning of the Token
description: Adding RDF triples to EIP-5192 token metadata to capture social meaning

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed as suggested.

EIPS/eip-6239.md Outdated

## Abstract

This proposal extends [EIP-721](./eip-721.md) and [EIP-5192](./eip-5192.md) by introducing a standard for adding RDF triples to Soulbound Tokens (‘SBTs‘) metadata.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can tighten this up a bit:

Suggested change
This proposal extends [EIP-721](./eip-721.md) and [EIP-5192](./eip-5192.md) by introducing a standard for adding RDF triples to Soulbound Tokens (‘SBTs‘) metadata.
This proposal extends [EIP-721](./eip-721.md) and [EIP-5192](./eip-5192.md) by introducing Resource Description Framework (RDF) triples to Soulbound Tokens' (‘SBTs‘) metadata.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed as suggested.

EIPS/eip-6239.md Outdated

This proposal extends [EIP-721](./eip-721.md) and [EIP-5192](./eip-5192.md) by introducing a standard for adding RDF triples to Soulbound Tokens (‘SBTs‘) metadata.

Soulbound Token represents the commitments, credentials, and affiliations of accounts. Resource Description Framework (‘RDF’) is a standard data model developed by the World Wide Web Consortium (‘W3C’) and is used to represent information in a structured, machine-readable format in triples consisting of a subject, a predicate, and an object (the ‘RDF triple’). These triples can be combined and linked together to represent more complex information and relationships. Semantic SBTs are built on existing [EIP-721](./eip-721.md) and [EIP-5192](./eip-5192.md) standards to include RDF triples in metadata to capture and store the meaning of social metadata as a network of accounts and attributes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cutting a bit more to keep the abstract short:

Suggested change
Soulbound Token represents the commitments, credentials, and affiliations of accounts. Resource Description Framework (‘RDF’) is a standard data model developed by the World Wide Web Consortium (‘W3C’) and is used to represent information in a structured, machine-readable format in triples consisting of a subject, a predicate, and an object (the ‘RDF triple’). These triples can be combined and linked together to represent more complex information and relationships. Semantic SBTs are built on existing [EIP-721](./eip-721.md) and [EIP-5192](./eip-5192.md) standards to include RDF triples in metadata to capture and store the meaning of social metadata as a network of accounts and attributes.
A Soulbound Token represents the commitments, credentials, and affiliations of accounts. RDF is a standard data model developed by the World Wide Web Consortium (‘W3C’) and is used to represent information in a structured format. Semantic SBTs are built on existing [EIP-721](./eip-721.md) and [EIP-5192](./eip-5192.md) standards to include RDF triples in metadata to capture and store the meaning of social metadata as a network of accounts and attributes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed as suggested.

EIPS/eip-6239.md Outdated

Soulbound Token represents the commitments, credentials, and affiliations of accounts. Resource Description Framework (‘RDF’) is a standard data model developed by the World Wide Web Consortium (‘W3C’) and is used to represent information in a structured, machine-readable format in triples consisting of a subject, a predicate, and an object (the ‘RDF triple’). These triples can be combined and linked together to represent more complex information and relationships. Semantic SBTs are built on existing [EIP-721](./eip-721.md) and [EIP-5192](./eip-5192.md) standards to include RDF triples in metadata to capture and store the meaning of social metadata as a network of accounts and attributes.

Semantic SBT provides a foundation for publishing, linking, and integrating data from multiple sources, and enables the ability to query and retrieve information across these sources, using inference to uncover new insights from existing social relations. For example, form the on-chain united social graph, assign trusted contacts for social recovery, and supports fair governance.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should probably move this paragraph to motivation, since it isn't really a technical summary of the proposal.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved to motivation as suggested.

EIPS/eip-6239.md Outdated

## Motivation

While the existence of SBTs can create a decentralized social framework, there still needs to be a way to create the connectedness of SBTs through relationships on-chain. Current NFTs and SBTs are hosting data off-chain, some even on centralized servers, let alone the linking of social data. And to further fuel the boom of the SBTs ecosystem, we need a bottom-up and decentralized way to maintain people’s social identity related information.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current NFTs and SBTs are hosting data off-chain, some even on centralized servers, let alone the linking of social data.

I don't really understand what this sentence is trying to say. Would you mind rewording it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reworded as below to make it clear.

While the existence of SBTs can create a decentralized social framework, there still needs to specify a common data model to manage the social metadata on-chain in a trustless manner, describing social metadata in an interconnected way, make it easy to be exchanged, integrated and discovered. And to further fuel the boom of the SBTs ecosystem, we need a bottom-up and decentralized way to maintain people’s social identity related information.

EIPS/eip-6239.md Outdated
Comment on lines 54 to 55
```Solidity

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
```Solidity
```solidity

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed as suggested.

EIPS/eip-6239.md Outdated
Comment on lines 106 to 107
```Solidity

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
```Solidity
```solidity

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed as suggested.

EIPS/eip-6239.md Outdated
Comment on lines 121 to 122
```Solidity

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
```Solidity
```solidity

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed as suggested.

EIPS/eip-6239.md Outdated
* @param tokenId The identifier for the Semantic Soulbound Token.
* @param rdfData RDF data is a collection of RDF statements that are used to represent information about resources.
*/
function updateRDF(uint256 tokenId, RDFData memory rdfData) external;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RDFData is not defined within the specification section. The specification section must contain sufficient information to implement the standard.

Copy link
Contributor Author

@JessicaChg JessicaChg Mar 8, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defined RDFData and give some example data structures.

RDFData is a set of RDF statements that are used to represent social information about wallet addresses in the graph model. An RDF statement is the statement made by an RDF triple in subject-predicate-object format.
RDFData allows customized data schema, and developers can define data structures according to their needs. Here we provide a generic example of the structure of RDFData, using string types to define subject, predicate, and object.

In most cases, one token points to one RDF triple, the data structure as example 1 is applied. For scenarios where multiple predicates describe the same subject, i.e.multiple triples, the data structure as example 2 is applied, defining the predicate and object using an array type.

Example 1: Single triple scenario
Describing Alice attended Devcon :
:Soul_Alice p:attended :Event_Devcon
In this case, :Soul_Alice is the subject, p:attended is the predicate, and :Event_Devcon is the object.

Example 2: Multiple triples scenario
Describing Alice's profile with two attributes, event and year:
:Soul_Alice p:attended :Event_Denv; p:createdAt :2022.
In this case, :Soul_Alice is the subject, p:attended p:createdAt are predicates, and :Event_Devcon :2022 are object.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm concerned that if, hypothetically, I wanted to write a generic dapp that can show RDF data (and its updates), I wouldn't be able to decode these events for any arbitrary token, and I'd need to write a specific implementation for each token to deal with the different RDFData encodings.

EIPS/eip-6239.md Outdated
Comment on lines 138 to 153
### Method Specification

rdfOf (uint256 tokenId): Query the RDF data for the Semantic Soulbound Token by tokenId. The returned RDF data format conforms to the W3C RDF standard. RDF data is a collection of RDF statements that are used to represent information about resources. An RDF statement, also known as a triple, is a unit of information in the RDF data model. It consists of three parts: a subject, a predicate, and an object.

updateRDF (uint256 tokenId, RDFData rdfData): This **OPTIONAL** method is used when it needs to update the RDF data for Semantic SBT. Use this method to find the RDF data for Semantic SBT by tokenId and perform the update. The input RDF data **MUST** conform to W3C RDF standards. When implementing this method, **SHALL** assign updaters as needed, for example, the token issuer can be assigned as an updater. When calling this method, the UpdateRDF event **MUST** be triggered to notify the listener for performing relevant business update.

schemaURI(): This **OPTIONAL** method is used to query the URIs of the schema for the RDF data. RDF Schema is an extension of the basic RDF vocabulary and provides a data-modelling vocabulary for RDF data. It is **RECOMMENDED** to store the RDF Schema in decentralized storage such as Arweave or IPFS. The URIs are then stored in the contract and can be queried by this method.

### Event Specification

CreateRDF: When minting a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform operations with the created RDF data. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.

UpdateRDF: When updating RDF data for a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform update operations accordingly with the updated RDF data. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.

RemoveRDF: When burning or revoking a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform operations with the removed RDF data for the Semantic SBT. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All of this seems like it should belong in the Specification section. The Specification section should describe the externally visible behaviour of implementations, while the Rationale section must describe individual technical choices made within the EIP itself.

Copy link
Contributor Author

@JessicaChg JessicaChg Mar 8, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved this part into the Specification section as suggested and updated the Rationale section.

EIPS/eip-6239.md Outdated
* @param tokenId The identifier for the Semantic Soulbound Token.
* @param rdfData RDF data is a collection of RDF statements that are used to represent information about resources.
*/
function updateRDF(uint256 tokenId, RDFData memory rdfData) external;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm concerned that if, hypothetically, I wanted to write a generic dapp that can show RDF data (and its updates), I wouldn't be able to decode these events for any arbitrary token, and I'd need to write a specific implementation for each token to deal with the different RDFData encodings.

EIPS/eip-6239.md Outdated

### Method Specification

rdfOf (uint256 tokenId): Query the RDF data for the Semantic Soulbound Token by tokenId. The returned RDF data format conforms to the W3C RDF standard. RDF data is a collection of RDF statements that are used to represent information about resources. An RDF statement, also known as a triple, is a unit of information in the RDF data model. It consists of three parts: a subject, a predicate, and an object.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
rdfOf (uint256 tokenId): Query the RDF data for the Semantic Soulbound Token by tokenId. The returned RDF data format conforms to the W3C RDF standard. RDF data is a collection of RDF statements that are used to represent information about resources. An RDF statement, also known as a triple, is a unit of information in the RDF data model. It consists of three parts: a subject, a predicate, and an object.
`rdfOf (uint256 tokenId)`: Query the RDF data for the Semantic Soulbound Token by `tokenId`. The returned RDF data format conforms to the W3C RDF standard. RDF data is a collection of RDF statements that are used to represent information about resources. An RDF statement, also known as a triple, is a unit of information in the RDF data model. It consists of three parts: a subject, a predicate, and an object.

EIPS/eip-6239.md Outdated

rdfOf (uint256 tokenId): Query the RDF data for the Semantic Soulbound Token by tokenId. The returned RDF data format conforms to the W3C RDF standard. RDF data is a collection of RDF statements that are used to represent information about resources. An RDF statement, also known as a triple, is a unit of information in the RDF data model. It consists of three parts: a subject, a predicate, and an object.

updateRDF (uint256 tokenId, RDFData rdfData): This **OPTIONAL** method is used when it needs to update the RDF data for Semantic SBT. Use this method to find the RDF data for Semantic SBT by tokenId and perform the update. The input RDF data **MUST** conform to W3C RDF standards. When implementing this method, **SHALL** assign updaters as needed, for example, the token issuer can be assigned as an updater. When calling this method, the UpdateRDF event **MUST** be triggered to notify the listener for performing relevant business update.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
updateRDF (uint256 tokenId, RDFData rdfData): This **OPTIONAL** method is used when it needs to update the RDF data for Semantic SBT. Use this method to find the RDF data for Semantic SBT by tokenId and perform the update. The input RDF data **MUST** conform to W3C RDF standards. When implementing this method, **SHALL** assign updaters as needed, for example, the token issuer can be assigned as an updater. When calling this method, the UpdateRDF event **MUST** be triggered to notify the listener for performing relevant business update.
`updateRDF (uint256 tokenId, RDFData rdfData)`: This **OPTIONAL** method is used when it needs to update the RDF data for Semantic SBT. Use this method to find the RDF data for Semantic SBT by `tokenId` and perform the update. The input RDF data **MUST** conform to W3C RDF standards. When implementing this method, **SHALL** assign updaters as needed, for example, the token issuer can be assigned as an updater. When calling this method, the `UpdateRDF` event **MUST** be triggered to notify the listener for performing relevant business update.

EIPS/eip-6239.md Outdated

updateRDF (uint256 tokenId, RDFData rdfData): This **OPTIONAL** method is used when it needs to update the RDF data for Semantic SBT. Use this method to find the RDF data for Semantic SBT by tokenId and perform the update. The input RDF data **MUST** conform to W3C RDF standards. When implementing this method, **SHALL** assign updaters as needed, for example, the token issuer can be assigned as an updater. When calling this method, the UpdateRDF event **MUST** be triggered to notify the listener for performing relevant business update.

schemaURI(): This **OPTIONAL** method is used to query the URIs of the schema for the RDF data. RDF Schema is an extension of the basic RDF vocabulary and provides a data-modelling vocabulary for RDF data. It is **RECOMMENDED** to store the RDF Schema in decentralized storage such as Arweave or IPFS. The URIs are then stored in the contract and can be queried by this method.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
schemaURI(): This **OPTIONAL** method is used to query the URIs of the schema for the RDF data. RDF Schema is an extension of the basic RDF vocabulary and provides a data-modelling vocabulary for RDF data. It is **RECOMMENDED** to store the RDF Schema in decentralized storage such as Arweave or IPFS. The URIs are then stored in the contract and can be queried by this method.
`schemaURI()`: This **OPTIONAL** method is used to query the URIs of the schema for the RDF data. RDF Schema is an extension of the basic RDF vocabulary and provides a data-modelling vocabulary for RDF data. It is **RECOMMENDED** to store the RDF Schema in decentralized storage such as Arweave or IPFS. The URIs are then stored in the contract and can be queried by this method.

EIPS/eip-6239.md Outdated

### Event Specification

CreateRDF: When minting a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform operations with the created RDF data. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
CreateRDF: When minting a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform operations with the created RDF data. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.
`CreateRDF`: When minting a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform operations with the created RDF data. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.

EIPS/eip-6239.md Outdated

CreateRDF: When minting a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform operations with the created RDF data. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.

UpdateRDF: When updating RDF data for a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform update operations accordingly with the updated RDF data. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
UpdateRDF: When updating RDF data for a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform update operations accordingly with the updated RDF data. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.
`UpdateRDF`: When updating RDF data for a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform update operations accordingly with the updated RDF data. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.

EIPS/eip-6239.md Outdated

UpdateRDF: When updating RDF data for a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform update operations accordingly with the updated RDF data. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.

RemoveRDF: When burning or revoking a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform operations with the removed RDF data for the Semantic SBT. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
RemoveRDF: When burning or revoking a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform operations with the removed RDF data for the Semantic SBT. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.
`RemoveRDF`: When burning or revoking a Semantic Soulbound Token, this event **MUST** be triggered to notify the listener to perform operations with the removed RDF data for the Semantic SBT. When calling the event, the input RDF data **MUST** be RDF statements, which are units of information consisting of three parts: a subject, a predicate, and an object.

EIPS/eip-6239.md Outdated

## Rationale

The Decentralized Social today is sufficiently under-specified, leaving many methods to be built to reach convergence and interoperability. Continued work for consensus on standard DeSoc methods is needed. In order to manage the huge dataset that will be generated in DeSoc, we need to model the data in an efficient way for better management, easier integration and faster analysis. We introduce the Semantic SBTs, which specify in a common graph data model,as the blockchain-based identity certifications and primitive building blocks in building the structure of Decentralized social to empower the building of social relations and reputations in DeSoc. Thus provides a way to build next-generation social networks.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This reads more like Motivation-type content. The Rationale section should describe individual technical choices made within the proposal, while the Motivation should justify the existence of the EIP as a whole.

@github-actions github-actions bot removed c-new Creates a brand new proposal t-erc s-draft This EIP is a Draft labels Apr 5, 2023
@eth-bot eth-bot changed the title Add EIP-6239: Semantic-soulbound-tokens Add EIP: Semantic Soulbound Tokens Apr 5, 2023
@github-actions github-actions bot added c-new Creates a brand new proposal s-draft This EIP is a Draft t-erc labels Apr 5, 2023
@github-actions github-actions bot added the w-ci Waiting on CI to pass label Apr 5, 2023
@github-actions
Copy link

github-actions bot commented Apr 5, 2023

The commit f0746f4 (as a parent of fa5cedb) contains errors.
Please inspect the Run Summary for details.

EIPS/eip-6239.md Outdated

RDF statements come in various formats, we have selected the six most commonly used formats: `nt(N-Triples)`,`ttl(Turtle)`,`rdf(RDF/XML)`,`rj(RDF/JSON)`,`nq(N-Quads)` and `trig(TriG)`.

The complete format of an RDF statement:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The character isn't rendering correctly for me.

EIPS/eip-6239.md Outdated Show resolved Hide resolved
EIPS/eip-6239.md Outdated

{}:OPTIONAL

<>: MUST
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<>: MUST
In the following section, fragments surrounded by `<>` characters are REQUIRED.

EIPS/eip-6239.md Outdated

- `nt(n-triples)`

[`nt`](http://www.w3.org/ns/formats/N-Triples) uses space to separate the subject, predicate, object of a triple, and a period . to indicate the end of a triple.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We currently do not allow links to the W3 standards organization. Once #6691 is merged, the bots will be updated to allow these links.

In the meantime, you could remove these links, or wait for that pull request to be merged.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have removed the links to W3C. Can you consider merging the request?

JessicaChg and others added 2 commits May 3, 2023 13:52
Co-authored-by: Sam Wilson <57262657+SamWilsn@users.noreply.github.com>
@github-actions github-actions bot removed the w-ci Waiting on CI to pass label May 3, 2023
EIPS/eip-6239.md Outdated
}
```

`ISemanticSBTUpdate` is an extension interface, that is **OPTIONAL** for this standard, used to update the RDF data for the Semantic Soulbound Token.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally speaking, functions that are called by the deployer of the contract don't need to be standardized, because the deployer of the contract has application specific knowledge about the implementation. For example the mint and burn functions of ERC-20 and ERC-721 tokens are part of those standards because that behaviour is specific to each implementation.

Similar logic applies here. ISemanticSBTUpdate is specific to each implementation, and so shouldn't be part of the standard.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SamWilsn Thank you for your suggestion, we have deleted ISemanticSBTUpdate in eip 6239.

@eth-bot eth-bot enabled auto-merge (squash) May 30, 2023 15:05
Copy link
Collaborator

@eth-bot eth-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All Reviewers Have Approved; Performing Automatic Merge...

@eth-bot eth-bot merged commit 6352016 into ethereum:master May 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c-new Creates a brand new proposal e-consensus Waiting on editor consensus e-review Waiting on editor to review s-draft This EIP is a Draft t-erc
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants