Documentation
silvermind.art
  • Welcome to Silvermind
  • Fundamentals
    • Digital Artist
    • Digital Asset
      • Artwork Metadata
      • NFT Metadata
      • Example
    • Electronic Autograph (e-autograph)
    • Encrypted Digital Artefact (EDA)
      • Storing EDA
    • Art NFT
      • Verification of authenticity
  • Help
    • FAQ
Powered by GitBook
On this page
  • ERC fields
  • Advanced metadata structure carrying semantics
  1. Fundamentals
  2. Digital Asset

NFT Metadata

Semantics and Non-Fungible Tokens for copyright management

Last updated 1 year ago

ERC fields

In the case of we have the following as a standard schema:

{
    "title": "Asset Metadata",
    "type": "object",
    "properties": {
        "name": {
            "type": "string",
            "description": "Identifies the asset to which this NFT represents"
        },
        "description": {
            "type": "string",
            "description": "Describes the asset to which this NFT represents"
        },
        "image": {
            "type": "string",
            "description": "A URI pointing to a resource with mime type image/* representing the asset to which this NFT represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive."
        }
    }
}

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.

Here's the example structure of how NFT metadata will look like:

{
  "@context": "https://schema.org/",
  "@type": "Photograph",
  
  "name": "...",
  "description": "...",
  "image": "ipfs://.....",
  ...... more schema.org properties ......
  
  "external_url": "ipfs://....."
  "attributes": [...]
  "properties": {...}
}

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.

Field
Vocabulary
Semantics

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.

Here's info about respectively.

To make it robust, we may use generic vocabularies, but in general it all winds up to and as the most popular frameworks. In fact Dublin Core fields we already use in the , so the transition is trivial.

A URI pointing to a resource with mime type image/* representing the asset to which this token represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive. At the moment of writing doesn't support WebP images and is suggesting images of 3000px width. However, any marketplace, whatever image one uploads, will generate a smaller preview image. To stay on the safe side, currently best is to use PNG and JPG formats () of under 50MB in size. For Silvermind this field serves as a "display image", which is good enough in many cases to be the artwork artefact itself. However, the artwork artefact we present through CreativeWork:associatedMedia.

Used to represent traits .

Used to represent various features or even traits in . Sort of equivalent to attributes but expressed differently.

We use this instead of . The value must be the same as identifier saved in . This id is a future-proof approach where bots would try to organise all semantically rich NFTs into a graph.

It's the URI on IPFS pointing to a single downloadable artefact representing the artwork. It can be a zip file or the large image file or any sort of . Same as external_url for OpenSea.

IPFS URI taken from

The owner person or organisation derived from

The year

The contributor person or organisation as defined in

The person or organisation derived from

The person or organisation derived from

Derived from . We ony care about the date (not date and time)

The timestamp taken from

The date from

Also we only listed the main fields that are crucial for describing the artwork, one may choose to use the whole vocabulary of . This will eventually serve the bots and AI to include NFTs into the the global giant graph knowledgebase.

"image_details": {
    "bytes": 2465499,
    "format": "PNG",
    "sha256": "de42ae8c5439b01319ed88a951afce37dcbdd2681123f329815a6f05d922ee7e",
    "width": 1024,
    "height": 1024
  },
ERC-721
ERC-1155
Schema.org
Dublin Core
artwork metadata
https://schema.org/CreativeWork
name
description
image
foundation.app
of course with metadata rectified on them
for instance on OpenSea
marketplaces such as OpenSea
identifier
image metadata XMP-dc:identifier
sameAs
url
EDA
license
image metadata XMP-xmpRights:WebStatement
copyrightHolder
XMP-xmpRights:Owner image metadata
copyrightYear
mentioned in Exif:copyright
contributor
image metadata XMP-dc:contributor
creator
image metadata XMP-dc:creator
encodingFormat
publisher
image metadata XMP-dc:publisher
dateCreated
image metadata Exif:CreateDate or Exif:DateTimeOriginal
dateModified
image metadata Exif:ModifyDate
datePublished
image metadata XMP-dc:date
version
associatedMedia
additionalProperty