Things
Property
A freezer read 8 and the food spoiled. The number was fine. Nobody said 8 what. A property is the value plus its meaning.
A freezer sent one reading: 8.
The monitor did nothing. By morning the food was spoiled.
The number was fine. 8 is safe in Fahrenheit, which the old sensor used, and a disaster in Celsius, which the new one used. Nobody told the system which. The column just said temp = 8. A column stores a number. It has no idea what the number means.
A number is only half a fact
8 what? Celsius, Fahrenheit, boxes on a shelf? Until you say, the number could mean any of these. A property sets the meaning: the type (it is a number) and the unit (Celsius). Same 8, but now it means one thing instead of three.
Why this matters for an AI agent
Point an AI agent at a raw column of numbers and it does what the freezer monitor did: it trusts the 8 as it is and moves on. It cannot tell 8°C from 8°F, or the word "cold" from a real reading, because the column never said. Give it properties, with types and units, and it stops guessing what a value means.
Bad data flows straight through a column. A property stops it before it gets in.
Try being the property for a second. Type a reading, then flip the unit the sensor reports in, and watch the same 8 change meaning.
The property
freezer temperature — a number, in °C, between −40 and 60, safe at or below −5.
A column would store whatever you type. A property asks two more questions first: does this count as a temperature, and what does it mean in the declared unit?
Check yourself
A GPS reports speed: 65. One app reads it as km/h, another as mph. The value is identical. What actually went wrong?
Where the property lives in Fabric
In Microsoft Fabric a property lives on the entity type: you declare temperature once, as a number in Celsius, and every source binds to that one meaning. That declaration is only a plan until the property is bound to a real column in a OneLake source, a lakehouse table, an eventhouse KQL table, or a Power BI semantic model. The binding is what connects the declared meaning to real values.
Because the meaning lives on the type, so do its rules. Property-level constraints, required, ranges, uniqueness, are declared at the concept layer and checked against the bound data, rather than rewritten in every pipeline that feeds it. As of July 2026 the ontology item itself is still in preview, while the graph engine and the data agent that read it are generally available, so expect the tools you use to build it to change more than the idea itself.
The one trap
Do not call a column a property. A column is a bucket that takes whatever you pour in: numbers, typos, blanks, wrong units. A property is the label on the bucket that says what belongs there. Skip it and every bad value reaches your dashboards and your agent, which trust it completely.
You have named a thing and described it. Next comes the most important decision, the one that says when two records are the same thing, and when they are two different things: the key.
Do it yourself
Build this step in the interactive Ontology Lab.
Open the lab →Milestone
Finished this concept? Mark it learned to track your progress.