mirror of
https://github.com/oceanprotocol/docs.git
synced 2024-11-26 19:49:26 +01:00
55 lines
3.3 KiB
Markdown
55 lines
3.3 KiB
Markdown
# Metadata
|
||
|
||
|
||
|
||
Imagine you're searching for data on Spanish almond production within a dApp operating within the Ocean ecosystem, managed by a European fruit and nut association. This hypothetical dApp may host a vast collection of datasets, making it essential to have a way to identify the relevant ones. One effective approach is to have metadata associated with each dataset to serve as valuable information about the data itself.
|
||
|
||
Metadata plays a **crucial role** in asset **discovery**, providing essential information such as **asset type, name, creation date, and licensing details**. Each data asset can have a [decentralized identifier (DID)](../Identifiers-Metadata.md) that resolves to a DID document ([DDO](../ddo-specification.md)) containing associated metadata. The DDO is essentially [JSON](https://www.json.org/) filling in metadata fields. To understand working with OCEAN DIDs, you can refer to the [DID documentation](../Identifiers-Metadata.md). For a more comprehensive understanding of metadata structure, the [DDO Specification](../ddo-specification.md) documentation provides in-depth information.
|
||
|
||
In general, any dApp within the Ocean ecosystem is required to store metadata for every listed dataset. It's important to note that dApps do not necessarily need to possess the datasets themselves; they primarily focus on storing and managing the associated metadata. While specific metadata requirements may vary, certain fundamental pieces of metadata, including:
|
||
|
||
* **name**, e.g. “Largueta Almond Production: 1995 to 2005”
|
||
* **dateCreated**, e.g. “2007–01–20”
|
||
* **datePublished**, e.g. “2022–11–10T12:32:15Z”
|
||
* **author**, e.g. “Spanish Almond Board”
|
||
* **license**, e.g. “SAB Data License v4”
|
||
* **price**, e.g. “0”
|
||
* technical information about the **files**, such as the content type.
|
||
|
||
Other metadata might also be available. For example:
|
||
|
||
* **categories**, e.g. \[“agriculture”, “economics”]
|
||
* **tags**, e.g. \[“Europe”, “Italy”, “nuts”, “almonds”]
|
||
* **description**, e.g. “2002 Italian almond production statistics for 14 varieties and 20 regions.”
|
||
* **additionalInformation** can be used to store any other facts about the asset.
|
||
|
||
|
||
|
||
```solidity
|
||
/**
|
||
* @dev setMetaData
|
||
* Creates or update Metadata for Aqua(emit event)
|
||
Also, updates the METADATA_DECRYPTOR key
|
||
* @param _metaDataState metadata state
|
||
* @param _metaDataDecryptorUrl decryptor URL
|
||
* @param _metaDataDecryptorAddress decryptor public key
|
||
* @param flags flags used by Aquarius
|
||
* @param data data used by Aquarius
|
||
* @param _metaDataHash hash of clear data (before the encryption, if any)
|
||
* @param _metadataProofs optional signatures of entitys who validated data (before the encryption, if any)
|
||
*/
|
||
function set metadata(uint8 _metaDataState, string calldata _metaDataDecryptorUrl
|
||
, string calldata _metaDataDecryptorAddress, bytes calldata flags,
|
||
bytes calldata data,bytes32 _metaDataHash, metaDataProof[] memory _metadataProofs) external {
|
||
require(
|
||
permissions[msg.sender].updateMetadata,
|
||
"ERC721Template: NOT METADATA_ROLE"
|
||
);
|
||
_setMetaData(_metaDataState, _metaDataDecryptorUrl, _metaDataDecryptorAddress,flags,
|
||
data,_metaDataHash, _metadataProofs);
|
||
}
|
||
```
|
||
|
||
|
||
|