Data Catalog
Key Features
-
Discover Datasets: Easily discover datasets related to your area of interest through intuitive search and exploration functionalities.
-
Explore Metadata: Gain insights into dataset details, including metadata, versions, contributors, and associated documentation.
-
Manage Datasets: Create, update, and delete datasets, including metadata, versions, contributors, and associated documentation.
-
Search Capabilities: Leverage powerful search capabilities to find datasets based on keywords, tags, contributors, and other criteria.
Client functions
Get resource
.get() example
Get resource by name or UUID.
Arguments
ref
( UUID| str): Resource reference.
Yields
- Resources: Resources matching the provided reference.
Example
from odp.client import OdpClient
client = OdpClient()
resource_manifest = client.catalog.get("catalog.hubocean.io/dataCollection/1e3401d4-9630-40cd-a9cf-d875cb310449-glodap")
print(resource_manifest)
same_resource_manifest = client.catalog.get(resource_manifest.metadata.uuid)
print(same_resource_manifest)
Get list of resources
.list() example
List all resources based on the provided filter.
Arguments
oqs_filter
(Optional[dict]): OQS filter. Read more about OQS here.cursor
(Optional[str]): Optional cursor for pagination.
Yields
- Resources: Resources matching the provided filter.
Example
from odp.client import OdpClient
client = OdpClient()
# Assuming oqs_filter is a valid OQS filter
oqs_filter = {...}
for resource in client.catalog.list(oqs_filter=oqs_filter):
print(resource)
Create a resource
.create() example
Create a resource from a manifest.
Arguments
manifest
(DatasetDto): Resource manifest containing information required for creation. DTO example can be found here.
Returns
The manifest of the created resource, populated with uuid and status.
Raises
OdpValidationError
: Raised when the input manifest is invalid.OdpResourceExistsError
: Raised when the resource already exists.
Example
from odp.client import OdpClient
from odp.dto import Metadata
from odp.dto.catalog import DatasetDto, DatasetSpec
from odp.dto.common.contact_info import ContactInfo
from odp.client.exc import OdpResourceExistsError, OdpValidationError
client = OdpClient()
manifest = DatasetDto(...)
try:
created_resource_manifest = client.catalog.create(manifest)
print("Resource created successfully:", created_resource_manifest)
except OdpValidationError as e:
print("Validation Error:", e)
except OdpResourceExistsError as e:
print("Resource Already Exists Error:", e)
Update a resource
.update() example
Update a resource from a manifest.
Arguments
manifest_update
(DatasetDto or dict): Resource manifest or JSON patch containing the updates.ref
(Optional[str or UUID]): Optional reference to the resource to update.
Returns
The manifest of the updated resource, populated with the updated fields.
Raises
OdpValidationError
: Raised when the input is invalid.OdpResourceNotFoundError
: Raised when the resource is not found.
Example
from odp.client import OdpClient
from odp.dto import Metadata
from odp.dto.catalog import DatasetDto, DatasetSpec
from odp.dto.common.contact_info import ContactInfo
from odp.client.exc import OdpResourceNotFoundError, OdpValidationError
client = OdpClient()
# DatasetDto or JSON patch
manifest_update = client.catalog.get("3d797de8-f4ec-48a5-b211-cae1bcfa432c")
manifest_update.metadata.description = "Updated description"
try:
updated_resource_manifest = client.catalog.update(manifest_update)
print("Resource updated successfully:", updated_resource_manifest)
except OdpValidationError as e:
print("Validation Error:", e)
except OdpResourceNotFoundError as e:
print("Resource Not Found Error:", e)
Delete a resource
.delete() example
Delete a resource by reference.
Arguments
ref
(UUID, str, or DatasetDto): Resource reference. If aDatasetDto
is passed, the reference will be extracted from the metadata.
Raises
OdpResourceNotFoundError
: Raised if the resource does not exist.
Example
import uuid
from odp.client import OdpClient
from odp.client.exc import OdpResourceNotFoundError
client = OdpClient()
# Assuming ref is a valid UUID, string, or DatasetDto
ref = "dataset_name"
try:
client.catalog.delete(ref)
print("Resource deleted successfully.")
except OdpResourceNotFoundError as e:
print("Resource Not Found Error:", e)