Every contract of this kind should implement a ISemanticSBT interface.
When a new SBT is created, a CreateRDF should be triggered.
When a new SBT is updated, an UpdateRDF should be triggered.
When a new SBT is removed, a RemoveRDF should be triggered.
A contract of this kind should provide a method rdfOf.
interface ISemanticSBT{/** * @dev This emits when minting a Semantic Soulbound Token. * @param tokenId The identifier for the Semantic Soulbound Token. * @param rdfStatements The RDF statements for the Semantic Soulbound Token. An RDF statement is the statement made by an RDF triple. */eventCreateRDF (uint256indexed tokenId,string rdfStatements );/** * @dev This emits when updating the RDF data of Semantic Soulbound Token. RDF data is a collection of RDF statements that are used to represent information about resources. * @param tokenId The identifier for the Semantic Soulbound Token. * @param rdfStatements The RDF statements for the semantic soulbound token. An RDF statement is the statement made by an RDF triple. */eventUpdateRDF (uint256indexed tokenId,string rdfStatements );/** * @dev This emits when burning or revoking Semantic Soulbound Token. * @param tokenId The identifier for the Semantic Soulbound Token. * @param rdfStatements The RDF statements for the Semantic Soulbound Token. An RDF statement is the statement made by an RDF triple. */eventRemoveRDF (uint256indexed tokenId,string rdfStatements );/** * @dev Returns the RDF statements of the Semantic Soulbound Token. An RDF statement is the statement made by an RDF triple. * @param tokenId The identifier for the Semantic Soulbound Token. */functionrdfOf(uint256 tokenId) externalviewreturns (stringmemory);}
Developers can choose to implement an ISemanticRDFSchema interface to acquire the Schema URI describing the RDF data.
interface ISemanticRDFSchema{/** * @notice Get the URI of schema for this contract. * @return The URI of the contract which points to a configuration profile. */functionschemaURI() externalviewreturns (stringmemory);}
Developers can choose to implement an ISemanticSBTUpdate interface to update the RDF data of an SBT.
interface ISemanticSBTUpdate{/** * @notice Update the RDF data for Semantic Soulbound Token. Implementors can assign updaters as needed, for example, the token issuer. * @dev Emits the `UpdateRDF` event. * @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. */functionupdateRDF(uint256 tokenId,RDFDatamemory rdfData) external;}
Developers can choose to implement an ISemanticSBTPrivacy interface.
interfaceISemanticSBTPrivacyisISemanticSBT {/** * @dev Returns if the `viewer` is allowed to view the `tokenId` . * @param viewer The viewer address * @param tokenId The token Id */functionisViewerOf(address viewer,uint256 tokenId) externalviewreturns (bool);}