NFT Metadata
Semantics and Non-Fungible Tokens for copyright management
ERC fields
In the case of ERC-721 we have the following as a standard schema:
Here's info about ERC-1155 respectively.
The json schema doesn't restrict the properties in the json file, only suggests a convention. It's up to the consumer app to interpret them. Normally marketplaces use an additional field"properties" or "attributes" for presenting different traits.
Advanced metadata structure carrying semantics
At Silvermind we leverage JSON-LD to write metadata of NFT. We do it in a way that it's compatible with ERC standard but extended with semantic vocabularies.
To make it robust, we may use generic vocabularies, but in general it all winds up to Schema.org and Dublin Core as the most popular frameworks. In fact Dublin Core fields we already use in the artwork metadata, so the transition is trivial.
Here's the example structure of how NFT metadata will look like:
Describing NFT metadata in such a way, is backwards compatible with NFT marketplaces as well as interoperable with systems which support semantic standards (it's high-time marketplaces should do that), such as web crawlers or other robots.
Here's the summary of all the fields that Silvermind supports on a photograph art NFT.
ERC-721 schema.org/Thing
Identifies the asset to which this token represents. Normally it should be inherited from the asset title, such as XMP-dc:title field.
ERC-721 schema.org/Thing
Describes the asset to which this token represents
Normally it should be inherited from the asset description, such as XMP-dc:description field. However, marketplaces allow Markdown syntax here, so the description can be more elaborate than what we see in the artwork metadata.
ERC-721 schema.org/Thing
It's a thumbnail of the actual artwork artefact. For now it's a URI on IPFS, hopefully in the future marketplaces will support schema.org/ImageObject
image_url
Some marketplaces
Same URI as used for image. Probably legacy field.
image_details
Some marketplaces
Normally marketplaces do their own caching of digital assets and therefore image_details might be redundant. However, for backwards compatibility we keep this field. Note that image_details will be of the image (preview), not necessarily the artwork itself.
external_url
OpenSea specific
OpenSea is using it to show the original artefact. Just to be compatible with OpenSea we fill it out with the same IPFS url as the schema.org/Thing::url
attributes
OpenSea specific
properties
OpenSea specific
*
NFT standards don't prevent arbitrary fields. However, at Silvermind we don't add more than the basics for backward compatibility, everything else is expressed through the schema.org vocabulary.
-
-
-
@context
schema.org
Exact value "https://schema.org/"
@type
schema.org
Should be CreativeWork, Photograph or a MediaObject (e.g. ImageObject)
@id
schema.org/CreativeWork
schema.org/Thing
URL pointing to the NFT on a blockchain scanner, such as Etherscan.
schema.org/Thing
schema.org/CreativeWork
schema.org/CreativeWork
schema.org/CreativeWork
schema.org/CreativeWork
schema.org/CreativeWork
schema.org/CreativeWork
MIME type of the main artefact which is available through Thing:url. Normally it will be a "application/zip" file comprised of CreativeWork:associatedMadia but in certain cases it can be an image itself (e.g. high resolution image)
schema.org/CreativeWork
schema.org/CreativeWork
schema.org/CreativeWork
schema.org/CreativeWork
schema.org/CreativeWork
NFT metadata might be updatable by the contract owner. This is useful for enriching the NFT record semantically or even changing the artwork upon a new release. So we suggest using this field as a counter, which increments when dateModified changes.
schema.org/CreativeWork
Assets that are associated to the NFT. Normally these are files within the main artefact zip file which represents the contents of the artwork as a single unit. These include: certificate of authenticity, quick view html, images of different dimensions, etc. Importantly, the checksum for each media object should be available in this field for ensuring/validating authenticity.
schema.org
Normally used on associatedMedia objects and some other very technical things.
Note that some of the information that we write into NFT is actually available by querying the blockchain, however, having it directly as NFT metadata saves resources when validating the authenticity.
Also we only listed the main fields that are crucial for describing the artwork, one may choose to use the whole vocabulary of https://schema.org/CreativeWork. This will eventually serve the bots and AI to include NFTs into the the global giant graph knowledgebase.
Last updated