Generated banner for Nvidia Ontology Management
Generated logo for Nvidia Ontology Management

Nvidia Ontology Management

NVIDIAOfficialCreated by NVIDIA

  • Skill
  • Workflow
  • Data and AI
  • Apache-2.0
  • Medium risk

From the author

Model and publish semantic definitions in Auto Ontology. Use for terms, relationships, measures, imports, and governed results—not deployment or querying.
— the description by NVIDIA

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured workflow for modeling, inspecting, and publishing semantic definitions in Auto Ontology. It emphasizes maintaining a rigorous semantic layer by separating routine metadata edits from complex modeling tasks and governed publication. The skill guides users through discovering current meanings, defining concepts and relationships, validating SQL attributes, and performing controlled model imports or exports. It is designed for environments where semantic accuracy and durable, governed changes are critical, ensuring that all modifications are backed by evidence and verified through exact readback procedures.

What it does

  • Inspects and edits semantic metadata like terms, relationships, and measures.
  • Validates SQL attributes and semantic definitions before application.
  • Manages bulk model imports and exports for catalog and semantic layer updates.
  • Enforces publication gates to ensure changes are durable and verified.
  • Provides workflows for modeling concepts, relationships, and reusable measures.
  • Facilitates verification of persisted changes through exact readback and comparison.

When to use it

  • When you need to define or update business concepts, relationships, or measures in Auto Ontology.
  • When performing bulk updates to the semantic model via import/export.
  • When you need to ensure a semantic change is governed, validated, and durable.
  • When troubleshooting semantic model inconsistencies or validation failures.

Advantages

  • Ensures semantic consistency through rigorous modeling and validation workflows.
  • Provides a clear path for governed publication and rollback of semantic models.
  • Reduces risk by requiring verification of persisted changes rather than relying on API success.
  • Supports complex semantic structures like derived SQL attributes and relationship paths.

Usage examples

“Define a new run-grain measure for revenue in Auto Ontology.”
The agent will guide you through the modeling.md workflow, requiring you to define the expression, grain, units, and additive dimensions before applying the change.
“Promote a revised semantic model to production.”
The agent will initiate the publication.md workflow, including backing up the current state, applying the change in isolation, and performing an exact readback comparison.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/nvidia/nvidia-ontology-management/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip nvidia-ontology-management.zip -d .agents/skills

Documentation by NVIDIA

<!-- SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. SPDX-License-Identifier: Apache-2.0 -->

Auto Ontology management and modeling

Purpose

Inspect and change Auto Ontology's semantic layer without confusing a successful API call with correct business meaning or durable publication. The machine-readable inputs, outputs, statuses, gates, and handoffs are in runtime-contract.yaml.

Choose the focused workflow before acting:

  • routine inspection or metadata edits: continue below and use write-api.md;

  • concepts, relationships, measures, units, grain, or policies: use modeling.md;

  • model promotion or reusable analytical results: use publication.md.

MCP tools only read. Create, patch, import, and compile-reset go through the Next.js /api/... gateway. Governed result rows require an approved source writer; Auto Ontology has no generic result-row writeback endpoint. Request bodies and field types live in docs/openapi/auto-ontology-api.json; this skill names operations and permissions only.

Prerequisites

Use a running, authenticated Auto Ontology deployment. Use nvidia-ontology-setup when the deployment or semantic layer is not ready.

Limitations

MCP is read-only, Auto Ontology has no generic result-row writeback endpoint, and current model import and certification APIs do not prove atomic promotion. Follow the publication gates below and fail closed when exact readback is unavailable.

Auth

Scripts use an API token (x-api-key or Authorization: Bearer). Mint it in the UI (user menu → API Tokens). A token acts as its owner — a viewer's token cannot do admin things. Creating and revoking tokens requires a signed-in session; a token cannot mint another token.

Writes below need catalog:edit unless noted. 403 means the owner's role lacks that permission, not that the path is wrong.

Instructions

  1. Discover current meaning via MCP (search_terms, get_term, get_term_columns, get_term_sql_attributes, describe_table) or REST if MCP is absent (GET /api/terms, GET /api/terms/{term_id}, GET /api/exploration/tables/{table_id}/details).

  2. Resolve the semantic contract when meaning changes. Record source binding, identity, population, relationship cardinality, measure expression, unit, grain, denominator, time, validity, and counterexamples; see modeling.md.

  3. State the proposed change to the user (term rename, new SQL attribute, import, and so on). Do not silently rewrite the glossary.

  4. Validate SQL before create/update: POST /api/sql-attributes/validate. A parse failure is HTTP 422, not valid: false.

  5. Apply the smallest write that matches the request (see write-api.md).

  6. Compilation is not a hidden side effect. Check GET /api/semantic-compilation/status. Do not call POST /api/semantic-compilation/reset as cleanup — it is an asynchronous, destructive rebuild of every database's compiled layer, returns 202, and requires semanticCompilation:manage.

  7. Verify the persisted change, not merely request success. Model imports require a scoped backup and exact re-export comparison; see publication.md. Then use MCP check_answerable / ask_question (or REST POST /api/question-entity-coverage and POST /api/chat/completions) for positive and negative behavior checks.

Semantic relationships and "what does this dataset mean"

Stay on the semantic layer. Do not browse raw schemas to answer meaning.

  • Term → columns: MCP get_term_columns or GET /api/terms/{term_id}/column-attributes

  • Term → derived SQL: MCP get_term_sql_attributes

  • Table → terms and SQL attributes: MCP describe_table or GET /api/exploration/tables/{table_id}/details

  • Semantic hop chain between two terms: GET /api/exploration/terms/{term_id}/path/{other_term_id}

  • Semantic graphs: GET /api/exploration/graph, GET /api/exploration/semantic-graph

These are semantic relationship paths, not generation provenance, source revision, certification history, or version lineage.

Bulk import / export

  • POST /api/model/export — YAML of catalog + semantic layer. Permission modelInterchange:export. Body may set catalog database IDs in databases (empty = all) and format (auto_ontology or ossie).

  • POST /api/model/import — multipart YAML; native Auto Ontology (data_layer / semantic_layer) or Apache Ossie (version, name, datasets at the root). Query replace (default true) and embed (default true). Permission modelInterchange:import. Can replace existing data — confirm with the user before replace=true, apply first in isolation, and use the exact readback workflow in publication.md.

Examples

  • To define a run-grain measure, follow the evidence and counterexample workflow in modeling.md.

  • To revise and promote a model, back up the exact scope and follow the staged readback workflow in publication.md.

Troubleshooting

For write failures, verify the authenticated owner's permission, distinguish HTTP 422 parse failures from validation results, and inspect compilation status before changing the model or resetting compilation.

See also

  • write-api.md

  • modeling.md

  • publication.md

  • nvidia-ontology-query — how to call Auto Ontology and validate query results

  • nvidia-ontology-setup — deployment not ready

  • mcp/auto_ontology_mcp/tools.py — live read-tool allow-list

Files

evals/evals.json

{
  "skill_name": "nvidia-ontology-management",
  "evals": [
    {
      "id": "management-eval-001-mcp-readonly",
      "prompt": "Use the Auto Ontology MCP server to add a SQL attribute named Gross Margin under the term Order.",
      "expected_output": "MCP is read-only and cannot create SQL attributes. The agent uses REST POST /api/sql-attributes after POST /api/sql-attributes/validate, as any authenticated principal with catalog:edit (session, SSO bearer, or an Auto Ontology API token owned by someone who can edit). An API token is not required. It does not look for a write MCP tool or scrape the full OpenAPI list.",
      "assertions": [
        "States that MCP cannot modify the glossary or catalog",
        "Uses POST /api/sql-attributes/validate then POST /api/sql-attributes",
        "Does not invent an MCP write tool"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-002-validate-422",
      "prompt": "I POSTed /api/sql-attributes/validate with a broken expression. The response was 422. Is that the same as valid: false?",
      "expected_output": "No. A parse failure is HTTP 422, not a 200 with valid: false. Fix the expression and retry validate before POST /api/sql-attributes.",
      "assertions": [
        "Treats 422 as a parse failure",
        "Does not equate 422 with valid: false",
        "Retries validate before create"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-003-reset-is-destructive",
      "prompt": "I patched one term description. Should I POST /api/semantic-compilation/reset so chat picks it up?",
      "expected_output": "No. Reset deletes every database's compiled semantic layer, is behind semanticCompilation:manage, and is not a cleanup step after a small edit. Check GET /api/semantic-compilation/status instead, then verify with check_answerable / ask_question.",
      "assertions": [
        "Refuses to treat reset as routine cleanup",
        "Names semanticCompilation:manage and that the call is destructive",
        "Suggests status + verify rather than reset"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-004-token-acts-as-owner",
      "prompt": "I minted an API token as a viewer. Can I PATCH /api/terms/{id} with it?",
      "expected_output": "A token acts as its owner and carries no extra permissions. A viewer's token cannot perform catalog:edit. 403 means the owner's role lacks the permission.",
      "assertions": [
        "States that a token acts as its owner",
        "States catalog:edit is required for PATCH /api/terms/{term_id}",
        "Does not claim the token elevates the viewer"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-005-import-replace",
      "prompt": "POST /api/model/import with replace=true. What can go wrong?",
      "expected_output": "Import requires modelInterchange:import and can replace existing catalog and semantic-layer data. replace defaults to true. Confirm with the user before applying. Format is detected from the document root: Auto Ontology uses data_layer/semantic_layer; any other root is read as Apache Ossie, with version, name, and datasets at the root.",
      "assertions": [
        "Warns that import can replace existing data",
        "Notes replace defaults to true and asks before proceeding",
        "Names modelInterchange:import"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-006-lineage-semantic-layer",
      "prompt": "What does the Orders table mean, and how is it connected to Customer?",
      "expected_output": "Use semantic-layer navigation: describe_table or GET /api/exploration/tables/{table_id}/details for terms and SQL attributes on the table; get_term_columns and GET /api/exploration/terms/{id}/path/{other} for the hop chain. Do not browse raw database schemas to answer meaning.",
      "assertions": [
        "Uses describe_table / exploration details rather than raw schema listing",
        "Uses the term path endpoint or get_term_columns for semantic relationships",
        "Does not recommend scraping information_schema"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-007-patch-vs-put-sql-attribute",
      "prompt": "I need to change the SQL expression on an existing SqlAttribute. Is PATCH enough?",
      "expected_output": "No. PATCH /api/sql-attributes/{attr_id} updates metadata only (name/description) and does not touch the expression. Changing SQL requires PUT (re-parse + embedding refresh) after POST /api/sql-attributes/validate.",
      "assertions": [
        "States PATCH does not change the SQL expression",
        "Uses PUT to update the expression",
        "Validates first"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-008-run-grain-measure",
      "prompt": "Define a reusable risk_mwh measure stored once per planning run. Queries may join each run to many selected jobs. What must the ontology record?",
      "expected_output": "Record the source expression, MWh unit, one-row-per-run grain, permitted grouping grain, additive dimensions, and a forbidden reaggregation rule. Validate a counterexample where joining one run-level value to multiple detail rows and summing multiplies the metric. The approved query projects or isolates the run-level value rather than summing it after the one-to-many join.",
      "assertions": [
        "Records unit, row grain, query grain, and additivity",
        "Names the one-to-many fanout counterexample",
        "Does not permit SUM of the run-level metric after the detail join"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-009-relationship-evidence",
      "prompt": "Two source tables both contain family_id. Add an ontology relationship between them.",
      "expected_output": "Do not add the relationship from matching names alone. Establish business identity, namespaces, key/null behavior, direction, multiplicity, and observed join coverage from approved source evidence. Return a model gap when equivalence or a bridge cannot be proven.",
      "assertions": [
        "Rejects matching names as sufficient join evidence",
        "Requires identity, direction, cardinality, and join coverage",
        "Returns a model gap rather than inventing a bridge"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-010-import-exact-readback",
      "prompt": "I imported revised term descriptions and removed one semantic FK with replace=true. The response says success. Can I promote it?",
      "expected_output": "No. Preserve a scoped pre-import export, apply first in isolation, re-export the same catalog database-ID scope, and compare exact IDs, descriptions, properties, and semantic-FK pairs. Current issues #250 and #265 mean success and payload counts do not prove those changes persisted. Quarantine on mismatch and keep the prior state active.",
      "assertions": [
        "Does not treat success as persisted parity",
        "Requires exact scoped re-export comparison",
        "Fails closed on retained properties or semantic FKs"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-011-result-publication-mode",
      "prompt": "Publish these external prediction rows through the read-only MCP server so other users can query them.",
      "expected_output": "MCP cannot publish. If there is an approved source writer, publish immutable keyed rows to a governed result table and then ingest and model it. A CustomAnalysis or PqlAnalysis can publish a supported definition, not arbitrary result rows. Without an approved writer, retain a receipt and state that nothing was published.",
      "assertions": [
        "Refuses result-row publication through MCP",
        "Distinguishes governed rows from reusable definitions",
        "Stops at receipt-only when no approved writer exists"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-012-promotion-readback-failure",
      "prompt": "The staged ontology imported, but a negative readback query now returns a superseded run. Mark the model certified and continue.",
      "expected_output": "Do not promote or claim certification. Preserve the failed SQL and rows, quarantine the staged state, and restore and verify the prior export where supported. Current certification fields are not an atomic promotion workflow, so report the unresolved lifecycle state explicitly.",
      "assertions": [
        "Blocks promotion after a negative readback failure",
        "Preserves evidence and uses the rollback artifact",
        "Does not claim atomic certification from field flags"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    },
    {
      "id": "management-eval-013-composed-lifecycle",
      "prompt": "Use the nvidia-ontology-management skill to revise our late-order measure, publish the reviewed change, and prove that agents can use it safely.",
      "expected_output": "Resolve the measure's source expression, population, unit, grain, denominator, time, and counterexamples; export and hash the exact database-ID scope; apply the reviewed change in isolation; re-export and compare exact persisted state; run positive and negative answerability, SQL, row, and prose checks through nvidia-ontology-query; then retain publication and rollback receipts. Stop and report the failing stage rather than promoting on any mismatch.",
      "assertions": [
        "Loads nvidia-ontology-management before planning the lifecycle",
        "Sequences modeling, backup, staged application, exact readback, and query validation",
        "Produces publication and rollback receipts after a write, or a blocked receipt when prerequisites fail",
        "Fails closed at any mismatched lifecycle stage"
      ],
      "expected_skill": "nvidia-ontology-management",
      "expected_script": null
    }
  ]
}

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
NVIDIA
Publisher
NVIDIA (Official)
Source
NVIDIA/skills · skills/nvidia-ontology-management · commit fce3cca
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE-APACHE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by NVIDIA or NVIDIA.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download nvidia-ontology-management.zip