Ravi Chandu Edru/ learn
Ontology & Fabric IQ

Grounding

Data binding

You defined Customer, gave it a name and a region, and it points at nothing. A binding is the wire that makes the word mean a real thing.

5 min read

You spent the morning defining Customer. It has a name. It has a region. Maybe a tier. On the canvas it looks finished, a clean little card with three neat property slots.

Ask it anything and nothing comes back. How many customers are in the Northeast? Silence. Name one. It cannot. The card is beautiful and completely empty, because right now "Customer" is a word. It describes a shape, and the shape points at nothing.

Somewhere in your lakehouse there are eight thousand real customers sitting in a table. The concept and the rows are both right there. They just have no wire between them.

The universal idea · true in any system

A word until you point it at something

A concept is only a symbol. A symbol means something only when it points at a real thing. "Customer" the word and Acme Foods the real company are two different things. The binding is the arrow between them.

So a binding is small and specific. It does not say "connect Customer to the database" in some vague way. It says: the name property reads from the cust_name column, the region property reads from home_region. One property, one column, each wire drawn on purpose.

CONCEPTCustomernameregiontierONELAKE TABLEcustomerscust_namehome_regiontier_codesignup_tsbinds to?unbound
Figure 1A binding is a wire: this property maps to that column. Name and region point at real columns, so they will carry values. Tier is left unbound, so it stays empty on every instance no matter how good the data is.

Notice the property you leave alone. An unbound property is not zero or blank. It is nothing at all, a slot with no source, and no amount of good data will fill it because nothing ever told it where to look. Binding is the difference between a slot that can hold a value and a slot that will.

Bind it, and the instances appear

Here is the payoff. It is less dramatic than people expect. You do not create instances. You do not type in Acme Foods, then Globex, then Initech, one card at a time. You draw the wires once, and the instances fall out of the rows.

BOUND ROWSINSTANCESAcme Foods · Northeast · goldCustomerAcme Foods · Northeast · goldGlobex · West · silverCustomerGlobex · West · silverInitech · South · goldCustomerInitech · South · gold
Figure 2Once the concept is bound, nobody types the instances. Every matching row becomes one instance with its bound properties filled in. Three rows in the table, three Customer instances out.

Every matching row becomes one instance. The bound properties get their values from the bound columns, row by row, automatically. Add a row to the table tomorrow and a new instance appears already filled. Fix a value and the instance updates. The concept was a template with empty slots. Binding fills those slots with the live data.

Try it. Pick a property, pick the column that feeds it, and watch a single sample instance fill. Then leave one property unbound on purpose and see what "empty" really looks like.

Wire the concept to its data

Pick a property, then pick the column that feeds it. Watch a sample Customer instance fill in. Leave one unbound and see it stay empty.

Concept · Customer

Instance · from row C-8842

Customer

name
empty
region
empty
tier
empty

OneLake table · customers

The concept is defined and completely empty. It points at nothing yet.

Check yourself

A hospital models a Patient concept with a birthdate property. The patients table has a bday_iso column full of correct dates. Nobody binds birthdate to it. What can the AI agent tell you about patient ages?

In Microsoft Fabric IQ · how it shows up

Where the wire lands in Fabric

In Fabric IQ, this wire has a name and a home. A data binding maps an entity type, and each of its properties, to a source in your Fabric tenant: a lakehouse table or an eventhouse (KQL) table in OneLake, or a Power BI semantic model. The entity type stays exactly the same. The binding is what decides where its instances come from.

ENTITY TYPECustomername · region · tierFABRIC SOURCESLakehouse tableEventhouse (KQL) tableSemantic modeldata binding
Figure 3In Fabric IQ the binding maps the entity type to a source in your Fabric tenant: a lakehouse table or an eventhouse KQL table in OneLake, or a Power BI semantic model. The type stays the same. Where its instances come from is the binding's job.

Binding is the step that turns an abstract type into concrete entity instances. Before it, the ontology is a vocabulary: Customer, Order, Shipment, the properties, the relationships, all declared and all empty. After it, the same ontology materializes into a knowledge graph over your real rows, without copying the data out of OneLake. That graph is what a data agent (Fabric's name for an AI agent grounded in your data) walks over when it answers a question. It does multi-hop reasoning over the bound instances. It does not guess. In the lab here we simulate the same wiring over uploaded CSVs, but the shape is identical. As of July 2026 Fabric IQ is in preview, so the exact details may change. Hold on to the idea that lasts: a type is empty until a binding points it at real data.

The takeaway · carry this into every model

The one trap

Do not mistake a binding for a promise. The wire says where a value comes from. It says nothing about whether that value is any good. Bind region to a column full of blanks, a few wrong country codes, and three different spellings of "Northeast", and every instance copies that mess exactly. The binding did its job. It pointed at the column you named, and that column was full of bad data.

So binding answers where, and it opens the very next question: is the data in there good enough to become an instance? That is data quality, and it is where we go next.

Do it yourself

Build this step in the interactive Ontology Lab.

Open the lab →

Fabric IQ is in preview; details checked 2026-07-15 and may change.

Milestone

Finished this concept? Mark it learned to track your progress.

Saved in this browser.