<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Brick on Gabe Fierro</title><link>https://gtf.fyi/posts/brick/</link><description>Recent content in Brick on Gabe Fierro</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 19 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://gtf.fyi/posts/brick/index.xml" rel="self" type="application/rss+xml"/><item><title>My shortest Brick validation+inference script yet</title><link>https://gtf.fyi/posts/brick/brick-validation-inference-ontoenv-pyshifty/</link><pubDate>Thu, 19 Feb 2026 00:00:00 +0000</pubDate><guid>https://gtf.fyi/posts/brick/brick-validation-inference-ontoenv-pyshifty/</guid><description>&lt;p>My evenings these past few weeks have been spent working on &lt;a href="https://ontoenv.gtf.fyi/">ontoenv&lt;/a> (a dev environment manager for ontologies) and &lt;a href="https://github.com/gtfierro/shifty">shifty&lt;/a> (a vibe-coded SHACL implementation).
They are finally at the stage where I can get a short script working that does both inference and validation of a building model against the 223P SHACL shapes, and I&amp;rsquo;m pretty happy with how it looks!&lt;/p>
&lt;details>
&lt;summary>The example model needs an `owl:imports` statement:&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-turtle" data-lang="turtle">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://www.w3.org/2002/07/owl#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#963">&amp;lt;http://example.com/ontoenv-example/&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#070">Ontology&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#070">imports&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;https://brickschema.org/schema/1.4/Brick&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#888"># etc... rest of your model&lt;/span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;p>Here&amp;rsquo;s the short version of the script:&lt;/p></description></item><item><title>223P Validation Example (improved!)</title><link>https://gtf.fyi/posts/brick/brick-validation-example-improved/</link><pubDate>Thu, 04 Dec 2025 00:00:00 +0000</pubDate><guid>https://gtf.fyi/posts/brick/brick-validation-example-improved/</guid><description>&lt;p>I recommend installing &lt;a href="https://docs.astral.sh/uv/">uv&lt;/a> to handle Python dependencies and versions.&lt;/p>
&lt;p>Here&amp;rsquo;s the new and improved script for doing 223P validation+inference in Python.
This uses the new OntoEnv API to manage ontology dependencies, and I&amp;rsquo;m pretty happy with how it looks now.
(I have one more simplifying change to make to the API that I&amp;rsquo;ll include in the next release; I&amp;rsquo;d like to just write
&lt;code>s223_with_dependencies = env.get_closure(s223_id)&lt;/code> to both get the ontology and its dependencies in one step.)&lt;/p></description></item><item><title>Brick Validation Example (with BuildingMOTIF)</title><link>https://gtf.fyi/posts/brick/brick-validation-example-buildingmotif/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><guid>https://gtf.fyi/posts/brick/brick-validation-example-buildingmotif/</guid><description>&lt;p>We will use the Brick model from the previous post:&lt;/p>
&lt;details>
&lt;summary>Expand for Brick Model&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ttl" data-lang="ttl">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;https://brickschema.org/schema/Brick#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://w3id.org/rec/&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdf:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://www.w3.org/2002/07/owl#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">unit:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://qudt.org/vocab/unit/&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;urn:tutorial/&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#963">&amp;lt;urn:tutorial&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#070">Ontology&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#070">imports&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;https://brickschema.org/schema/1.4/Brick&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#070">imports&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://qudt.org/2.1/vocab/unit&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">building1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#070">Building&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Building 1&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">floor1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#070">Floor&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Floor 1&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">room1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#070">Room&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Room 1&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#070">isPartOf&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">floor1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#070">isLocationOf&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">thermostat1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">thermostat1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">Thermostat&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Room 1 Thermostat&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">hasPoint&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">room1-sp&lt;/span>,&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">sensor1&lt;/span>,&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">room1-occ&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">room1-sp&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">Air_Temperature_Setpoint&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Room 1 Setpoint&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">hasUnit&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">unit:&lt;/span>&lt;span style="color:#070">DEG_F&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">sensor1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">Air_Temperature_Sensor&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Room 1 Temperature&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">hasUnit&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">unit:&lt;/span>&lt;span style="color:#070">DEG_F&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">room1-occ&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">Occupancy_Sensor&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Room 1 Occupancy&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/details>
&lt;p>We first set up the BuidlingMOTIF instance. The easiest thing to do here is create an in-memory instance so you can start fresh each time. Keep in mind that it can take a few seconds to load some
of the larger ontologies, so for &amp;ldquo;real&amp;rdquo; projects you should consider using a persistent instance.&lt;/p></description></item><item><title>Minimal Brick Validation Example (no BuildingMOTIF)</title><link>https://gtf.fyi/posts/brick/minimal-brick-validation-example/</link><pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate><guid>https://gtf.fyi/posts/brick/minimal-brick-validation-example/</guid><description>&lt;p>This document provides a minimal example of how to validate a Brick model in Python without BuildingMOTIF.
I would generally recommend using BuildingMOTIF for this purpose, but this example is useful for understanding the underlying processes.&lt;/p>
&lt;h2 id="brick-model">Brick Model&lt;/h2>
&lt;p>A Brick model is a semantic model of a specific building. It is typically represented in the &lt;a href="https://www.w3.org/TR/turtle/">Turtle&lt;/a> format. Here is an example of a simple Brick model:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ttl" data-lang="ttl">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;https://brickschema.org/schema/Brick#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://w3id.org/rec/&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdf:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://www.w3.org/2002/07/owl#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">unit:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://qudt.org/vocab/unit/&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;urn:tutorial/&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#963">&amp;lt;urn:tutorial&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#070">Ontology&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#070">imports&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;https://brickschema.org/schema/1.4/Brick&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">owl:&lt;/span>&lt;span style="color:#070">imports&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://qudt.org/2.1/vocab/unit&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">building1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#070">Building&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Building 1&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">floor1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#070">Floor&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Floor 1&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">room1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#070">Room&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Room 1&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#070">isPartOf&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">floor1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rec:&lt;/span>&lt;span style="color:#070">isLocationOf&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">thermostat1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">thermostat1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">Thermostat&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Room 1 Thermostat&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">hasPoint&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">room1-sp&lt;/span>,&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">sensor1&lt;/span>,&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">room1-occ&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">room1-sp&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">Air_Temperature_Setpoint&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Room 1 Setpoint&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">hasUnit&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">unit:&lt;/span>&lt;span style="color:#070">DEG_F&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">sensor1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">Air_Temperature_Sensor&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Room 1 Temperature&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">hasUnit&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">unit:&lt;/span>&lt;span style="color:#070">DEG_F&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">room1-occ&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">Occupancy_Sensor&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;Room 1 Occupancy&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For the purpose of validation, the most important part is the 3 lines near the top declaring the ontology and its imports:&lt;/p></description></item><item><title>Point Mapping Overview</title><link>https://gtf.fyi/posts/brick/point-mapping-overview/</link><pubDate>Wed, 21 Jun 2023 00:00:00 +0000</pubDate><guid>https://gtf.fyi/posts/brick/point-mapping-overview/</guid><description>&lt;p>&lt;em>For additional background on Brick, be sure to check out the &lt;a href="posts/brick/getting-started-brick-research/">reading list&lt;/a>&lt;/em>&lt;/p>
&lt;hr>
&lt;p>This document attempts a brief summary of &amp;ldquo;point mapping&amp;rdquo; techniques and technologies,
with a particular emphasis on mapping &lt;em>point labels&lt;/em> from a building management system (BMS)
into a &lt;em>Brick model&lt;/em>.&lt;/p>
&lt;h2 id="what-are-point-labels">What are Point Labels?&lt;/h2>
&lt;p>&lt;u>BMS points&lt;/u> are the I/O elements for a building&lt;label for="" class="margin-toggle sidenote-number">&lt;/label>
&lt;input type="checkbox" id="" class="margin-toggle" />
&lt;span class="sidenote">
 For a good primer on BMS points see &lt;a href="https://www.automatedbuildings.com/news/may09/columns/090415012333calabrese.htm">this article&lt;/a>
&lt;/span>
. They are the identifiers
used by software to read data from the building (e.g. sensor values) and to write
data to the building (e.g. changing setpoints). Points are given labels in the BMS &amp;ndash;
think of these like variable names used by software to perform the read/write actions.
These labels are largely ad-hoc constructions driven by vendor- or site-specific conventions.&lt;/p></description></item><item><title>Getting Started with Brick Research</title><link>https://gtf.fyi/posts/brick/getting-started-brick-research/</link><pubDate>Wed, 17 May 2023 00:00:00 +0000</pubDate><guid>https://gtf.fyi/posts/brick/getting-started-brick-research/</guid><description>&lt;p>&lt;em>This whole document is in-progress &amp;ndash; be sure to check back!&lt;/em>&lt;/p>
&lt;hr>
&lt;h1 id="brick-research-reading-list">Brick Research Reading List&lt;/h1>
&lt;p>So you want to do research on or with Brick &amp;ndash; great!
One common question I get or find myself answering is &amp;ldquo;what background do I need to get myself up to speed with using Brick at a level where I can do research?&amp;rdquo;
This post attempts to answer that question.&lt;/p>
&lt;p>For high-level background, please read through &lt;a href="https://gtf.fyi/papers/fierro-dissertation.pdf">Chapter 2 of my PhD thesis&lt;/a> &amp;ndash; this is a decent overview of the information detailed below.&lt;/p></description></item><item><title>Brick Timeseries Data</title><link>https://gtf.fyi/posts/brick/brick-timeseries-data/</link><pubDate>Sun, 02 Feb 2020 17:15:14 -0700</pubDate><guid>https://gtf.fyi/posts/brick/brick-timeseries-data/</guid><description>&lt;h1 id="brick-timeseries-access">Brick Timeseries Access&lt;/h1>
&lt;p>Here is a &amp;ldquo;completely&amp;rdquo; modeled zone air temperature sensor modeled in Brick&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-turtle" data-lang="turtle">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;https://brickschema.org/schema/1.2/Brick#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">tag:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;https://brickschema.org/schema/1.2/BrickTag#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#080;font-weight:bold">@prefix&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#963">&amp;lt;urn:bldg#&amp;gt;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">x&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#339;font-weight:bold">a&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">Zone_Air_Temperature_Sensor&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">hasUnit&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">unit:&lt;/span>&lt;span style="color:#070">DEG_C&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">rdfs:&lt;/span>&lt;span style="color:#070">label&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="background-color:#fff0f0">&amp;#34;SODA1R410_ARS&amp;#34;&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#888"># below, we will ignore the following properties as they&lt;/span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#888"># are orthogonal to the timeseries modeling discussion&lt;/span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">isPointOf&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">:&lt;/span>&lt;span style="color:#070">hvac_zone_1&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#888"># automatically added&lt;/span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">brick:&lt;/span>&lt;span style="color:#070">hasTag&lt;/span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">tag:&lt;/span>&lt;span style="color:#070">Zone&lt;/span>,&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">tag:&lt;/span>&lt;span style="color:#070">Air&lt;/span>,&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">tag:&lt;/span>&lt;span style="color:#070">Temperature&lt;/span>,&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#0e84b5;font-weight:bold">tag:&lt;/span>&lt;span style="color:#070">Sensor&lt;/span>&lt;span style="color:#bbb"> &lt;/span>;&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>.&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>How do we connect the temperature sensor &lt;code>x&lt;/code> to a timeseries database? And what are the concerns we will need to handle?&lt;/p></description></item><item><title>Ontology Evaluation</title><link>https://gtf.fyi/posts/brick/ontology-evaluation/</link><pubDate>Sun, 12 Jan 2020 17:14:12 -0700</pubDate><guid>https://gtf.fyi/posts/brick/ontology-evaluation/</guid><description>&lt;p>This document establishes an empirical methodology for evaluating the 223 standard in order to codify the properties of 223 that make it successful and suitable for its intended use cases. We draw some inspiration from &lt;a href="https://dl.acm.org/doi/10.1145/2821650.2821669">this paper&lt;/a>, which established the empirical metadata evaluation methodology that drove development of the Brick ontology. The original &lt;a href="https://dl.acm.org/doi/abs/10.1145/2993422.2993577">Brick paper&lt;/a> lays out three general properties of an ontology that make it successful for the building domain: completeness, extensibility and usability. We define each of these terms in the context of 223 and outline the specific evaluation procedures used.&lt;/p></description></item></channel></rss>