NAV
yaml

OPEN DATA PRODUCT RECIPE SPECIFICATION - The Linux Foundation

Version DRAFT

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 (RFC 2119 and RFC 8174) when, and only when, they appear in all capitals, as shown here.

The specification is shared under Apache 2.0 license. Development of the specification is under the umbrella of the Linux Foundation.

Topic Link Description
Version source Data Product Recipe Specification on GitHub Official source repository for the ODPR specification
Knowledge Base Open Data Product Spec Family Knowledge Base Practical examples, FAQs, and implementation guidance
Contribute Raise an issue in GitHub Submit issues or suggestions to the specification maintainers

Introduction

The Data Product Recipe Specification, ODPR, is a lightweight, vendor-neutral, machine-readable recipe model for repeatable data product delivery workflows.

ODPR is part of the OpenDataProducts.org standards family. It complements the Open Data Product Specification, ODPS, Open Data Product Catalogs, ODPC, Open Data Product Graphs, ODPG, and Open Data Product Vocabulary, ODPV, by defining how workflows around those artifacts can be declared and automated.

ODPR standardizes how data product work gets done, not only what the final artifact looks like.

Why ODPR is needed

Data product work often depends on manual command sequences, scripts, notebooks, prompts, and local habits. That creates delivery variation, makes validation and review steps easy to skip, hides model-provider choices, and forces CI/CD automation and AI agents to guess the intended workflow.

ODPR solves this by turning repeatable data product work into declared recipes. A recipe describes:

Core design principle

A recipe is not a script.

A recipe is a portable, declarative workflow contract. Scripts tell one tool what to do. Recipes tell teams, tools, agents, and automation systems how a data product workflow should run.

Recipe and provider configuration

ODPR standardizes two clear root objects: Recipe and Provider.

A Recipe declares workflow intent: which steps run, which inputs and outputs matter, which gates apply, and which provider profile should be used.

A Provider declares a named runtime profile: provider family, model, provider class, endpoint reference, credentials reference, and safe default settings such as temperature. This prevents each SDK, CI system, MCP server, or agent runtime from inventing a different provider shape.

In an ODPR recipe, a provider is referenced by name:

execution:
  mode: hosted
  providerRef: production-quality

The provider profile itself is configured outside the recipe, as a separate ODPR Provider object:

Provider configuration resolves ODPR provider references outside the recipe.

schema: https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml
version: "1.0"
kind: Provider
provider:
  id: production-quality
  provider: openai
  model: gpt-4.1
  providerClass: hosted
  temperature: 0.2

This two-part model keeps recipes portable and safe to share. The same recipe can use providerRef: production-quality in development, CI, staging, or production while each environment resolves that reference to the right local model, hosted model, internal gateway, credentials, and operational settings. ODPR standardizes both the workflow contract and the provider profile shape; the executing implementation owns runtime resolution, credentials, and provider connectivity.

Relationship to the standards family

The OpenDataProducts.org standards family follows a separation of concerns:

ODPR does not define the product, catalog, graph, or vocabulary model. It defines the workflow contract around those artifacts.

Example recipe

schema: https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml
version: "1.0"
kind: Recipe
recipe:
  metadata:
    id: RCP-CI-001
    name:
      en: CI Validate Generated Fragments
    description:
      en: Generate and validate draft fragments during CI.
  version: "1.0.0"
  type: ci
  environment: ci
  execution:
    mode: local
    providerRef: local-fast
  context:
    format: gcf
    fallback:
      - toon
      - yaml
  steps:
    - id: generate-signals
      command: generate
      with:
        kind: signal
        input: source_docs/signals/
        output: generated/fragments/
    - id: validate-fragments
      command: validate
      with:
        input: generated/fragments/
  outputs:
    - id: generated-fragments
      path: generated/fragments/
  gates:
    - id: fragments-valid
      type: validation
      required: true
  review:
    required: false

This recipe declares what a CI runner or SDK executor should do when source documents for signals change. The expected run is:

  1. The executor loads the recipe and validates it against https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml.
  2. It reads recipe.version: "1.0.0" as the version of this workflow contract.
  3. It sees type: ci and treats the recipe as an automated CI workflow, not as an interactive authoring or release-review workflow.
  4. It reads environment: ci and labels the run as a CI workflow context.
  5. It prepares a local execution run using the configured provider named local-fast. ODPR only stores the providerRef; credentials, model settings, command bindings, and runtime configuration stay in the executing SDK, CI system, MCP server, or platform.
  6. It prepares recipe context in GCF format. If GCF is not available, the executor can fall back first to TOON and then to YAML.
  7. It runs the generate-signals step by invoking the executor's generate operation with kind: signal, reading inputs from source_docs/signals/, and writing generated fragments to generated/fragments/.
  8. It runs the validate-fragments step by invoking the executor's validate operation against generated/fragments/.
  9. It exposes generated-fragments as the durable output path that CI jobs or agents can inspect after the run.
  10. It evaluates the fragments-valid validation gate. Because the gate is required, failed validation means the CI workflow fails.
  11. It does not pause for manual review after the gate passes, because review.required is false.

Specification aims

ODPR aims to:

Note! In "Open Data Product" the focus is on the latter words and the prefix "open" refers to the openness of the standard. Any connotations to open data are not intentional, intended, or desirable.

Recipe Toolkit

Snippet of YAML version:

schema: https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml
version: "1.0"
kind: Recipe
recipe:
  metadata:
    id: RCP-DEV-001
    name:
      en: Local Fragment Draft
    description:
      en: Generate draft ODPC fragments locally for fast iteration.
  type: dev
  execution:
    mode: local
    providerRef: local-fast
  steps:
    - id: generate-signals
      command: generate
      with:
        kind: signal
        input: source_docs/signals/
        output: generated/fragments/

ODPR is published in several forms for different users and tools. This specification provides the human-readable documentation, while the schema, recipe records, provider records, and example files provide machine-readable resources for validation, workflow automation, AI retrieval, and agent use.

Use odpr.yaml or odpr.json to validate Recipe and Provider files, recipes.jsonl for lightweight object selection and retrieval, and the examples when generating or repairing ODPR YAML.

The ODP Agent SDK supports ODPR and is the first reference implementation for validating and executing ODPR recipes. Use it when building agents or automation across ODPS, ODPC, ODPG, and ODPV workflows. ODPR recipes remain portable workflow contracts and can also be used with other conforming SDKs, CI/CD systems, MCP servers, or platform implementations.

Resource Format Purpose
ODP Agent SDK SDK First reference implementation for validating and executing ODPR recipes; ODPR can also be used with other conforming implementations
llms.txt Text AI agent guidance for discovering and using ODPR resources
odpr.yaml YAML Schema YAML representation of the ODPR validation schema
odpr.json JSON Schema JSON representation of the ODPR validation schema
recipes.jsonl JSONL Agent-friendly one-recipe-per-line file for retrieval and lightweight tools
minimal.yaml YAML Minimal valid ODPR recipe example
ci-validate-generated-fragments.yaml YAML CI recipe that generates and validates fragments
release-portfolio-review.yaml YAML Release recipe for portfolio refresh, localization, and explanation
hybrid-graph-review.yaml YAML Hybrid recipe that mixes local and hosted execution
production-quality.yaml YAML Hosted Provider profile for production-quality generation
local-fast.yaml YAML Local Provider profile for fast development runs
local-graph.yaml YAML Local Provider profile for graph-building workflows
internal-secure.yaml YAML Internal gateway Provider profile for controlled production use

Agent-oriented helper scripts are available in the source repository for maintaining and using recipe artifacts.

Script Purpose
check_agent_artifacts.py Checks schema alignment, example files, recipe JSONL records, and llms.txt references
generate_recipe_artifacts.py Regenerates derived recipe artifacts such as source/schema/odpr.json from canonical source files; use --check to detect drift
search_recipes.py Searches ODPR recipe records by keyword or exact recipe id; use --json for machine-readable results
validate_recipe.py Validates ODPR YAML or JSON Recipe or Provider files against the ODPR schema and rejects embedded secrets or API keys

The Markdown tables in this specification are intended for human readers. The schema, JSONL, and YAML example files are intended for programmable use, automation, validation, AI retrieval, and recipe tooling.

Recipe Library

ODPR publishes a small library of canonical recipes under /recipes/examples/. These examples are not decorative snippets. They are complete recipe files that can be copied, validated, adapted, and used by SDKs, CI/CD systems, MCP servers, or other ODPR-aware platforms.

Agents and tools can also use /recipes/recipes.jsonl as a lightweight lookup file for selecting the right recipe pattern before loading the full YAML example.

Recipe Use when What happens
minimal.yaml A developer wants the smallest valid local recipe for fast iteration. The executor labels the run as development, prepares the local provider local-fast, runs one generate step for signal fragments, reads source_docs/signals/, writes draft fragments to generated/fragments/, and exposes that folder as draft-fragments.
ci-validate-generated-fragments.yaml CI must generate draft fragments and fail if the generated output is invalid. The executor labels the run as ci, generates signal fragments, exposes generated/fragments/ as generated-fragments, validates those files, and enforces the required fragments-valid validation gate before the CI job can pass.
release-portfolio-review.yaml A release process must refresh, localize, explain, and review a portfolio before publication. The executor labels the run as production, uses a hosted production-quality provider, refreshes portfolio/, localizes it to Finnish and Swedish, generates an explanation, exposes localized pages and explanation output paths, applies a release timeout, and requires human review before publishing.
hybrid-graph-review.yaml A workflow should combine local graph work with hosted review or explanation. The executor labels the run as staging, builds graph context locally from generated/fragments/, exposes generated/graph.yaml as graph-context, then uses a hosted production-quality provider to explain the portfolio, with both automated and human review expected.

The library is intentionally small. Each example should demonstrate a distinct workflow pattern rather than every possible command option. Local organizations can extend these recipes with x- fields or implementation-specific command bindings without changing ODPR semantics.

ODPR also publishes Provider examples under /providers/examples/. Use these when a recipe references a provider profile such as local-fast, local-graph, production-quality, or internal-secure.

Provider Use when What it standardizes
local-fast.yaml Local development should use a fast local model profile. providerRef: local-fast resolves to an Ollama-backed local provider profile with a development environment label and low temperature.
local-graph.yaml Graph-building steps should run locally without hosted model routing. providerRef: local-graph resolves to a local graph-building provider profile with a deterministic temperature.
production-quality.yaml Release, CI, or agent workflows need a hosted production-grade model profile. providerRef: production-quality resolves to an OpenAI hosted provider profile with gpt-4.1, hosted provider class, production label, credentials reference, and temperature: 0.2.
internal-secure.yaml Enterprise workflows must route model calls through an approved internal gateway. providerRef: internal-secure resolves to a gateway provider profile with endpoint and credentials references instead of raw secrets.

AI Agent Usage Patterns

ODPR is designed to be usable by AI agents, SDKs, CI/CD systems, and automation tools. From an agent perspective, ODPR provides an inspectable workflow contract before an action is run: it names the workflow, lists the steps, declares the execution mode, points to context policy, and describes gates or review expectations.

ODPS defines one data product. ODPC defines catalogs and reusable portfolio objects. ODPG defines relationships between data product artifacts. ODPV provides shared vocabulary terms. ODPR defines repeatable workflows around those artifacts.

Agent capabilities enabled by ODPR

Agents can use ODPR to:

Common agent workflows

Workflow Agent behavior
Recipe validation Validate ODPR recipe files and report schema-compliant repairs.
Recipe selection Choose a recipe based on task type, execution mode, context format, or required review.
CI/CD preparation Convert a repeatable SDK command sequence into a declared recipe.
Local development Run draft recipes that use local providers for fast iteration.
Production review Run release recipes that use hosted providers, validation gates, and review expectations.
Hybrid execution Combine local generation or graph inference with hosted review or localization.
Agent handoff Inspect recipe steps and gates before invoking SDK tools.

Agent behavior constraints

Agents using ODPR should keep boundaries clear:

Example prompts ODPR enables

ODPR Recipe

The Recipe object is the root ODPR object. It declares one repeatable workflow for data product delivery, validation, review, localization, publishing, or automation.

Recipes are intended to be readable by humans and executable by tools. A recipe should be specific enough for an SDK, CI/CD system, MCP server, or agent to understand the workflow before it runs, while staying portable enough to avoid binding the standard to one implementation.

Root structure

schema: https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml
version: "1.0"
kind: Recipe
recipe:
  metadata:
    id: RCP-DEV-001
    name:
      en: Local Fragment Draft
    description:
      en: Generate draft fragments locally.
  version: "1.0.0"
  type: dev
  steps: []
Element Type Required Description
schema string required URI of the ODPR schema used to validate the recipe file.
version string required Version of the ODPR specification used by the recipe file.
kind string required ODPR root object type. Recipe files MUST use Recipe.
recipe object required Top-level object that defines the workflow recipe.

Recipe fields

recipe:
  metadata:
    id: RCP-CI-001
    name:
      en: CI Validate Generated Fragments
    description:
      en: Generate and validate fragments.
  version: "1.0.0"
  type: ci
  environment: ci
  execution:
    mode: local
    providerRef: local-fast
  context:
    format: gcf
    fallback:
      - toon
      - yaml
  steps:
    - id: validate-fragments
      command: validate
      with:
        input: generated/fragments/
  outputs:
    - id: generated-fragments
      path: generated/fragments/
  gates:
    - id: fragments-valid
      type: validation
      required: true
  review:
    required: false
  runPolicy:
    timeoutSeconds: 300
Element Type Required Description
metadata object required Stable recipe identity, name, description, owner, and tags.
version string required Version of this recipe workflow. This is separate from the top-level ODPR specification version.
type string required Recipe type such as dev, ci, release, localization, hybrid, or agent.
steps array required Ordered workflow operations.
inputs array optional Named workflow inputs.
outputs array optional Named workflow outputs.
context object optional Context format policy such as YAML, TOON, GCF, or automatic fallback.
execution object optional Execution policy such as local, hosted, hybrid, or model-free.
gates array optional Validation, quality, or review gates.
review object optional Human or agent review expectations.
environment string optional Environment label such as development, CI, staging, or production.
runPolicy object optional Runtime limits such as timeout or retry guidance.

Recipe types

Type Purpose
dev Local development, drafting, and fast iteration.
ci Automated validation and build checks.
release Production-grade review, refresh, localization, rendering, and publishing.
localization Translation and multilingual portfolio or product work.
hybrid Workflows that mix local and hosted execution.
agent Agent-safe workflows that AI agents can inspect and run.

Execution modes

Mode Meaning
local Runs with local model or local tooling.
hosted Runs with hosted model or hosted service.
hybrid Uses local and hosted execution in the same recipe.
none Does not require model execution.

Context formats

Format Meaning
yaml Use canonical YAML context.
toon Use TOON compact context when available.
gcf Use GCF compact graph/catalog context when available.
auto Let the executing tool choose the preferred available context.

Provider references

providerRef identifies a standardized ODPR Provider profile by provider.id. The recipe does not embed provider internals; it only names the profile that should be used.

A recipe can declare a default provider in execution.providerRef. Individual steps can override it with step.providerRef when one workflow mixes local and hosted execution.

The referenced Provider object defines the provider family, model, provider class, endpoint reference, credentials reference, and safe runtime defaults. Raw secrets MUST NOT be stored in recipes or provider documents.

ODPR validation tools SHOULD reject embedded secrets or API keys in recipes. Use providerRef in recipes and credentialsRef in Provider documents instead of fields such as apiKey, token, password, or inline secret values.

ODPR keeps commands lightweight so recipes stay portable across implementations. Implementations SHOULD support the recommended command names where the underlying capability exists. Implementations MAY support additional commands.

Command Typical use
generate Generate draft data product, catalog, graph, or vocabulary fragments.
validate Validate generated or source artifacts against a schema or rule set.
odpc.build Build catalog or portfolio objects.
odpg.build Build graph context or graph artifacts.
portfolio.build Build a portfolio package or site.
portfolio.refresh Refresh portfolio source material or generated fragments.
portfolio.render Render portfolio output.
portfolio.localize Localize portfolio content into target languages.
portfolio.explain Generate explanation or review material for a portfolio.

with is the argument object for the selected command. ODPR standardizes where command arguments live, but v1.0 does not define the complete argument schema for every command.

Outputs

Use outputs when a workflow creates durable artifacts that later steps, CI jobs, reviewers, or agents should inspect. Outputs are named paths. They do not replace the command-specific with.output argument; they make expected durable results visible at the recipe level.

Gates, review, and runtime policy

Required gates SHOULD be evaluated or reported by the executing tool. Tools SHOULD NOT silently skip required gates.

review.required declares whether a recipe expects review after automated steps complete. review.mode can be human, agent, both, or none.

runPolicy gives lightweight runtime guidance such as timeout and retry expectations. It is useful for CI jobs, local model calls, portfolio localization, and hosted provider calls.

Environment labels

Use environment to label the intended operating context, such as development, ci, staging, or production. The value is a string so teams can use local naming conventions while keeping common labels readable.

Example

schema: https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml
version: "1.0"
kind: Recipe
recipe:
  metadata:
    id: RCP-RELEASE-001
    name:
      en: Release Portfolio Review
    description:
      en: Refresh, localize, and explain a portfolio for release review.
  version: "1.0.0"
  type: release
  execution:
    mode: hosted
    providerRef: production-quality
  environment: production
  context:
    format: gcf
    fallback:
      - toon
      - yaml
  runPolicy:
    timeoutSeconds: 900
  steps:
    - id: refresh-portfolio
      command: portfolio.refresh
      with:
        workspace: portfolio/
    - id: localize-portfolio
      command: portfolio.localize
      with:
        workspace: portfolio/
        languages:
          - fi
          - sv
    - id: explain-portfolio
      command: portfolio.explain
      with:
        workspace: portfolio/
  outputs:
    - id: localized-portfolio-fi
      path: portfolio/index.fi.html
    - id: localized-portfolio-sv
      path: portfolio/index.sv.html
    - id: release-explanation
      path: portfolio/explanation.md
  gates:
    - id: human-review
      type: review
      required: true
  review:
    required: true
    mode: human
    instructions: Review localized pages and generated reports before publishing.

This release recipe describes a portfolio review workflow. When an executor runs it, the expected flow is:

  1. Validate the recipe against the ODPR schema and confirm it is a Recipe.
  2. Treat the workflow as a release recipe, which means it is intended for a publication or release-review process rather than local drafting.
  3. Use hosted execution through the configured provider reference production-quality. The matching ODPR Provider object describes the runtime profile, while raw credentials and live endpoint resolution stay in the executing SDK or platform.
  4. Prepare compact context in GCF format, with TOON and YAML as fallback formats.
  5. Run portfolio.refresh for the portfolio/ workspace.
  6. Run portfolio.localize for the same workspace and produce Finnish and Swedish localized outputs.
  7. Run portfolio.explain so reviewers get generated explanation material for the refreshed portfolio.
  8. Require human review before the release workflow is considered complete.

ODPR Provider

The Provider object is the second ODPR root object. It defines a named runtime provider profile that recipes can reference with providerRef.

Providers standardize the shape of LLM and execution-provider configuration without putting provider details inside workflow recipes. A recipe stays focused on what should happen. A provider profile declares how a named runtime profile resolves to a provider family, model, endpoint reference, credentials reference, and model settings.

Provider profiles MUST NOT contain raw secrets. Use credentialsRef or implementation-specific secret references instead. ODPR validation tools SHOULD reject embedded secrets or API keys, including fields such as apiKey, token, password, or raw secret-looking values.

Root structure

schema: https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml
version: "1.0"
kind: Provider
provider:
  id: production-quality
  provider: openai
  model: gpt-4.1
  providerClass: hosted
  temperature: 0.2
Element Type Required Description
schema string required URI of the ODPR schema used to validate the provider file.
version string required Version of the ODPR specification used by the provider file.
kind string required ODPR root object type. Provider files MUST use Provider.
provider object required Top-level object that defines one named provider profile.

Provider fields

provider:
  id: production-quality
  provider: openai
  model: gpt-4.1
  providerClass: hosted
  endpointRef: platform:openai
  credentialsRef: env:OPENAI_API_KEY
  temperature: 0.2
  settings:
    maxOutputTokens: 4000
Element Type Required Description
id string required Stable profile name referenced by execution.providerRef or step.providerRef.
provider string required Provider family or runtime adapter, such as openai, ollama, lmstudio, openrouter, or gateway.
model string optional Model name or runtime model identifier.
providerClass string optional Provider class such as local, hosted, hybrid, or none.
endpointRef string optional Reference to a platform, gateway, or runtime endpoint.
credentialsRef string optional Reference to credentials managed outside the provider document.
temperature number optional Default generation temperature for this provider profile.
settings object optional Additional provider settings that are safe to share and do not contain secrets.
description string optional Human-readable purpose of the provider profile.
environment string optional Environment label such as development, CI, staging, or production.

Provider references

A recipe uses providerRef to select a Provider profile by provider.id:

execution:
  mode: hosted
  providerRef: production-quality

The Provider object with id: production-quality defines the runtime profile:

schema: https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml
version: "1.0"
kind: Provider
provider:
  id: production-quality
  provider: openai
  model: gpt-4.1
  providerClass: hosted
  temperature: 0.2
  credentialsRef: env:OPENAI_API_KEY

This keeps the recipe portable while avoiding a provider wild west. Recipes standardize workflow intent. Providers standardize named runtime profiles. Executing SDKs, CI/CD systems, MCP servers, agent runtimes, and platforms then resolve endpointRef, credentialsRef, and any implementation-specific settings during execution.

Example profiles

schema: https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml
version: "1.0"
kind: Provider
provider:
  id: local-fast
  provider: ollama
  model: gemma
  providerClass: local
  temperature: 0.1
  environment: development

These examples show how Provider profiles turn recipe-level providerRef names into standardized runtime profiles.

local-fast is intended for development and fast CI-style checks. A recipe that uses providerRef: local-fast asks the executor to use a local provider profile backed by Ollama and the gemma model. The low temperature keeps local drafting runs predictable while avoiding any hosted model dependency.

schema: https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml
version: "1.0"
kind: Provider
provider:
  id: internal-secure
  provider: gateway
  model: approved-llm
  providerClass: hosted
  endpointRef: platform:internal-gateway
  credentialsRef: vault:odp-agent-runtime
  temperature: 0.0
  environment: production

internal-secure is intended for controlled production or enterprise environments. A recipe that uses providerRef: internal-secure asks the executor to route model calls through an approved internal gateway. The profile names the gateway endpoint and credential reference, but it does not embed the actual credential or API key.

Specification extensions

While ODPR defines the core recipe object and attributes, organizations may need to add implementation-specific metadata for local tools, CI/CD systems, governance workflows, or platform-specific requirements.

Extension properties are patterned fields prefixed with x-. These fields may appear inside recipe objects where the schema allows extension properties.

Extensions are not part of the official ODPR object model unless they are later adopted into the specification. Tooling may ignore extension fields unless explicit support has been added.

Extensions should not redefine core ODPR semantics. They should be used only for additional metadata that does not fit standard attributes.

Useful and widely adopted extensions may become candidates for future versions of the standard. To propose useful extensions, raise an issue in GitHub:

Open Data Product Initiative GitHub issues

Example of extension usage:

schema: https://opendataproducts.org/odpr-v1.0/schema/odpr.yaml
version: "1.0"
kind: Recipe
recipe:
  metadata:
    id: RCP-CI-001
    name:
      en: CI Validate Generated Fragments
    description:
      en: Generate and validate fragments during CI.
    x-internal-owner-group: data-product-platform
  type: ci
  steps:
    - id: validate-fragments
      command: validate
      with:
        input: generated/fragments/
      x-ci-job-name: validate-generated-fragments
Element name
Type Options Description
^x- any Allows extensions to the ODPR schema. The field name MUST begin with x-, for example, x-ci-job-name. The value can be null, a primitive, an array, or an object.

Editors and contributors

This specification is openly developed and a lot of the work comes from community. We list all community contributors as a sign of appreciation. Maintainers process the feedback and draft new candidate releases, which may become the versions of the specification.

Maintainers:

Terms used

ODPR uses the Open Data Product Vocabulary, ODPV, as the shared vocabulary for the OpenDataProducts.org standards family. Use ODPV for common terms, stable ids, labels, definitions, aliases, and relationship names across ODPS, ODPC, ODPG, ODPR, and related tools.

The terms below explain ODPR-specific usage where this specification gives a shared vocabulary term a concrete recipe meaning or modeling constraint.

Shared terms from ODPV

Term ODPR usage
Recipe A portable, declarative workflow contract for repeatable data product work.
Workflow A sequence of steps that creates, validates, reviews, localizes, publishes, or refreshes data product artifacts.
Step One declared operation in a recipe.
Gate A required validation, quality, approval, or review condition.
Context The artifact or compact sidecar format used as prompt, review, or execution context.
Provider A named ODPR runtime profile that recipes can reference with providerRef.
Review A human or agent review expectation declared by the recipe.

ODPR-specific usage notes

Term Description
Recipe The ODPR root object that declares one repeatable data product workflow.
Provider The ODPR root object that declares one named provider profile.
providerRef A reference from a recipe to Provider.provider.id.
context.format The preferred context format for a recipe, such as yaml, toon, gcf, or auto.
execution.mode Whether the recipe expects local, hosted, hybrid, or no model execution.
runPolicy Runtime guidance such as timeout or retry expectations.
Extension property A local or implementation-specific field whose name begins with x-.

ODPR should stay focused on workflow contracts. Product metadata belongs to ODPS. Catalog and portfolio objects belong to ODPC. Graph structures and relationships belong to ODPG. Shared vocabulary belongs to ODPV.