Imported from
registry/profiles/resource-definition/storage/object.md
at commit
76a4a0c89924.
IRI Object Storage Resource Definition Profile
Profile URI: https://iri.science/profiles/resource-definition/storage/object
Base Profile: https://iri.science/profiles/status/resource
Resource Type: urn:doe-iri:resource:storage:object
Status: Draft
Version: 1.0.0
Profile Applicability
This profile applies when resource_type is
urn:doe-iri:resource:storage:object and MUST be used together with the
IRI Status Resource Profile. The authoritative
URN record is Resource Type URNs.
This document is for the urn:doe-iri:resource:storage:object resource type hierarchy.
1. Profile Context
The following retained context identifies the type to which this profile applies; registration metadata and lifecycle are authoritative in the URN registry.
| Field | Description |
|---|---|
| URN | urn:doe-iri:resource:storage:object |
| Short name | Object Storage |
| Description | This namespace collects object storage-related type definitions. |
| Parent URN | urn:doe-iri:resource:storage |
| Status | provisional |
| Introduced | IRI v2.0 |
| Change controller | IRI technical subcommittee. |
| Reference | Proposed type extensions for object storage resources. |
| Legacy value | storage enumeration. |
| Examples | urn:doe-iri:resource:storage:object |
| Notes | These attributes are proposed for describing logical object storage resources provided by an IRI facility. |
2. Introduction
The purpose of this document is to define a common, implementation-independent representation of object storage resources within the DOE Integrated Research Infrastructure (IRI). An object storage resource is a logical storage resource that manages data as independently addressable objects, typically consisting of object data, associated metadata, and an object identifier or key.
Unlike filesystem storage, object storage does not inherently expose files and directories through a hierarchical filesystem namespace. Unlike block storage, it does not expose raw addressable blocks or volumes to consumers. Instead, consumers interact with object storage via an object storage API, typically through one or more service endpoints.
The IRI storage model intentionally separates the storage infrastructure from the logical object storage resource that consumers use. A urn:doe-iri:resource:storage:system resource represents the managed storage infrastructure, while a urn:doe-iri:resource:storage:object resource represents an independently consumable logical object-storage service or namespace provided by that infrastructure.
For example:
Storage System
urn:doe-iri:resource:storage:system
│
│ iri:provides-object
▼
Object Storage
urn:doe-iri:resource:storage:object
│
├── object_apis
├── access_endpoints
├── object_technology
├── object_capabilities
└── object_consistency
This separation allows a storage system to provide multiple logical object-storage resources without duplicating infrastructure-level characteristics. Each object resource can independently describe the API through which it is accessed, the endpoint or endpoints available to consumers, the implementation technology, supported capabilities, and other resource-specific characteristics.
Access endpoints are modeled as attributes of the object resource rather than as independent IRI resources. An endpoint describes where and through which API a consumer accesses the object resource, but normally does not require independent resource identity, lifecycle, or relationships.
If a future IRI use case requires an endpoint to have independently discoverable identity, relationships, or configuration, the endpoint MAY be promoted to a separately defined resource type in a future profile version.
This document defines configured characteristics of object storage resources. This version of the profile does not define current utilization, request rate, latency, health, available capacity, or service availability. If represented, the semantics and update behavior of those time-varying values are governed by the applicable IRI API contract and Resource Definition Profile.
3. Taxonomy
The taxonomy defined in this section identifies the DOE-IRI URN namespaces and controlled vocabulary values used by this Resource Definition Profile. It provides a machine-readable classification for the urn:doe-iri:resource:storage:object resource type and for object-storage attributes whose values require consistent semantics across IRI facilities.
The taxonomy distinguishes between the resource being described and the controlled characteristics used to describe that resource. The urn:doe-iri:resource:storage:object namespace identifies the resource type itself, while values beneath the urn:doe-iri:storage namespace identify standardized characteristics such as object-storage APIs, implementation technologies, consistency semantics, capabilities, storage tiers, and physical media.
The taxonomy is not intended to represent the relationship between an object storage resource and the storage system that provides it. That relationship is represented separately using the iri:provides-object IRI link relation.
Only attributes represented using controlled DOE-IRI URNs appear in the taxonomy. Scalar or structured attributes such as access_endpoints do not appear as taxonomy branches.
The following tree shows the resource type and controlled vocabulary namespaces defined by this profile.
urn:doe-iri
│
├── resource
│ └── storage
│ └── object
│
└── storage
│
├── object-api
│ ├── s3
│ └── swift
│
├── object-technology
│ ├── ceph-rgw
│ ├── openstack-swift
│ └── amazon-s3
│
├── object-consistency
│ ├── strong-read-after-write
│ └── eventual
│
├── object-capability
│ ├── multipart-upload
│ ├── versioning
│ └── object-lock
│
├── tier
│ ├── home
│ ├── project
│ ├── scratch
│ ├── campaign
│ └── archive
│
└── media-type
├── magnetic-disk
├── solid-state
├── tape
└── optical
4. Object Storage Attributes
This Resource Definition Profile defines the set of attributes that MAY be used to describe resources of type urn:doe-iri:resource:storage:object. These attributes provide a consistent, implementation-independent representation of logical object-storage characteristics while allowing facilities to expose only those characteristics that are known and relevant to IRI consumers.
The profile separates the identity of the object storage resource from the characteristics of the infrastructure that implements it. Controlled characteristics requiring consistent machine-readable semantics are represented using registered DOE-IRI URNs, while endpoint information is represented using structured JSON values.
Except for schema_version, attributes in this profile are optional. The absence of an optional attribute indicates that the information has not been provided and MUST NOT be interpreted as implying a particular value or capability. Clients SHOULD rely only on characteristics explicitly advertised by the resource.
The attributes defined by this profile describe configured characteristics of the object resource. The semantics of any time-varying values are governed by the applicable IRI API contract and Resource Definition Profile.
The following table defines version 1.0.0 of the object-storage attribute contract.
| Attribute | Version | Type | Description | Mandatory |
|---|---|---|---|---|
schema_version |
1.0.0 | string | Version of the profile definition (e.g. "1.0.0"). |
yes |
object_apis |
1.0.0 | Array IRI URN string | Identifies object-storage APIs through which the resource may be accessed. | no |
access_endpoints |
1.0.0 | Array ObjectEndpoint | Identifies service endpoints through which consumers may access the object resource. | no |
object_technology |
1.0.0 | IRI URN string | Identifies the technology, implementation, or platform providing the object storage resource. | no |
object_consistency |
1.0.0 | IRI URN string | Identifies the consistency model advertised by the object storage resource when it can be meaningfully represented by the defined vocabulary. | no |
object_capabilities |
1.0.0 | Array IRI URN string | Identifies capabilities exposed by the object storage resource. | no |
tier |
1.0.0 | IRI URN string | Identifies the intended storage lifecycle or usage tier associated with the object resource. | no |
media_types |
1.0.0 | Array IRI URN string | Identifies physical storage media known to back the object storage resource. | no |
4.1. Object Storage APIs
The object_apis attribute identifies the object-storage APIs or API families through which consumers may access a urn:doe-iri:resource:storage:object resource.
An object resource may expose more than one API. The object_apis attribute is therefore represented as an array of registered DOE-IRI URNs. Values are drawn from the urn:doe-iri:storage:object-api namespace.
| URN | Short name | Description | Status |
|---|---|---|---|
urn:doe-iri:storage:object-api:s3 |
S3 | An object-storage API model in which objects are addressed by keys within buckets and manipulated using S3-compatible operations. | provisional |
urn:doe-iri:storage:object-api:swift |
Swift | An object-storage API model in which objects are organized within containers and accessed using the OpenStack Swift API. | provisional |
For example:
{
"object_apis": [
"urn:doe-iri:storage:object-api:s3"
]
}
The API identifies the logical interface through which consumers interact with the object resource and is independent of the technology or product implementing that interface.
For example:
Object Storage
object_technology = ceph-rgw
object_apis:
s3
swift
A single implementation may therefore expose multiple object-storage APIs.
Clients SHOULD NOT infer the object-storage API solely from object_technology. Facilities SHOULD explicitly advertise the APIs available to consumers.
API versions, extensions, authentication mechanisms, or provider-specific functionality SHOULD be represented independently if future interoperability requirements require them.
4.2. Object Storage Access Endpoints
The access_endpoints attribute identifies the service endpoints through which consumers may access a urn:doe-iri:resource:storage:object resource.
An object resource may expose multiple endpoints, including endpoints corresponding to different APIs or different access environments. The attribute is therefore represented as an array of structured endpoint descriptions.
Each endpoint contains:
| Property | Type | Description | Mandatory |
|---|---|---|---|
url |
string URI | Network location at which the object-storage API is exposed. | yes |
api |
IRI URN string | Identifies the object-storage API available through the endpoint. | yes |
For example:
{
"access_endpoints": [
{
"url": "https://objects.example.gov",
"api": "urn:doe-iri:storage:object-api:s3"
}
]
}
A resource exposing multiple APIs MAY advertise separate endpoints:
{
"access_endpoints": [
{
"url": "https://s3.example.gov",
"api": "urn:doe-iri:storage:object-api:s3"
},
{
"url": "https://swift.example.gov",
"api": "urn:doe-iri:storage:object-api:swift"
}
]
}
The endpoint identifies where requests are directed, while the api property identifies how consumers interact with that endpoint.
The presence of an endpoint does not imply that an unauthenticated consumer is authorized to access it. Authentication and authorization requirements are outside the scope of the endpoint description and SHOULD be represented through the applicable IRI security and access-control mechanisms.
Endpoint URLs SHOULD identify the service endpoint rather than an individual object URL.
Current endpoint availability is a time-varying observation and SHOULD NOT be inferred solely from the presence of an endpoint in this Resource Definition Profile.
4.3. Object Storage Technology
The object_technology attribute identifies the technology, implementation, or platform used to provide a urn:doe-iri:resource:storage:object resource.
The value of object_technology MUST be a registered DOE-IRI URN from the urn:doe-iri:storage:object-technology namespace.
| URN | Short name | Description | Status |
|---|---|---|---|
urn:doe-iri:storage:object-technology:ceph-rgw |
Ceph Object Gateway | An object-storage implementation provided by the Ceph Object Gateway (RGW), capable of exposing object data through supported object-storage APIs. | provisional |
urn:doe-iri:storage:object-technology:openstack-swift |
OpenStack Swift | A distributed object-storage implementation provided by the OpenStack Swift platform. | provisional |
urn:doe-iri:storage:object-technology:amazon-s3 |
Amazon S3 | The Amazon S3 managed object-storage platform. | provisional |
For example:
{
"object_technology":
"urn:doe-iri:storage:object-technology:ceph-rgw"
}
The object_technology attribute identifies the implementation providing the logical object resource and is distinct from storage_technology, which identifies the technology implementing the underlying storage system.
It is also distinct from object_apis, which identify the interfaces exposed to consumers.
For example:
Ceph Storage System
storage_technology = ceph
│
│ iri:provides-object
▼
Object Storage
object_technology = ceph-rgw
object_apis:
s3
swift
Clients SHOULD NOT infer APIs, capabilities, consistency semantics, storage media, or operational state solely from the value of object_technology.
4.4. Object Storage Consistency
The object_consistency attribute identifies the consistency semantics advertised by a urn:doe-iri:resource:storage:object resource when those semantics can be accurately represented using the defined DOE-IRI vocabulary.
The value of object_consistency MUST be a registered DOE-IRI URN from the urn:doe-iri:storage:object-consistency namespace.
| URN | Short name | Description | Status |
|---|---|---|---|
urn:doe-iri:storage:object-consistency:strong-read-after-write |
Strong read-after-write | Successful writes are reflected by subsequent reads according to the consistency guarantees applicable to the object-storage resource. | provisional |
urn:doe-iri:storage:object-consistency:eventual |
Eventual consistency | Updates may not be immediately visible to all subsequent operations, but replicas or service views are expected to converge over time in the absence of additional updates. | provisional |
For example:
{
"object_consistency":
"urn:doe-iri:storage:object-consistency:strong-read-after-write"
}
Consistency semantics can vary by implementation, operation type, configuration, replication mode, or API behavior. The values defined by this profile intentionally represent broad consistency characteristics rather than a complete formal consistency model.
A facility SHOULD advertise object_consistency only when the selected value accurately characterizes the guarantees relevant to IRI consumers.
If the consistency behavior cannot be accurately represented using a single value, the attribute SHOULD be omitted rather than approximated.
Clients SHOULD NOT infer consistency semantics solely from the object-storage API or implementation technology.
4.5. Object Storage Capabilities
The object_capabilities attribute identifies capabilities exposed by a urn:doe-iri:resource:storage:object resource.
An object resource may expose multiple capabilities. The object_capabilities attribute is therefore represented as an array of registered DOE-IRI URNs. Values are drawn from the urn:doe-iri:storage:object-capability namespace.
| URN | Short name | Description | Status |
|---|---|---|---|
urn:doe-iri:storage:object-capability:multipart-upload |
Multipart upload | The object resource supports creation of an object by uploading its data as multiple independently transferred parts that are subsequently assembled into the completed object. | provisional |
urn:doe-iri:storage:object-capability:versioning |
Object versioning | The object resource supports retaining and distinguishing multiple versions of an object associated with the same object key or identifier. | provisional |
urn:doe-iri:storage:object-capability:object-lock |
Object lock | The object resource supports controls that prevent an object or object version from being modified or deleted for a defined period or under an applicable retention policy. | provisional |
For example:
{
"object_capabilities": [
"urn:doe-iri:storage:object-capability:multipart-upload",
"urn:doe-iri:storage:object-capability:versioning",
"urn:doe-iri:storage:object-capability:object-lock"
]
}
The object_capabilities attribute SHOULD describe capabilities actually exposed by the logical object resource.
Clients SHOULD NOT infer capabilities solely from the object technology or API. A technology may support a capability while that capability is disabled, restricted, or unavailable for a particular logical object resource.
Capabilities describe functionality and SHOULD NOT be interpreted as current operational condition.
The capability vocabulary is intended to be extensible. Additional capability URNs SHOULD be registered when they identify meaningful, implementation-independent functionality that an IRI consumer may need to discover or reason about.
4.6. Storage Tier
The tier attribute identifies the intended storage lifecycle, usage pattern, or purpose associated with a urn:doe-iri:resource:storage:object resource.
The value of tier MUST be a registered DOE-IRI URN from the urn:doe-iri:storage:tier namespace.
| URN | Short name | Description | Status |
|---|---|---|---|
urn:doe-iri:storage:tier:home |
Home | Persistent user-oriented storage intended for user-specific data and ongoing individual use. | provisional |
urn:doe-iri:storage:tier:project |
Project | Shared persistent storage allocated to a project, collaboration, or team for ongoing project data and collaborative use. | provisional |
urn:doe-iri:storage:tier:scratch |
Scratch | Temporary storage intended for active workloads, intermediate data, or transient working data and typically subject to limited retention. | provisional |
urn:doe-iri:storage:tier:campaign |
Campaign | Intermediate-term storage intended to retain data associated with a scientific campaign, experiment, project, or allocation for the duration of that activity. | provisional |
urn:doe-iri:storage:tier:archive |
Archive | Storage intended for durable, long-term retention of data that is accessed less frequently and is not expected to provide active-tier performance characteristics. | provisional |
For example:
{
"tier":
"urn:doe-iri:storage:tier:project"
}
Storage tier describes the intended role or lifecycle of the object resource and is independent of the API, object technology, physical media, and consistency semantics.
For example:
Object Storage
tier = archive
object_api = s3
media_types:
magnetic-disk
tape
A client SHOULD NOT infer performance, retention policy, durability, retrieval latency, or media type solely from the tier value.
4.7. Storage Media Types
The media_types attribute identifies physical storage media known to retain data associated with a urn:doe-iri:resource:storage:object resource.
An object resource may be backed by more than one type of physical storage media. The media_types attribute is therefore represented as an array of registered DOE-IRI URNs. Values are drawn from the urn:doe-iri:storage:media-type namespace.
| URN | Short name | Description | Status |
|---|---|---|---|
urn:doe-iri:storage:media-type:magnetic-disk |
Magnetic disk | Storage media that retains data magnetically on rotating disks, such as hard disk drives (HDDs). | provisional |
urn:doe-iri:storage:media-type:solid-state |
Solid-state | Nonvolatile electronic storage media with no moving mechanical components, such as flash-based solid-state drives (SSDs). | provisional |
urn:doe-iri:storage:media-type:tape |
Tape | Storage media that retains data magnetically on tape and is generally optimized for high-capacity, sequential access and long-term data retention. | provisional |
urn:doe-iri:storage:media-type:optical |
Optical | Storage media that retains data using optically readable media, such as CD, DVD, Blu-ray, or other optical storage technologies. | provisional |
For example:
{
"media_types": [
"urn:doe-iri:storage:media-type:magnetic-disk",
"urn:doe-iri:storage:media-type:tape"
]
}
The presence of multiple media types indicates that object data associated with the resource may be retained using more than one physical medium. It does not indicate how individual objects are distributed or moved between those media.
For example, a system may automatically move object data from disk to tape according to lifecycle or tiering policy. The media_types attribute communicates only that those physical media are associated with the object resource; it does not describe the placement policy.
Media types SHOULD be advertised at the object-resource level only when the backing media are known and meaningful to consumers. Where physical media information is available only for the underlying storage infrastructure, the information SHOULD instead be advertised on the corresponding storage-system resource.
Clients SHOULD NOT infer performance, latency, durability, accessibility, or storage tier solely from media type.
The attribute SHOULD be omitted when the underlying media cannot be meaningfully determined for the logical object resource or when the facility does not intend to expose that implementation detail.
5. Object Storage JSON Schema
components:
schemas:
IriUrn:
type: string
description: >
A DOE-IRI Uniform Resource Name (URN) identifying a registered
IRI resource type, attribute value, capability, or other
controlled vocabulary value.
pattern: '^urn:doe-iri:[A-Za-z0-9][A-Za-z0-9:._~-]*$'
example: urn:doe-iri:storage:object-api:s3
ObjectEndpoint:
type: object
description: >
An access endpoint through which consumers may access an
object storage resource.
required:
- url
- api
properties:
url:
type: string
format: uri
description: >
Network service endpoint through which the object storage
resource may be accessed.
example: https://objects.example.gov
api:
$ref: '#/components/schemas/IriUrn'
description: >
Identifies the object-storage API exposed by this endpoint.
example: urn:doe-iri:storage:object-api:s3
ObjectStorageAttributes:
type: object
description: >
Attributes describing an object storage resource with resource type
urn:doe-iri:resource:storage:object.
required:
- schema_version
properties:
schema_version:
type: string
description: >
Version of the object-storage attribute contract.
enum:
- "1.0.0"
example: "1.0.0"
object_apis:
type: array
description: >
Identifies object-storage APIs through which the resource
may be accessed.
uniqueItems: true
items:
$ref: '#/components/schemas/IriUrn'
example:
- urn:doe-iri:storage:object-api:s3
access_endpoints:
type: array
description: >
Identifies service endpoints through which consumers may
access the object resource.
items:
$ref: '#/components/schemas/ObjectEndpoint'
object_technology:
$ref: '#/components/schemas/IriUrn'
description: >
Identifies the technology, implementation, or platform
providing the object storage resource.
example: urn:doe-iri:storage:object-technology:ceph-rgw
object_consistency:
$ref: '#/components/schemas/IriUrn'
description: >
Identifies the consistency model advertised by the
object storage resource.
example: urn:doe-iri:storage:object-consistency:strong-read-after-write
object_capabilities:
type: array
description: >
Identifies capabilities exposed by the object storage resource.
uniqueItems: true
items:
$ref: '#/components/schemas/IriUrn'
example:
- urn:doe-iri:storage:object-capability:multipart-upload
- urn:doe-iri:storage:object-capability:versioning
tier:
$ref: '#/components/schemas/IriUrn'
description: >
Identifies the intended storage lifecycle or usage tier
associated with the object resource.
example: urn:doe-iri:storage:tier:project
media_types:
type: array
description: >
Identifies physical storage media known to back the
object storage resource.
uniqueItems: true
items:
$ref: '#/components/schemas/IriUrn'
example:
- urn:doe-iri:storage:media-type:magnetic-disk
6. Example Object Storage JSON Instance
{
"schema_version": "1.0.0",
"object_apis": [
"urn:doe-iri:storage:object-api:s3"
],
"access_endpoints": [
{
"url": "https://objects.example.gov",
"api": "urn:doe-iri:storage:object-api:s3"
}
],
"object_technology": "urn:doe-iri:storage:object-technology:ceph-rgw",
"object_consistency": "urn:doe-iri:storage:object-consistency:strong-read-after-write",
"object_capabilities": [
"urn:doe-iri:storage:object-capability:multipart-upload",
"urn:doe-iri:storage:object-capability:versioning"
],
"tier": "urn:doe-iri:storage:tier:project",
"media_types": [
"urn:doe-iri:storage:media-type:magnetic-disk"
]
}
The complete resource model associates the object resource with the storage system that provides it while keeping consumer access information within the object resource’s profile:
Storage System
urn:doe-iri:resource:storage:system
│
│ iri:provides-object
▼
Object Storage
urn:doe-iri:resource:storage:object
attributes:
object_apis = [s3]
access_endpoints:
https://objects.example.gov
object_technology = ceph-rgw
object_consistency = strong-read-after-write
object_capabilities:
multipart-upload
versioning
tier = project
The endpoint identifies where and how the logical object resource is accessed. It does not represent a separate storage resource unless an IRI use case requires independent endpoint identity, configuration, relationships, or lifecycle.
7. Applicable Storage-Discovery Affordances
This profile supplements the common Resource profile. The registered relation definitions remain authoritative for operation semantics, and the applicable deployed OpenAPI description remains authoritative for the invocation contract.
An object-storage Resource MAY advertise
iri:get-storage-access-endpoints
when its adapter implements access-endpoint discovery for this exact Resource.
It MAY advertise
iri:resolve-storage-locations
only when the existing location-response semantics apply to this Resource.
Both affordances require an explicit adapter context for the source object
storage identifier.
Object-storage classification, APIs, endpoint attributes, technology,
consistency, and capabilities do not imply filesystem operations, object CRUD,
block provisioning, or transfer execution. Location resolution does not
describe configured topology. The access_endpoints attribute and
AccessEndpoint.capabilities remain distinct from operation links; discovery
does not execute an S3 or other object operation and does not guarantee
protocol success.
When either operation relation is advertised, the representation MUST also
advertise at least one applicable service-desc whose deployed OpenAPI
contains the matching canonical x-iri-relation binding. An operation link
targets an operation entry point and MUST NOT carry an IRI representation
profile. Clients MUST NOT infer an operation path from the Resource Type,
profile URI, Resource identifier, topology, attributes, or discovered endpoint
descriptions.
A provider MAY omit either operation link because it is not implemented, applicable, or visible to the requester. Absence means only that the operation is not advertised in the current representation. Presence grants no permission and guarantees no successful invocation.
DOE Integrated Research Infrastructure — URN Registry: Object Storage