← Back to list

Microsoft Just Shipped Two Semantic Layers. One of Them Is Quietly More Powerful Than Fabric IQ

A technical deep-dive into Microsoft Dataverse as an Agent Data Platform — and why the semantic layer nobody is talking about may matter…

Pankaj Kumar · 2026-05-30 07:23 · 12 claps · 14.1 min read paywalled
#microsoft #ai-agent #ontology #semanticweb #enterprise-ai
Open on Medium ↗
Wiki topics: AGT · AI Agents PHI · Philosophy 🔧 · Data Engineering

Microsoft Just Shipped Two Semantic Layers. One of Them Is Quietly More Powerful Than Fabric IQ

A technical deep-dive into Microsoft Dataverse as an Agent Data Platform — and why the semantic layer nobody is talking about may matter more than the one everyone is

📦 GitHub: OWL Portability Layer — vendor-neutral semantic foundation across all platforms: github.com/cloudbadal007/owl-portability-layer

🗺️ New to ontology for enterprise AI? Start with the full learning roadmap: The Enterprise AI Ontology Roadmap: 30+ Articles, 4 Learning Tracks, and Where to Start

The Announcement Everyone Missed While Watching Fabric IQ

When Microsoft talks about its enterprise semantic layer, the conversation always goes to Fabric IQ. Ontology Items. Semantic contracts. Permitted actions. DirectLake bindings. I’ve covered that architecture in depth — first in the Microsoft vs Palantir comparison and then in the Fabric IQ migration stress test.

[embed]

But while enterprise architects have been debating Fabric IQ’s DirectLake limitation, Microsoft has been quietly building a second semantic layer that has none of Fabric IQ’s constraints — and is already deployed to every organisation running Dynamics 365, Power Apps, or Microsoft 365 Copilot.

That layer is Dataverse as an Agent Data Platform.

In March 2026, Microsoft announced: Dataverse Search is now enriched with an intelligent semantic layer that understands the business data schema and adds true business data understanding for agents to operate.

And simultaneously with Agent Framework 1.0 shipping to general availability, Microsoft’s Dataverse team announced: The bottleneck is no longer model access. It’s business context. Over the past six months, we’ve been building Microsoft Dataverse into the agent data platform: the layer that gives agents not just data access, but real business understanding.

Two semantic layers. Two different architectures. Two different audiences. And one of them — the Dataverse layer — is quietly ahead of the one Microsoft has been marketing.

Here’s why, and what it means for your enterprise AI architecture before Microsoft Build 2026 on June 2.

Part 1: The Two Microsoft Semantic Layers — What Each Actually Is

Let me be precise, because the confusion between these two layers is causing real architectural mistakes in enterprise deployments right now.

Microsoft Fabric IQ — The Semantic Contract Layer

Fabric IQ builds semantic contracts on top of your data. An Ontology Item defines entity types, typed relationships, business rules, and permitted actions. Agents don’t query raw data — they query the ontology and inherit what entities mean.

Who it’s for: Data engineers and architects building structured analytics agents on DirectLake data in OneLake.

What it grounds: Agents in a formal semantic model of your data warehouse entities.

The constraint: DirectLake only. Import mode and DirectQuery models — the majority of real enterprise Power BI deployments — cannot participate. If your data isn’t in OneLake in DirectLake format, you’re not using Fabric IQ’s semantic layer. You’re using something else.

The audience size: Organizations that have migrated to Microsoft Fabric with DirectLake — a meaningful but not universal subset of Microsoft’s enterprise customer base.

Microsoft Dataverse Semantic Layer — The Agent Data Platform

Dataverse’s semantic layer is architecturally different in every important dimension:

What it grounds agents in: Not a formal ontology — instead, a managed vector index with semantic search that understands your Dataverse schema, business rules, and procedural knowledge captured from existing workflows.

Who it’s for: Every organization running Dynamics 365, Power Apps, Power Platform, Microsoft 365 Copilot — which is essentially every Microsoft enterprise customer.

What’s new: The semantic layer goes beyond schema matching to capture business meaning — enabling Copilot and agents to understand tables, relationships, and how to navigate them, rather than doing keyword search. Agents can now reason about processes and rules, not just retrieve records.

The MCP integration: Dataverse MCP Server lets agents discover relevant content and rules across systems dynamically — inspecting schemas, generating queries, and refining requests at inference time.

The scale difference: Dataverse powers 220 million+ monthly active Dynamics 365 users. Fabric IQ is in preview for a subset of Fabric customers. The Dataverse semantic layer is already deployed at a scale that Fabric IQ has not reached.

Part 2: What Dataverse’s Semantic Layer Actually Does — The Technical Reality

This is where the announcement language needs to be stress-tested. Microsoft claims Dataverse now delivers “true business data understanding for agents to operate.” What does that mean in practice?

The Vector Index + Semantic Search Foundation

Dataverse adds a managed vector index and semantic search to make data agent-ready, letting agents reason about meaning and context instead of returning raw records.

In practice: when an agent queries Dataverse, it’s no longer doing a keyword lookup against a flat schema. The semantic layer interprets the agent’s intent, maps it against the schema graph (which tables, which relationships, which business rules apply), and returns contextually relevant results.

Semantic layer in Dataverse Search improves meaning-based matching beyond keywords, so Copilot delivers answers grounded in real records and business context rather than simple schema lookups.

This is the same problem I documented in the RAG pipeline article — retrieval without semantic understanding. Dataverse’s managed vector index addresses the retrieval side of this problem for structured business data.

Business Skills — Procedural Knowledge as Agent Context

The more interesting announcement is Business Skills. For makers, business skills describe a specific process — the detailed steps-by-step instructions involved, the information required, and the business rules that apply.

This is genuinely new. It’s not just semantic search over records — it’s capturing procedural knowledge from existing business workflows and making it available as agent context. An agent handling an expense approval now has access to the organization's actual approval policy, not just the expense records.

The Three Dataverse Agent Patterns

The three primary patterns are: using Dataverse as a knowledge source, using it as a tool, and using the Dataverse MCP Server for more agentic interactions. When used as a knowledge source, agents run semantic search and return natural-language answers drawn from table records. The tool pattern lets agents invoke Dataverse actions with automatic slot filling. The Dataverse MCP Server pattern enables agents to inspect schemas, generate queries, and refine requests dynamically.

This three-pattern architecture is the most sophisticated agent data integration model Microsoft has shipped to date — and it’s deployed on Dataverse, not Fabric IQ.

Part 3: Why Dataverse’s Layer Is Quietly Ahead of Fabric IQ

Here’s the comparison that Microsoft hasn’t made explicitly — because acknowledging it would create an uncomfortable internal conversation about which semantic layer is the “official” Microsoft strategy.

DIMENSION           FABRIC IQ                 DATAVERSE SEMANTIC LAYER
──────────────────────────────────────────────────────────────────────
Data foundation     OneLake (DirectLake)      Dynamics 365, Power Apps,
                                              custom business apps

Binding constraint  DirectLake only           Any Dataverse data
                    (Import/DQ excluded)       (no binding constraint)

Semantic model      Formal ontology items     Managed vector index +
                    (entity types, rules)      schema graph + skills

Agent patterns      Semantic contracts +       Knowledge source +
                    permitted actions          Tool + MCP Server

Procedural          No                        Yes — Business Skills
knowledge                                      capture workflow logic

MCP integration     Partial                   Dataverse MCP Server
                                              (GA, actively developed)

Deployed at scale   Preview / limited GA      220M+ M365 users already
                    on Fabric customers        running on Dataverse

Write-back          Permitted actions          Dataverse actions with
governance          (Fabric IQ model)          automatic slot filling

Entry barrier       Requires Fabric +          Already deployed in every
                    DirectLake migration        Dynamics 365 customer

The Dataverse semantic layer doesn’t require a migration. It doesn’t require DirectLake. It doesn’t require OneLake. It’s already where your business data lives if you’re a Dynamics 365 or Power Platform customer — which is the majority of Microsoft’s enterprise install base.

Fabric IQ is the right architectural destination for data warehouse agents on structured analytics workloads. But for the 220 million business users who live in Dynamics 365, Teams, and Power Apps every day — the Dataverse semantic layer is the one that matters. And it shipped first, at scale, without a DirectLake constraint.

Part 4: The Microsoft Agent Framework 1.0 Connection

Here’s where the two semantic layers converge into a single architectural picture.

Microsoft Agent Framework 1.0 is a production-ready, open-source framework for building agents and multi-agent workflows in .NET and Python, converging Semantic Kernel and AutoGen into a single framework with A2A and MCP support.

The Agent Framework is the orchestration layer. Dataverse is the data layer. Fabric IQ is the analytics semantic layer. Work IQ is the intelligence layer. And Work IQ combined with Dataverse transforms Dataverse from a system of record into an intelligent system of action — together with Agent 365 as the control plane that handles registry, access control, visualization, interoperability, and security.

The full Microsoft agentic stack now looks like this:

MICROSOFT AGENTIC STACK (2026)

┌──────────────────────────────────────────────────────────────┐
│                    AGENT LAYER                                │
│   Microsoft Agent Framework 1.0 (AutoGen + Semantic Kernel)  │
│   A2A protocol + MCP tool discovery                          │
├──────────────────────────────────────────────────────────────┤
│                  AGENT CONTROL PLANE                          │
│   Agent 365: registry, access control, interoperability      │
├──────────────────────────────────────────────────────────────┤
│              INTELLIGENCE + CONTEXT LAYER                     │
│   Work IQ: context, memory, inference                        │
├────────────────────────────┬─────────────────────────────────┤
│    ANALYTICS SEMANTIC      │    BUSINESS SEMANTIC LAYER       │
│         LAYER              │                                  │
│    Fabric IQ               │    Dataverse Agent Data Platform  │
│    (DirectLake, OneLake)   │    (Dynamics 365, Power Apps,    │
│    Ontology Items          │    M365, custom apps)            │
│    Semantic contracts      │    Semantic search + Skills      │
│    Permitted actions       │    MCP Server + Vector Index     │
└────────────────────────────┴─────────────────────────────────┘

This is genuinely important architecture. For the first time, Microsoft has a coherent answer to the question: “how do agents understand our business data?” And the answer is: through two complementary semantic layers, each optimized for a different data estate.

The mistake enterprise architects are making right now: assuming Fabric IQ is the only semantic layer Microsoft offers, and dismissing it because of the DirectLake constraint. The Dataverse semantic layer is the one that’s actually available today, at scale, for the majority of their user base.

Part 5: The Gap That Remains — What Neither Layer Addresses

I’ve documented this gap across six platforms now — Google, Microsoft, Palantir, ServiceNow, Salesforce, AWS. The pattern holds for Microsoft’s two semantic layers too.

What Fabric IQ addresses: Semantic understanding of analytics data. What entities mean. How they relate. What agents are permitted to do with them.

What Fabric IQ doesn’t address: Cross-platform semantic authority enforcement. An agent grounded in Fabric IQ’s ontology items cannot enforce its constraints on a Salesforce agent delegating through A2A. The permitted actions live in Fabric. The cross-platform gap is outside Fabric’s boundary.

What Dataverse’s semantic layer addresses: Business data understanding. Schema graph traversal. Procedural knowledge from workflow history. MCP-based dynamic schema discovery.

What Dataverse’s semantic layer doesn’t address: Formal constraint enforcement. The Dataverse semantic layer is retrieval-optimized — it helps agents find and understand the right data. It does not enforce formal constraints that prevent agents from acting on data incorrectly. A SHACL constraint that says “a ComplianceHold cannot be released without Legal sign-off” is not expressible in Dataverse’s vector index model.

Both layers help agents understand. Neither layer formally constrains what agents are allowed to do with that understanding.

Here’s the code that shows what the OWL/SHACL layer adds on top of Microsoft’s Dataverse semantic foundation:

# dataverse_owlshacl_bridge.py
"""
Microsoft Dataverse + OWL/SHACL Bridge

Dataverse's semantic layer gives agents business understanding.
OWL/SHACL gives agents formal constraint enforcement.

Both are necessary. Microsoft ships the first.
This bridge adds the second.

Architecture:
  Dataverse Semantic Layer  → understands what the data means
  OWL/SHACL Constraint Layer → enforces what agents can do with it

Part of the OntoArc enterprise ontology toolkit.
"""

import json
from dataclasses import dataclass, field
from typing import Optional
from rdflib import Graph, Namespace, URIRef, Literal, RDF
from rdflib.namespace import XSD
from pyshacl import validate

PROC = Namespace("http://enterprise.org/procurement#")

@dataclass
class DataverseAgentQuery:
    """
    Represents a Dataverse agent action — after semantic grounding,
    before execution.

    Dataverse's semantic layer has already resolved:
    - What tables and relationships are relevant
    - What business rules apply to this query
    - What workflow context is available

    OWL/SHACL validation runs here:
    - Is this action semantically valid given domain constraints?
    - Does it violate formal business rules the semantic index cannot enforce?
    """
    query_id: str
    agent_id: str
    action_type: str          # The Dataverse action being attempted
    entity_class: str         # OWL entity class resolved from Dataverse schema
    payload: dict             # Action parameters from Dataverse semantic search
    dataverse_context: dict   # Business context returned by Dataverse semantic layer
    skill_applied: Optional[str] = None  # Business Skill used for grounding

@dataclass
class ValidationResult:
    query_id: str
    agent_id: str
    action_type: str
    dataverse_grounded: bool  # Dataverse semantic layer resolved context
    shacl_valid: bool         # OWL/SHACL constraints satisfied
    violations: list[str] = field(default_factory=list)
    safe_to_execute: bool = False

    def __post_init__(self):
        # Both layers must pass for execution
        # Dataverse grounds the agent. SHACL governs the action.
        self.safe_to_execute = (
            self.dataverse_grounded and self.shacl_valid
        )

class DataverseOWLSHACLBridge:
    """
    The formal constraint layer for Microsoft Dataverse agents.

    Dataverse's semantic layer excels at business data understanding.
    It resolves schemas, navigates relationships, captures workflow context.

    What it cannot enforce: formal domain constraints that prevent
    agents from taking semantically-understood but constraint-violating
    actions.

    This bridge adds the enforcement layer that Dataverse's vector
    index model cannot provide.

    Example:
        Dataverse understands: "this is a ComplianceHold on PAY-001"
        OWL/SHACL enforces:   "ComplianceHold requires holdApprovedBy"
        Without this bridge:   agent acts on understanding without constraint
        With this bridge:      agent is blocked until constraint is satisfied
    """

    def __init__(self, ontology_path: str, shacl_path: str):
        self.ontology = Graph()
        self.ontology.parse(ontology_path, format="turtle")

        self.shacl_graph = Graph()
        self.shacl_graph.parse(shacl_path, format="turtle")

        # Map Dataverse entity names to OWL class names
        # This bridges Dataverse's schema vocabulary to
        # the OWL formal type hierarchy
        self.dataverse_to_owl_map = {
            "cr9a1_paymentevent":    "PaymentEvent",
            "cr9a1_compliancehold":  "ComplianceHold",
            "cr9a1_budgethold":      "BudgetHold",
            "cr9a1_vendordispute":   "VendorDisputeHold",
            "cr9a1_contract":        "Contract",
            "cr9a1_vendor":          "Vendor",
            "account":               "Vendor",        # Dynamics 365 standard
            "opportunity":           "Contract",      # Dynamics 365 standard
        }

    def validate_dataverse_action(
        self,
        query: DataverseAgentQuery
    ) -> ValidationResult:
        """
        Validate a Dataverse agent action against OWL/SHACL constraints.

        Called AFTER Dataverse's semantic layer has:
        - Resolved business context via semantic search
        - Applied relevant Business Skills
        - Identified the correct schema path

        We validate: does this action satisfy formal domain constraints?

        Parameters
        ----------
        query : DataverseAgentQuery
            The agent query with Dataverse semantic context attached

        Returns
        -------
        ValidationResult
            Combined result of Dataverse grounding + SHACL validation
        """
        # Map Dataverse entity to OWL class
        owl_class = self.dataverse_to_owl_map.get(
            query.entity_class.lower(),
            query.entity_class  # Fall back to direct class name
        )

        # Build RDF from Dataverse payload + OWL class
        data_graph = self._build_entity_rdf(query, owl_class)
        combined = data_graph + self.ontology

        # OWL/SHACL validation
        conforms, _, report_text = validate(
            combined,
            shacl_graph=self.shacl_graph,
            ont_graph=self.ontology,
            inference='rdfs',
            abort_on_first=False
        )

        violations = []
        for line in report_text.split("\n"):
            if "sh:resultMessage" in line:
                msg = line.replace("sh:resultMessage", "").strip().strip('"')
                if msg:
                    violations.append(msg)

        return ValidationResult(
            query_id=query.query_id,
            agent_id=query.agent_id,
            action_type=query.action_type,
            dataverse_grounded=bool(query.dataverse_context),
            shacl_valid=conforms,
            violations=violations
        )

    def _build_entity_rdf(
        self,
        query: DataverseAgentQuery,
        owl_class: str
    ) -> Graph:
        """
        Build RDF graph from Dataverse action payload.

        This converts Dataverse's schema-based entity representation
        into a typed OWL instance for SHACL validation.
        """
        g = Graph()
        g.bind("proc", PROC)

        entity_uri = URIRef(
            f"http://enterprise.org/procurement#{query.query_id}"
        )

        g.add((entity_uri, RDF.type, PROC[owl_class]))

        payload = query.payload

        # Map Dataverse field names to OWL properties
        if "cr9a1_amountusd" in payload or "amount" in payload:
            amount = payload.get("cr9a1_amountusd", payload.get("amount", 0))
            g.add((entity_uri, PROC.amountUSD,
                   Literal(float(amount), datatype=XSD.decimal)))

        if "cr9a1_holdtype" in payload or "holdType" in payload:
            hold_type = payload.get("cr9a1_holdtype", payload.get("holdType"))
            hold_uri = PROC[hold_type]
            g.add((entity_uri, PROC.hasHoldStatus, hold_uri))
            g.add((hold_uri, RDF.type, PROC[hold_type]))

        if "cr9a1_approvedby" in payload or "approvedBy" in payload:
            approver = payload.get("cr9a1_approvedby",
                                   payload.get("approvedBy"))
            g.add((entity_uri, PROC.holdApprovedBy,
                   Literal(approver, datatype=XSD.string)))

        if "cr9a1_paymentid" in payload or "paymentId" in payload:
            pid = payload.get("cr9a1_paymentid", payload.get("paymentId"))
            g.add((entity_uri, PROC.paymentId,
                   Literal(pid, datatype=XSD.string)))

        return g

def demo():
    """
    Demonstrates Dataverse semantic layer + OWL/SHACL running together.

    Dataverse resolved the business context. OWL/SHACL validates
    whether the action is formally permissible.
    """

    bridge = DataverseOWLSHACLBridge(
        ontology_path="ontologies/procurement.ttl",
        shacl_path="ontologies/procurement.ttl"
    )

    print("=" * 65)
    print("MICROSOFT DATAVERSE + OWL/SHACL BRIDGE DEMO")
    print("=" * 65)
    print("""
Dataverse semantic layer already ran:
  ✅ Schema graph traversed — relevant tables identified
  ✅ Business Skills applied — approval workflow context loaded
  ✅ MCP Server queried — entity relationships resolved
  ✅ Semantic search complete — PAY-001 is a ComplianceHold

OWL/SHACL constraint layer runs now:
  ❓ Is this action formally valid given domain constraints?
""")

    test_cases = [
        {
            "label": "🔴 ComplianceHold release — Dataverse grounded, SHACL blocks",
            "description": "Dataverse understood the context perfectly.\n   OWL/SHACL: ComplianceHold requires holdApprovedBy.",
            "query": DataverseAgentQuery(
                query_id="dv-001",
                agent_id="copilot-finance-agent",
                action_type="release_payment_hold",
                entity_class="cr9a1_compliancehold",
                payload={
                    "cr9a1_paymentid": "PAY-001",
                    "cr9a1_amountusd": 340000,
                    "cr9a1_holdtype": "ComplianceHold",
                    # cr9a1_approvedby intentionally missing
                },
                dataverse_context={
                    "resolved_table": "cr9a1_paymentevent",
                    "skill_applied": "PaymentApprovalWorkflow",
                    "related_entities": ["cr9a1_vendor", "cr9a1_contract"],
                    "business_rule": "ComplianceHold requires Legal sign-off"
                },
                skill_applied="PaymentApprovalWorkflow"
            )
        },
        {
            "label": "🟢 ComplianceHold release — both layers pass",
            "description": "Dataverse grounded. Legal approval present. SHACL validates.",
            "query": DataverseAgentQuery(
                query_id="dv-002",
                agent_id="copilot-legal-agent",
                action_type="release_payment_hold",
                entity_class="cr9a1_compliancehold",
                payload={
                    "cr9a1_paymentid": "PAY-001",
                    "cr9a1_amountusd": 340000,
                    "cr9a1_holdtype": "ComplianceHold",
                    "cr9a1_approvedby": "sarah.chen@legal.enterprise.com"
                },
                dataverse_context={
                    "resolved_table": "cr9a1_paymentevent",
                    "skill_applied": "PaymentApprovalWorkflow",
                    "approval_status": "Legal sign-off recorded"
                },
                skill_applied="PaymentApprovalWorkflow"
            )
        },
        {
            "label": "🔴 No Dataverse context — semantic grounding failed",
            "description": "Dataverse couldn't resolve context. Execution blocked.",
            "query": DataverseAgentQuery(
                query_id="dv-003",
                agent_id="copilot-analytics-agent",
                action_type="release_payment_hold",
                entity_class="cr9a1_paymentevent",
                payload={"amount": 50000},
                dataverse_context={}  # Empty — Dataverse grounding failed
            )
        },
    ]

    for test in test_cases:
        print(f"\n{test['label']}")
        print(f"   {test['description']}")

        result = bridge.validate_dataverse_action(test["query"])

        print(f"\n   Dataverse grounded:  {'✅ YES' if result.dataverse_grounded else '❌ NO'}")
        print(f"   SHACL valid:         {'✅ YES' if result.shacl_valid else '❌ NO'}")
        print(f"   Safe to execute:     {'✅ EXECUTE' if result.safe_to_execute else '🚨 BLOCKED'}")
        if result.violations:
            for v in result.violations:
                print(f"   ↳ {v}")

    print("\n" + "=" * 65)
    print("WHAT THIS DEMONSTRATES")
    print("=" * 65)
    print("""
  Test 1: Dataverse understood the ComplianceHold perfectly.
          OWL/SHACL blocked release — no Legal approver.
          Understanding ≠ permission.

  Test 2: Dataverse grounded + Legal approval present.
          Both layers passed. Execution authorised.

  Test 3: Dataverse couldn't resolve context.
          No grounding = no execution. Both layers required.

  Dataverse gives agents business understanding.
  OWL/SHACL gives agents formal constraint enforcement.
  Microsoft ships the first. You build the second.
    """)

if __name__ == "__main__":
    demo()

Part 6: How to Think About Microsoft’s Two Semantic Layers

The practical decision framework for enterprise architects:

Use Fabric IQ as your primary semantic layer if:

  • Your agents primarily work with analytics data in OneLake/Fabric
  • You have DirectLake-formatted semantic models
  • Agent permission modelling (permitted actions) is your primary governance requirement
  • Your workload is read-heavy analytics and BI automation

Use Dataverse as your primary semantic layer if:

  • Your agents primarily work with business process data (CRM, ERP, service management)
  • You’re already running Dynamics 365, Power Apps, or Power Platform
  • Procedural knowledge (Business Skills) from existing workflows is critical agent context
  • You need MCP-based dynamic schema discovery at inference time
  • You cannot invest in a Fabric/DirectLake migration

Use both in a hybrid architecture if:

  • Your enterprise has both analytics workloads (Fabric IQ) and operational workloads (Dataverse)
  • Agent Framework 1.0 is your orchestration layer — it works with both semantic layers
  • Work IQ + Agent 365 bridges the two layers at the intelligence and control plane levels

Add OWL/SHACL on top of both if:

  • Your agents operate cross-platform (Salesforce, ServiceNow, AWS AgentCore)
  • You need formal constraint enforcement that neither semantic layer can express
  • Compliance-sensitive workflows require proof of constraint satisfaction, not just access control

Part 7: What to Watch at Microsoft Build 2026 (June 2)

With Build 2026 in San Francisco one week away, here are the three signals worth watching in the context of this two-layer architecture:

Signal 1: Does Microsoft clarify the Fabric IQ vs Dataverse relationship? The current positioning leaves enterprise architects confused about which semantic layer to invest in. If Build 2026 clarifies that Dataverse is the semantic layer for operational agents and Fabric IQ is the semantic layer for analytics agents — that’s a significant architectural confirmation.

Signal 2: Does Agent 365 become the unified governance layer? Agent 365 — the control plane for registry, access control, and security — is Microsoft’s answer to what Google calls Agent Gateway. If Build 2026 positions Agent 365 as the governance layer that bridges both semantic layers, the Microsoft stack becomes significantly more coherent.

Signal 3: Does Microsoft announce OWL or formal constraint support? Across six platforms in this series, zero have shipped OWL or SHACL. If Microsoft announces formal ontology tooling at Build 2026 — even as a preview — that would be the most significant architectural announcement in enterprise AI governance since Cedar shipped with AgentCore. I’m not expecting it. But it would change the analysis.

The Honest Verdict on Microsoft’s Two Semantic Layers

Microsoft has built something genuinely impressive — a dual semantic layer architecture that covers both the analytics data estate (Fabric IQ) and the operational business data estate (Dataverse), unified by Agent Framework 1.0, Work IQ, and Agent 365.

The Dataverse semantic layer is the more immediately accessible of the two — no DirectLake constraint, no Fabric migration required, already deployed to the majority of Microsoft’s enterprise install base. For most enterprise architects asking “how do my Copilot agents understand our business data?” — the answer is Dataverse, not Fabric IQ.

The gap I’ve documented across six platforms remains. Neither Fabric IQ nor Dataverse’s semantic layer ships formal OWL class hierarchies. Neither ships SHACL constraint enforcement. Both excel at semantic understanding. Neither formally governs semantic authority.

Understanding is what makes agents useful. Governance is what makes agents safe.

Microsoft ships the understanding. You still build the governance.

Resources

If this changed how you think about Microsoft’s two semantic layers, I’d love to hear from you.

👏 Clap if this was useful (up to 50) 💬 Comment: Which Microsoft semantic layer are you actually using — Fabric IQ or Dataverse? Has the DirectLake constraint been a real problem for you? 🔁 Share with any Microsoft architect before Build 2026 on June 2

Follow for the next piece — the complete six-platform semantic layer benchmark, published the week after Build 2026.

GitHub: cloudbadal007 | Substack: badalaiworld.substack.com | X: @CloudyPankaj


메타데이터
post_id
92e2c630a0ef
slug
microsoft-just-shipped-two-semantic-layers-one-of-them-is-quietly-more-powerful-than-fabric-iq-92e2c630a0ef
url
https://medium.com/@cloudpankaj/microsoft-just-shipped-two-semantic-layers-one-of-them-is-quietly-more-powerful-than-fabric-iq-92e2c630a0ef
canonical_url
https://medium.com/@cloudpankaj/microsoft-just-shipped-two-semantic-layers-one-of-them-is-quietly-more-powerful-than-fabric-iq-92e2c630a0ef
author_url
https://medium.com/@cloudpankaj
status
ok
fetched_at
2026-06-09 15:37:30