# Fabriciq Ontology Consumption Cli

> >

- **Type:** Skill
- **Install:** `agentstack add skill-microsoft-skills-for-fabric-fabriciq-ontology-consumption-cli`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [microsoft](https://agentstack.voostack.com/s/microsoft)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [microsoft](https://github.com/microsoft)
- **Source:** https://github.com/microsoft/skills-for-fabric/tree/main/plugins/fabric-skills/skills/fabriciq-ontology-consumption-cli

## Install

```sh
agentstack add skill-microsoft-skills-for-fabric-fabriciq-ontology-consumption-cli
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

> **Update Check — ONCE PER SESSION (mandatory)**
> The first time this skill is used in a session, run the **check-updates** skill before proceeding.
> - **GitHub Copilot CLI / VS Code**: invoke the `check-updates` skill (e.g., `/fabric-skills:check-updates`).
> - **Claude Code / Cowork / Cursor / Windsurf / Codex**: read the local `package.json` version, then compare against remote via `git fetch origin main --quiet && git show origin/main:package.json` (or the GitHub API). If remote is newer, show the changelog and update instructions.
> - Skip if the check was already performed earlier in this session.

> **CRITICAL NOTES**
> 1. Ontology is **preview**. The item type value is `Ontology`. Wire format and limitations may change; validate against the current docs before production use.
> 2. This skill is **read-only**. It never calls `createItem` or `updateDefinition`. For schema changes, delegate to **`fabriciq-ontology-authoring-cli`**.
> 3. This skill does **not** query source data directly. It enumerates ontology grounding context, then **delegates** the actual data read to the per-datasource consumption skill that matches the binding source kind (see [Query Routing](#query-routing)).
> 4. Projections (a semantic query layer over ontology entities) are **not yet GA**. Until they ship, all data queries run against the **source** table (`LakehouseTable` or `KustoTable`) using the columns declared in the binding's `propertyBindings[]`.
> 5. To find the workspace details (including its ID) from workspace name: list all workspaces and use JMESPath filtering.
> 6. To find the ontology item ID from workspace ID and item name: list all items of type `Ontology` in that workspace and use JMESPath filtering.

# fabriciq-ontology-consumption-cli — Fabric Ontology Consumption via CLI

## Table of Contents

| Task                                             | Reference                                                                                                                    | Notes                                                             |
| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| Finding Workspaces and Items in Fabric           | [COMMON-CLI.md § Finding Workspaces and Items in Fabric](../../common/COMMON-CLI.md#finding-workspaces-and-items-in-fabric)  | **Mandatory** — resolve workspace/item IDs before enumerating     |
| Fabric Topology & Key Concepts                   | [COMMON-CORE.md § Fabric Topology & Key Concepts](../../common/COMMON-CORE.md#fabric-topology--key-concepts)                 | Workspace → Item hierarchy                                        |
| Authentication & Token Acquisition               | [COMMON-CORE.md § Authentication & Token Acquisition](../../common/COMMON-CORE.md#authentication--token-acquisition)         | Use `https://api.fabric.microsoft.com` audience for control plane |
| Core Control-Plane REST APIs                     | [COMMON-CORE.md § Core Control-Plane REST APIs](../../common/COMMON-CORE.md#core-control-plane-rest-apis)                    | Get Item Definition                                               |
| Long-Running Operations (LRO)                    | [COMMON-CORE.md § Long-Running Operations (LRO)](../../common/COMMON-CORE.md#long-running-operations-lro)                    | `getDefinition` returns an LRO                                    |
| Rate Limiting & Throttling                       | [COMMON-CORE.md § Rate Limiting & Throttling](../../common/COMMON-CORE.md#rate-limiting--throttling)                         |                                                                   |
| Authentication Recipes                           | [COMMON-CLI.md § Authentication Recipes](../../common/COMMON-CLI.md#authentication-recipes)                                  | `az login`; token acquisition                                     |
| Fabric Control-Plane API via `az rest`           | [COMMON-CLI.md § Fabric Control-Plane API via az rest](../../common/COMMON-CLI.md#fabric-control-plane-api-via-az-rest)      | **Always** pass `--resource https://api.fabric.microsoft.com`     |
| Long-Running Operations (LRO) Pattern            | [COMMON-CLI.md § Long-Running Operations (LRO) Pattern](../../common/COMMON-CLI.md#long-running-operations-lro-pattern)      | Poll `operations/{x-ms-operation-id}` until `Succeeded`          |
| Gotchas & Troubleshooting (CLI-Specific)         | [COMMON-CLI.md § Gotchas & Troubleshooting (CLI-Specific)](../../common/COMMON-CLI.md#gotchas--troubleshooting-cli-specific) | Token audience, shell escaping                                    |
| Definition Envelope (parts, payloadType)         | [ITEM-DEFINITIONS-CORE.md § Definition Envelope](../../common/ITEM-DEFINITIONS-CORE.md#definition-envelope)                  | `InlineBase64` parts pattern — the ontology returns this shape    |
| Ontology Definition Tree                         | [ONTOLOGY-AUTHORING-CORE.md § Definition Tree](../fabriciq-ontology-authoring-cli/references/ONTOLOGY-AUTHORING-CORE.md#definition-tree)                      | Authoritative file/folder layout of parts you will decode         |
| EntityType & EntityTypeProperty schema           | [ONTOLOGY-AUTHORING-CORE.md § EntityType file](../fabriciq-ontology-authoring-cli/references/ONTOLOGY-AUTHORING-CORE.md#entitytype-file--entitytypesiddefinitionjson) | `valueType` catalog, key / display-name contracts                 |
| DataBinding schema + source-type mapping         | [ONTOLOGY-AUTHORING-CORE.md § DataBinding file](../fabriciq-ontology-authoring-cli/references/ONTOLOGY-AUTHORING-CORE.md#databinding-file--entitytypesiddatabindingsguidjson) | `LakehouseTable` vs `KustoTable`; `propertyBindings[]` shape       |
| RelationshipType + Contextualization             | [ONTOLOGY-AUTHORING-CORE.md § RelationshipType file](../fabriciq-ontology-authoring-cli/references/ONTOLOGY-AUTHORING-CORE.md#relationshiptype-file--relationshiptypesiddefinitionjson) | Source/target + linking-table contract                            |
| Connection Fundamentals (EH source queries)      | [EVENTHOUSE-CONSUMPTION-CORE.md § Connection Fundamentals](../../common/EVENTHOUSE-CONSUMPTION-CORE.md#connection-fundamentals) | Cluster URI + DB discovery for `KustoTable` bindings              |
| Performance Best Practices (EH source queries)   | [EVENTHOUSE-CONSUMPTION-CORE.md § Performance Best Practices](../../common/EVENTHOUSE-CONSUMPTION-CORE.md#performance-best-practices) | Time filters, `has` vs `contains`                                 |
| Spark consumption patterns (Lakehouse sources)   | [SPARK-CONSUMPTION-CORE.md](../../common/SPARK-CONSUMPTION-CORE.md)                                                          | For `LakehouseTable` bindings, delegate read                      |
| SQL consumption patterns (SQL endpoint / DW)     | [SQLDW-CONSUMPTION-CORE.md](../../common/SQLDW-CONSUMPTION-CORE.md)                                                          | For `LakehouseTable` SQL-endpoint reads and Warehouse reads       |
| Ontology Concepts                                | [SKILL.md § Ontology Consumption Concepts](#ontology-consumption-concepts)                                                   | Entity / relationship / binding / grounding context               |
| Tool Stack                                       | [SKILL.md § Tool Stack](#tool-stack)                                                                                         |                                                                   |
| Connection                                       | [SKILL.md § Connection](#connection)                                                                                         | Discover workspace, ontology ID; Get Item Definition              |
| Consumption Scope                                | [SKILL.md § Consumption Scope](#consumption-scope)                                                                           | What this skill does / does not do                                |
| Grounding Context Extraction (deep reference)    | [grounding-extraction.md](references/grounding-extraction.md)                                                                | Decode parts → grounding JSON for agents                          |
| Query Routing (deep reference)                   | [routing.md](references/routing.md)                                                                                          | Binding kind → per-datasource skill + query shape                 |
| Worked Examples                                  | [examples.md](references/examples.md)                                                                                        | End-to-end bash recipes (enumerate → route → query)               |
| Graph Walks (N-hop neighborhood from anchor)     | [graph-walks.md](references/graph-walks.md)                                                                                  | Anchor entity + hop budget → composed inline reads, no scripts    |
| Snappy-Response Discipline                       | [SKILL.md § Snappy-Response Discipline](#snappy-response-discipline)                                                         | Inline-first; script only when stateful or re-runnable            |
| Must / Prefer / Avoid / Troubleshooting          | [SKILL.md § Must / Prefer / Avoid / Troubleshooting](#must--prefer--avoid--troubleshooting)                                  | LLM decision rules                                                |
| Agentic Workflows                                | [SKILL.md § Agentic Workflows](#agentic-workflows)                                                                           | Ground-then-query loop, schema-aware query generation             |
| Agent Integration Notes                          | [SKILL.md § Agent Integration Notes](#agent-integration-notes)                                                               | How this skill composes with authoring / per-datasource skills    |

---

## Ontology Consumption Concepts

A Fabric Ontology item carries its schema as a **tree of JSON files** inside the item definition (same shape as authoring). `Get Item Definition` returns the parts as base64-encoded payloads; the consumption flow is always: **fetch → decode → parse → ground → delegate**.

| Concept | Definition part | What it tells an agent |
|---|---|---|
| Entity type | `EntityTypes/{entityTypeId}/definition.json` | Logical type name, key properties (`entityIdParts`), display-name property, static `properties[]`, `timeseriesProperties[]`, value-type catalog |
| Data binding | `EntityTypes/{entityTypeId}/DataBindings/{guid}.json` | Which physical table backs this entity type, the source kind (`LakehouseTable` / `KustoTable`), `dataBindingType` (`NonTimeSeries` / `TimeSeries`), column-to-property map, and — for timeseries — the timestamp column |
| Relationship type | `RelationshipTypes/{relTypeId}/definition.json` | Link between two entity types (source/target); name; cardinality hints |
| Contextualization | `RelationshipTypes/{relTypeId}/Contextualizations/{guid}.json` | Which Lakehouse linking table holds the (source key, target key) pairs to realize the relationship |

**Grounding context** = the flattened, agent-ready projection of that tree: a JSON summary an LLM can read to decide *which entity type to query*, *which column holds the key*, *which table to hit*, and *which consumption skill to invoke*. Full shape + extraction recipe: [grounding-extraction.md](references/grounding-extraction.md).

Property `valueType` allowed values (exact): `String`, `Boolean`, `DateTime`, `Object`, `BigInt`, `Double`. Integers are `BigInt` (not `Int64`); GUIDs are modelled as `String`. See [ONTOLOGY-AUTHORING-CORE.md § EntityTypeProperty](../fabriciq-ontology-authoring-cli/references/ONTOLOGY-AUTHORING-CORE.md#entitytypeproperty) for the full source-column → `valueType` mapping.

---

## Tool Stack

Ontology consumption uses the same Fabric control-plane tool stack as every other CLI skill — see [COMMON-CLI.md § Tool Selection Rationale](../../common/COMMON-CLI.md#tool-selection-rationale) for the canonical list (install commands, prerequisite checks, base64 helpers, JSON tooling) and [COMMON-CLI.md § Authentication Recipes](../../common/COMMON-CLI.md#authentication-recipes) for `az login` + token acquisition.

Per-datasource reads are delegated — you do **not** need the Kusto, Spark, or SQL CLI tools installed to use this skill for enumeration. They are only needed if you also invoke the downstream consumption skill in the same session.

---

## Connection

Ontology consumption targets the Fabric control plane. You need the **workspace ID** and the **ontology item ID**; everything else (entity types, bindings, source tables, cluster URIs) is recovered by decoding the definition.

- Sign in + acquire the Fabric control-plane token → [COMMON-CLI.md § Authentication Recipes](../../common/COMMON-CLI.md#authentication-recipes) (always `--resource https://api.fabric.microsoft.com`).
- Resolve workspace ID by `displayName` and the ontology item ID via `GET /v1/workspaces/{WS_ID}/items?type=Ontology` filtered by `displayName` → [COMMON-CLI.md § Finding Workspaces and Items in Fabric](../../common/COMMON-CLI.md#finding-workspaces-and-items-in-fabric) (covers pagination + JMESPath filtering).
- Generic `az rest` invocation template → [COMMON-CLI.md § Fabric Control-Plane API via az rest](../../common/COMMON-CLI.md#fabric-control-plane-api-via-az-rest).

### Fetching the definition (Ontology-preview LRO gotcha)

`Get Item Definition` is Long-Running-Operation-capable. Depending on tenant/SKU, the POST may return the definition envelope inline (`200 OK`) **or** return `202 Accepted` with an `x-ms-operation-id` header; for the 202 case, poll `https://api.fabric.microsoft.com/v1/operations/{operationId}` until `Succeeded`, then GET `…/operations/{operationId}/result` to receive the `parts[]` array. The generic LRO recipe (capture `x-ms-operation-id`, poll, fetch result) is in [COMMON-CLI.md § Long-Running Operations (LRO) Pattern](../../common/COMMON-CLI.md#long-running-operations-lro-pattern).

> **Ontology-preview gotcha — prefer polling the `operations/{id}` endpoint over the `Location` header.** The public Fabric LRO contract supports either, but on this Ontology LRO the `Location` header has been observed redirecting to an `*.analysis.windows.net` host; polling it with a Fabric-audience token is flaky (intermittent `401/403`). Poll `https://api.fabric.microsoft.com/v1/operations/{operationId}` on the Fabric host instead. If you must follow `Location`, use the audience required by that URL. If a poll ever returns a non-2xx, **read the operation `.error` and stop — never blind-retry the POST**.

The full fetch-and-decode flow for this skill (LRO capture + part decode + tree reconstruction, Bash + PowerShell + Python helpers) lives in [grounding-extraction.md § Fetch and Decode](references/grounding-extraction.md#fetch-and-decode-an-ontology-definition). The sibling `fabriciq-ontology-authoring-cli` documents the same redirect-host workaround in its [LRO Header Capture section](../fabriciq-ontology-authoring-cli/SKILL.md#lro-header-capture-with-az-rest) — keep the two in sync if you change one.

### Source-data connections (delegated)

Running the data query itself (KQL / Spark SQL / T-SQL) uses the connection patterns owned by the sibling consumption skills:

- **Eventhouse** (`KustoTable` bindings) → [EVENTHOUSE-CONSUMPTION-CORE.md § Connection Fundamentals](../../common/EVENTHOUSE-CONSUMPTION-CORE.md#connection-fundamentals) + `eventhouse-consumption-cli`
- **Lakehouse** (`LakehouseTable` bindings) → `sqldw-consumption-cli` (default, SQL analytics endpoint) or `spark-consumptio

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [microsoft](https://github.com/microsoft)
- **Source:** [microsoft/skills-for-fabric](https://github.com/microsoft/skills-for-fabric)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-microsoft-skills-for-fabric-fabriciq-ontology-consumption-cli
- Seller: https://agentstack.voostack.com/s/microsoft
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
