<script data-pm-proxy="intercept"></script><?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Sergey Vasiliev]]></title><description><![CDATA[Head of Graph Intelligence & AI Integration | Data Governance Council Member at Wolters Kluwer | PhD]]></description><link>https://sergeyvasiliev.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!2BfI!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b720928-0c2f-42b7-aa2d-92d457abbcbe_1098x1098.jpeg</url><title>Sergey Vasiliev</title><link>https://sergeyvasiliev.substack.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 04 Sep 2026 15:59:38 GMT</lastBuildDate><atom:link href="/__u/sergeyvasiliev.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Sergey Vasiliev]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[sergeyvasiliev@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[sergeyvasiliev@substack.com]]></itunes:email><itunes:name><![CDATA[Sergey Vasiliev]]></itunes:name></itunes:owner><itunes:author><![CDATA[Sergey Vasiliev]]></itunes:author><googleplay:owner><![CDATA[sergeyvasiliev@substack.com]]></googleplay:owner><googleplay:email><![CDATA[sergeyvasiliev@substack.com]]></googleplay:email><googleplay:author><![CDATA[Sergey Vasiliev]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Knowledge Graph, Memory Graph and Context Graph: Three Roles in One Architecture]]></title><description><![CDATA[What they have in common, where they differ and when each one is useful]]></description><link>https://sergeyvasiliev.substack.com/p/knowledge-graph-memory-graph-and</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/knowledge-graph-memory-graph-and</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Mon, 17 Aug 2026 12:32:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Re3g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Table of Contents</h2><ol><li><p>Introduction</p></li><li><p>The Three Roles at a Glance</p></li><li><p>Knowledge Graph: Governed Meaning</p></li><li><p>Memory Graph: Retained Experience</p></li><li><p>Context Graph: The Decision-Time View</p></li><li><p>How the Three Roles Work Together</p></li><li><p>One Graph Database or Several Data Stores?</p></li><li><p>When Agent Memory Becomes an Enterprise Capability</p></li><li><p>Summary</p></li><li><p>References</p></li></ol><div><hr></div><h1>1. Introduction</h1><p>Enterprise AI architecture is acquiring graphs at an impressive rate.</p><p>We already had knowledge graphs. We now have memory graphs, context graphs, reasoning graphs and decision graphs. Put them into one architecture diagram and it can look as though every AI agent needs several new graph databases before it can answer a useful question.</p><p>From a Labelled Property Graph, LPG,  practitioner&#8217;s point of view, this is the wrong place to start.</p><p>Knowledge graph, memory graph and context graph should first be understood as three architectural roles:</p><blockquote><p><strong>A knowledge graph represents governed enterprise knowledge.</strong></p><p><strong>A memory graph represents retained experience around that knowledge.</strong></p><p><strong>A context graph represents the information selected for one task, actor, purpose and point in time.</strong></p></blockquote><p>The three roles share connected entities, relationships, time and provenance. They differ in authority, write path, lifecycle, scope and persistence.</p><p>Agent memory is also broader than a memory graph. It may include session state, source events, documents, vector indexes, workflow checkpoints, procedures and executable skills. A memory graph is the connected representation used when identity, relationships, time and provenance materially affect retrieval or action.</p><p>This article develops several ideas from my previous publications. <em>A Practical Architecture for LLM Memory</em> examined the role of an LPG in long-term agent memory [1]. <em>Enterprise Knowledge Graphs vs Applied Knowledge Graphs</em> separated reusable enterprise meaning from application-level decision support [2]. <em>The Ontology Trap</em> argued that generated structure should remain a proposal until it has passed validation and governance [3].</p><p>The purpose here is narrower. It is to explain what the three graph roles have in common, where they differ and how to use them without turning three useful terms into three unnecessary platforms.</p><h1>2. The Three Roles at a Glance</h1><p>&#8220;Context graph&#8221; does not yet have one stable industry meaning. It has been used for context-enriched knowledge graphs, operational event graphs and graphs assembled for runtime decisions [9].</p><p>In this article, a <strong>context graph is a task-specific runtime projection of knowledge, memory, live state and policy</strong>. It is a structured decision context, not another enterprise source of truth.</p><p>All three roles operate over connected entities and relationships. Each depends on some combination of identity, time, provenance and controlled meaning. Their main differences concern who writes the information, how much authority it carries, how long it remains and how widely it is reused.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!wahw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!wahw!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png 424w, /__u/substackcdn.com/image/fetch/$s_!wahw!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png 848w, /__u/substackcdn.com/image/fetch/$s_!wahw!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png 1272w, /__u/substackcdn.com/image/fetch/$s_!wahw!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!wahw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:370202,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/211542489?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!wahw!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png 424w, /__u/substackcdn.com/image/fetch/$s_!wahw!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png 848w, /__u/substackcdn.com/image/fetch/$s_!wahw!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png 1272w, /__u/substackcdn.com/image/fetch/$s_!wahw!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7859569-2883-4193-b69d-bd22b526b5cc_2401x1350.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>What they have in common</h2><p>The same canonical entity can appear in governed knowledge, retained experience and the current context without being recreated three times.</p><p>For example, one <code>LegalEntity</code> node may be connected to:</p><ul><li><p>accepted ownership relationships in the knowledge graph</p></li><li><p>previous screening claims and analyst decisions in the memory graph</p></li><li><p>the evidence selected for the current review in the context graph</p></li></ul><p>The shared foundation includes more than the LPG model itself. It also includes governance:</p><ul><li><p>canonical identity</p></li><li><p>controlled relationship meaning</p></li><li><p>provenance</p></li><li><p>temporal interpretation</p></li><li><p>access rules</p></li><li><p>lifecycle management</p></li></ul><p>The LPG provides nodes, relationships and properties. It does not decide whether an assertion is governed, unreviewed, rejected or merely relevant to the current task. Those distinctions must be designed into the architecture.</p><h1>3. Knowledge Graph: Governed Meaning</h1><p>Within this architecture, the knowledge graph holds governed enterprise meaning.</p><p>Governed meaning includes the identities, definitions, relationships and rules that the organisation has accepted for reuse under explicit ownership and lifecycle controls.</p><p>That is an assigned architectural role, not a universal definition of every knowledge graph. Some knowledge graphs also contain extracted or disputed information. The approach used here keeps those less certain assertions in the memory graph until a defined governance process accepts them.</p><p>The LPG fragments in this article are illustrative patterns rather than complete production schemas.</p><p>A simplified beneficial ownership model might contain:</p><pre><code><code>(:LegalEntity)-[:REGISTERED_IN]-&gt;(:Jurisdiction)
(:LegalEntity)-[:HAS_BENEFICIAL_OWNER]-&gt;(:Person)
(:EntityType)-[:SUBJECT_TO]-&gt;(:ComplianceObligation)
(:ComplianceObligation)-[:DEFINED_BY]-&gt;(:RegulatorySource)</code></code></pre><p>This structure can support questions such as:</p><ul><li><p>Which canonical entity does this identifier represent?</p></li><li><p>Which person is accepted as a beneficial owner?</p></li><li><p>Which obligation applies to this type of entity?</p></li><li><p>Which regulatory source defines that obligation?</p></li><li><p>During which period was the ownership relationship valid?</p></li></ul><p>The value does not come from representing documents as nodes. It comes from connecting identity, relationships, evidence and applicable rules in a form that several workflows can reuse.</p><h2>The domain semantic contract</h2><p>A knowledge graph needs a <strong>domain semantic contract</strong>.</p><p>That contract governs the wider graph model. It may define:</p><ul><li><p>canonical identifiers</p></li><li><p>approved labels and relationship types</p></li><li><p>valid source and target patterns</p></li><li><p>required provenance</p></li><li><p>temporal expectations</p></li><li><p>ownership</p></li><li><p>validation requirements</p></li><li><p>permitted lifecycle transitions</p></li></ul><p>The <strong>Minimum Semantic Contract</strong> is narrower. It defines the smaller subset of labels, relationships, evidence conditions and temporal rules that a particular runtime is allowed to trust [4].</p><p>The distinction is practical.</p><p>The domain semantic contract may describe everything the graph can represent. The Minimum Semantic Contract describes what one agent or application may safely use.</p><p>Database constraints can enforce part of the model. The ISO GQL standard defines a language for property graphs, while graph products provide implementation-specific constraints and privileges [10][11]. These features help to enforce structure, but they do not decide what the enterprise accepts as true or suitable for use.</p><h2>Domain rules, runtime policy and access control</h2><p>Three different forms of control should remain separate.</p><p>A <strong>domain rule</strong> describes subject-matter logic, such as the evidence needed to establish beneficial ownership.</p><p>A <strong>runtime policy</strong> controls how an agent may retrieve, combine or act on information.</p><p>An <strong>access control</strong> determines who may read or write particular information.</p><p>A fourth concern, <strong>purpose limitation</strong>, determines what authorised information may influence a particular task.</p><p>An analyst may be allowed to view a document but still be prohibited from using it as the sole basis for an automated ownership decision.</p><h2>An extracted claim is not governed knowledge</h2><p>Suppose an extraction agent processes a filing and proposes that a person controls a legal entity.</p><p>The document contains a similar name and a shared address. That may justify further investigation, but it does not yet justify this governed relationship:</p><pre><code><code>(:LegalEntity)-[:HAS_BENEFICIAL_OWNER]-&gt;(:Person)</code></code></pre><p>The initial result should remain a claim linked to its source and review:</p><pre><code><code>(:OwnershipClaim)-[:SUBJECT]-&gt;(:LegalEntity)
(:OwnershipClaim)-[:OBJECT]-&gt;(:Person)
(:OwnershipClaim)-[:WAS_DERIVED_FROM]-&gt;(:SourceSpan)
(:AnalystDecision)-[:REVIEWS]-&gt;(:OwnershipClaim)</code></code></pre><p>An observation records what a source presented. A claim is a proposition extracted or inferred from that observation. Evidence supports or challenges the claim. Only after validation and governance should it become an accepted enterprise assertion.</p><p>The accepted claim may remain as the evidence-bearing record. A derived edge can then provide a simpler path for operational traversal.</p><p>This avoids a common mistake. An agent-generated relationship and a governed relationship may look identical in an LPG unless their different authority and lifecycle are made explicit.</p><p>The operating principle remains:</p><blockquote><p><strong>AI proposes. Systems validate. Analysts decide. The graph records the decision.</strong></p></blockquote><h2>Time belongs to the assertion</h2><p>A relationship may be governed and still be valid only for a defined period.</p><p>A legal entity can exist for decades, while one ownership relationship remains valid for six months. Dates therefore belong to the relationship or claim they describe, not only to the entity.</p><p>At minimum, the model should distinguish:</p><ul><li><p><strong>valid time</strong>, when the assertion was true or applicable in the domain</p></li><li><p><strong>transaction time</strong>, when that version was held by the system</p></li></ul><p>This allows the graph to answer both current and historical questions without mixing incompatible states [6].</p><h1>4. Memory Graph: Retained Experience</h1><p>A memory graph records experience around governed entities and relationships.</p><p>It may connect:</p><pre><code><code>(:Episode)
(:Observation)
(:Claim)
(:Retrieval)
(:ToolCall)
(:AnalystDecision)
(:Action)
(:Outcome)
(:Feedback)</code></code></pre><p>In the beneficial ownership example, the graph might contain:</p><pre><code><code>(:ReviewCase)-[:CONCERNS]-&gt;(:LegalEntity)
(:Retrieval)-[:RETURNED]-&gt;(:SourceVersion)
(:OwnershipClaim)-[:WAS_DERIVED_FROM]-&gt;(:SourceSpan)
(:AnalystDecision)-[:REVIEWS]-&gt;(:OwnershipClaim)
(:Outcome)-[:FOLLOWS]-&gt;(:AnalystDecision)</code></code></pre><p>The knowledge graph can show the accepted ownership structure and the obligation that applies.</p><p>The memory graph can show which source version was retrieved, what claim the agent produced, why the analyst accepted or rejected it, and what happened afterwards.</p><p>That additional history helps the system avoid repeating failed or misleading patterns.</p><h2>Agent memory is broader than the graph</h2><p>A memory graph is one component of agent memory.</p><p>The broader capability may also use:</p><ul><li><p>session state</p></li><li><p>the source event record</p></li><li><p>lexical and vector indexes</p></li><li><p>documents</p></li><li><p>workflow checkpoints</p></li><li><p>controlled procedures</p></li><li><p>executable skills</p></li></ul><p>Graph structure becomes useful when relationships between events, entities, claims, decisions and outcomes affect later retrieval or action.</p><p>A preference such as &#8220;show the result as a table&#8221; may need only a profile record. A history of disputed ownership claims, source versions and analyst decisions has a much stronger graph shape.</p><h2>A technical log is not automatically memory</h2><p>A log may show that a search tool returned ten documents.</p><p>Useful memory connects that event to its purpose and outcome:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!eDHo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!eDHo!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png 424w, /__u/substackcdn.com/image/fetch/$s_!eDHo!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png 848w, /__u/substackcdn.com/image/fetch/$s_!eDHo!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eDHo!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!eDHo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:498183,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/211542489?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!eDHo!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png 424w, /__u/substackcdn.com/image/fetch/$s_!eDHo!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png 848w, /__u/substackcdn.com/image/fetch/$s_!eDHo!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eDHo!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709d4d26-4fb8-4478-a00f-a9b33c481e7d_2400x1350.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The graph adds value when these connections improve later retrieval, reconstruction or explanation.</p><p>Recent research treats agent memory as a lifecycle that includes writing, storing, retrieving, updating and forgetting [13]. Systems such as APEX-MEM and Zep use temporal graph structures to connect episodes, claims and changing information [14][15].</p><p>These systems provide useful patterns, but they do not show that every memory problem needs a graph database.</p><h2>The source event record</h2><p>The original interaction history should normally remain available in a <strong>source event record</strong>.</p><p>This record preserves:</p><ul><li><p>what the agent received</p></li><li><p>what a tool returned</p></li><li><p>which action was requested</p></li><li><p>what the analyst accepted or rejected</p></li><li><p>what outcome was observed</p></li></ul><p>It is authoritative for the interaction itself, not automatically for the underlying domain assertion.</p><p>A record showing that an ownership claim was retrieved proves that the claim was retrieved. It does not prove that the person was a beneficial owner.</p><p>Keeping the source event record independently of the derived memory graph allows the graph to be rebuilt when extraction logic, identity resolution or the semantic contract changes.</p><h2>A proposed minimum memory contract</h2><p>There is no universal schema that fits every observation, claim, action and outcome.</p><p>A practical proposal would give each durable memory:</p><ul><li><p>a stable identifier</p></li><li><p>a controlled memory type</p></li><li><p>authenticated origin</p></li><li><p>provenance</p></li><li><p>user, case, tenant or application scope</p></li><li><p>relevant time information</p></li><li><p>lifecycle and validation state</p></li><li><p>source authority</p></li><li><p>retention rules</p></li><li><p>the contract version under which it was created</p></li></ul><p>Different memory types would then add their own fields.</p><p>An inferred ownership claim may require confidence, source spans and an extractor version. A directly recorded tool call may not need confidence. An outcome may concern several entities rather than one subject.</p><p>The proposal should remain extensible rather than forcing every memory into one flat record.</p><p>Lifecycle, validation, source authority, permitted use and retention should also remain separate. A memory can be current but unreviewed, rejected but retained for audit, or historically valid but no longer applicable to the present case.</p><p>Compressing all these meanings into one <code>status</code> property usually creates ambiguity.</p><h2>Remembering rejection and failure</h2><p>Useful memory includes more than successful actions.</p><p>It should preserve that:</p><ul><li><p>a claim was rejected</p></li><li><p>a source version was superseded</p></li><li><p>an extraction pattern produced a false match</p></li><li><p>a decision required analyst review</p></li><li><p>an action was prohibited for the stated purpose</p></li></ul><p>I have described this category as <strong>Negative Semantic Knowledge</strong> [5].</p><p>It is different from missing information. The system explicitly knows that a claim, source or action should not be used in a particular way.</p><p>The retrieval layer must enforce that knowledge. Recording a rejection while continuing to return the rejected claim as current information preserves history but does not create reliable memory.</p><h2>Quality starts at the write boundary</h2><p>Persistent memory creates a feedback loop. A weak claim stored today may influence many later decisions.</p><p>Research has shown that agents often follow retrieved experience even when it is incorrect or only superficially similar [16]. Other work has demonstrated memory-poisoning and privacy risks [17][18].</p><p>A controlled write path should therefore preserve source origin, authenticate the writer, distinguish observation from inference and quarantine unreviewed claims.</p><p>Repeated retrieval does not turn an uncertain claim into trusted knowledge.</p><h1>5. Context Graph: The Decision-Time View</h1><p>A context graph is the structured decision context assembled for the current task.</p><p>It combines selected parts of:</p><ul><li><p>the knowledge graph</p></li><li><p>the memory graph</p></li><li><p>live operational state</p></li><li><p>runtime policy</p></li><li><p>access and purpose restrictions</p></li></ul><p>Live operational state means information that may change during the workflow, such as the current case status, the documents already reviewed, the latest screening result or the actions already attempted.</p><p>For a beneficial ownership review, the complete environment may contain many entities, filings, claims, previous decisions and regulatory obligations.</p><p>The context graph should include only what is:</p><ul><li><p>relevant to the entity under review</p></li><li><p>valid at the review date</p></li><li><p>applicable to the jurisdiction and entity type</p></li><li><p>available to the analyst</p></li><li><p>permitted for the current purpose</p></li></ul><p>It may therefore contain the accepted ownership path, one unresolved claim, the source versions supporting each assertion, a previous rejection reason and the obligation currently in force.</p><h2>The context graph is not the prompt</h2><p>The context graph is a structured decision context.</p><p>It may be delivered to an agent as:</p><ul><li><p>selected graph paths</p></li><li><p>structured records</p></li><li><p>source excerpts</p></li><li><p>JSON</p></li><li><p>citations</p></li><li><p>a concise evidence summary</p></li></ul><p>The prompt or tool response is the delivery format.</p><p>GraphRAG creates value through better selection and reconstruction, not by placing a larger graph-shaped payload into the model context [7][8].</p><h2>Context is usually temporary</h2><p>Most context graphs exist for one task or run.</p><p>Their contents change when the entity, analyst, purpose, time or policy changes. Permanent <code>RELEVANT_TO</code> relationships are therefore often misleading.</p><p>A source relevant to one review date may be outdated for another. Information available to one analyst may be restricted for another. A previously useful claim may have been superseded.</p><p>Where audit or replay is required, the system can retain a <strong>Context Snapshot</strong>.</p><p>A useful snapshot records:</p><ul><li><p>the exact source versions and graph assertions selected</p></li><li><p>the relevant valid and transaction times</p></li><li><p>the runtime policy and Minimum Semantic Contract versions</p></li><li><p>the access and purpose decisions</p></li><li><p>the retrieval and filtering parameters</p></li><li><p>the actor and task</p></li></ul><p>A list of mutable node identifiers is not enough. Historical reconstruction requires versioned or otherwise stable content.</p><h1>6. How the Three Roles Work Together</h1><p>The three roles form a lifecycle rather than a simple hierarchy.</p><p>Four inputs contribute to context assembly:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!em3-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!em3-!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png 424w, /__u/substackcdn.com/image/fetch/$s_!em3-!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png 848w, /__u/substackcdn.com/image/fetch/$s_!em3-!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png 1272w, /__u/substackcdn.com/image/fetch/$s_!em3-!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!em3-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:135838,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/211542489?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!em3-!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png 424w, /__u/substackcdn.com/image/fetch/$s_!em3-!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png 848w, /__u/substackcdn.com/image/fetch/$s_!em3-!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png 1272w, /__u/substackcdn.com/image/fetch/$s_!em3-!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cf8318-1cac-42e2-b2e2-1db7e606f3c8_1601x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Governed sources contribute accepted knowledge. Agent interactions and analyst decisions contribute experience. Live state shows what is happening in the current workflow. Runtime policy and access controls determine what may be retrieved and how it may be used.</p><p>Context assembly brings these inputs together without treating them as equally authoritative.</p><p>Consider an analyst reviewing the ownership of a legal entity.</p><p>The knowledge graph contains an accepted owner and the relevant compliance obligation. The memory graph records that an earlier agent proposed another owner based only on a shared service-provider address. An analyst rejected that claim and recorded the reason.</p><p>For the current task, the context graph includes the accepted ownership path, the rejected claim, its supporting source and the previous rejection reason. The agent can then avoid repeating the same weak inference.</p><p>The decision creates new experience, which enters the source event record and may update the memory graph.</p><p>Most experience remains memory. Some repeated and validated experience may justify a change to governed knowledge.</p><p>Suppose several rejected claims show that the same extraction pattern repeatedly treats a service-provider address as evidence of control. After review, the organisation may add a governed rule stating that the address alone is insufficient.</p><p>The memory graph reveals the pattern. The knowledge graph records the accepted rule.</p><h1>7. One Graph Database or Several Data Stores?</h1><p>Knowledge graph, memory graph and context graph are logical roles. They are not procurement instructions.</p><p>A knowledge graph and memory graph can share one graph database when they have:</p><ul><li><p>common canonical identifiers</p></li><li><p>compatible access controls</p></li><li><p>manageable write volumes</p></li><li><p>similar availability requirements</p></li><li><p>compatible retention rules</p></li><li><p>clear ownership</p></li></ul><p>One database might contain:</p><pre><code><code>Knowledge:
LegalEntity, Person, Jurisdiction, ComplianceObligation

Memory:
Episode, OwnershipClaim, AnalystDecision, Outcome

Audit:
Run, ContextSnapshot</code></code></pre><p>Labels, relationship types and service APIs can preserve modelling boundaries. They do not create security boundaries on their own.</p><p>A label such as <code>:RestrictedClaim</code> does not prevent a database user from reading the node. Security requires explicit authentication, authorisation and graph privileges [12].</p><p>Separate data stores become reasonable when operational requirements differ. Memory may have a much higher write volume than governed knowledge. It may require shorter retention, stronger tenant isolation or more frequent deletion. Generated claims may also need to remain quarantined from accepted assertions.</p><p>Physical separation does not remove the need for shared identity. Each store should use the same durable business identifiers even when it maintains its own local nodes.</p><p>A context graph rarely needs its own database. It is normally assembled for a task and discarded afterwards. When persistence is required, a Context Snapshot can be retained without creating a new enterprise context master.</p><p>Some agent memory does not need a graph at all.</p><p>A preferred output format may belong in a profile record. A workflow stage may belong in a transactional table. A controlled procedure may remain a versioned document. Conversation history may be stored in an event stream. Lexical or vector retrieval may be sufficient when relationships do not materially change the result.</p><p>The presence of an AI agent does not make every persistence problem graph-shaped.</p><h1>8. When Agent Memory Becomes an Enterprise Capability</h1><p>Agent memory is becoming an important enterprise capability.</p><p>Long-running agents need to preserve observations, recognise corrections, reuse relevant experience and maintain continuity across sessions. They also need controlled ways to write, update and forget memory.</p><p>This does not always require an enterprise memory service.</p><p>Three decisions should be made independently.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!LXHT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!LXHT!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png 424w, /__u/substackcdn.com/image/fetch/$s_!LXHT!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png 848w, /__u/substackcdn.com/image/fetch/$s_!LXHT!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LXHT!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!LXHT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173733,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/211542489?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!LXHT!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png 424w, /__u/substackcdn.com/image/fetch/$s_!LXHT!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png 848w, /__u/substackcdn.com/image/fetch/$s_!LXHT!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LXHT!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fc60e87-f778-4929-8f39-ee359eaeafdf_1601x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A shared enterprise memory service becomes justified when several agents need the same experience, identity resolution must remain consistent, retention and deletion require common governance, and decisions need cross-application audit.</p><p>For one assistant remembering a small set of display preferences, this would be excessive.</p><p>A sensible progression is:</p><ol><li><p>session state</p></li><li><p>simple durable memory</p></li><li><p>application-scoped memory graph</p></li><li><p>shared enterprise memory service</p></li></ol><p>The architecture should move to the next stage only when the earlier one can no longer meet the requirement.</p><h2>The graph break-even point</h2><p>A graph becomes more credible when several conditions are present:</p><ol><li><p>Correct retrieval or reconstruction requires multi-hop relationships.</p></li><li><p>Identities vary across systems or sessions.</p></li><li><p>Relevant relationships change over time.</p></li><li><p>Provenance affects whether information can be trusted.</p></li><li><p>Previous actions and outcomes affect the next decision.</p></li><li><p>Several applications reuse the connected experience.</p></li></ol><p>This is a design test rather than a benchmark.</p><p>The economic question remains:</p><blockquote><p><strong>Does the improvement justify identity resolution, graph modelling, extraction, governance, security, reprocessing and operational cost?</strong></p></blockquote><h1>9. Summary</h1><p>Knowledge graph, memory graph and context graph use similar connected-data foundations, but they serve different roles.</p><p>The <strong>knowledge graph</strong> represents governed enterprise knowledge. It connects canonical identities, accepted assertions, relationships and domain rules.</p><p>The <strong>memory graph</strong> represents retained experience. It connects observations, claims, actions, decisions, outcomes and feedback. It is one part of the wider agent-memory capability.</p><p>The <strong>context graph</strong> represents the structured decision context selected for one task, actor, purpose and point in time.</p><p>They can share canonical identifiers and graph technology. They may even share one database. Their authority, lifecycle and scope should remain distinct.</p><p>Five practical rules follow:</p><ol><li><p><strong>Keep governed knowledge separate from agent-generated claims.</strong></p></li><li><p><strong>Link memory to canonical identities instead of remastering them.</strong></p></li><li><p><strong>Build context for a task instead of storing permanent relevance.</strong></p></li><li><p><strong>Use separate data stores only when security, workload, retention or ownership requires them.</strong></p></li><li><p><strong>Introduce graph structure only when relationships, time and provenance materially improve the result.</strong></p></li></ol><p>Most organisations do not need three new graph platforms.</p><p>They need governed knowledge, trustworthy experience and a context assembly process that knows the difference.</p><h1>10. References</h1><h2>Previous publications</h2><ol><li><p>Sergey Vasiliev. <em><a href="/__u/sergeyvasiliev.substack.com/p/a-practical-architecture-for-llm">A Practical Architecture for LLM Memory: LPG as the Adaptive Knowledge Cache</a></em>. 29 November 2025.</p></li><li><p>Sergey Vasiliev. <em><a href="/__u/sergeyvasiliev.substack.com/p/enterprise-knowledge-graphs-vs-applied">Enterprise Knowledge Graphs vs Applied Knowledge Graphs: Same Vision, Different Operational Path</a></em>. 3 December 2025.</p></li><li><p>Sergey Vasiliev. <em><a href="/__u/sergeyvasiliev.substack.com/p/the-ontology-trap-when-ai-scales">The Ontology Trap: When AI Scales Unvalidated Meaning</a></em>. 11 June 2026.</p></li><li><p>Sergey Vasiliev. <em><a href="/__u/sergeyvasiliev.substack.com/p/from-lpg-to-graphrag-the-minimum">From LPG to GraphRAG: The Minimum Semantic Contract</a></em>. 10 July 2026.</p></li><li><p>Sergey Vasiliev. <em><a href="/__u/sergeyvasiliev.substack.com/p/the-missing-half-of-enterprise-semantics">The Missing Half of Enterprise Semantics: What the Agent Must Not Do</a></em>. 31 July 2026.</p></li><li><p>Sergey Vasiliev. <em><a href="/__u/sergeyvasiliev.substack.com/p/topological-and-temporal-aspects">Topological and Temporal Aspects of Graphs</a></em>. 19 January 2026.</p></li><li><p>Sergey Vasiliev. <em><a href="/__u/sergeyvasiliev.substack.com/p/rag-vs-graphrag-vs-kag">RAG vs GraphRAG vs KAG: A Graph Practitioner&#8217;s Perspective</a></em>. 11 February 2026.</p></li><li><p>Sergey Vasiliev. <em><a href="/__u/sergeyvasiliev.substack.com/p/why-most-graphrag-evaluations-are">Why Most GraphRAG Evaluations Are Wrong</a></em>. 17 April 2026.</p></li></ol><h2>Technical references</h2><ol start="9"><li><p>Chengjin Xu et al. <em><a href="https://arxiv.org/abs/2406.11160">Context Graph</a></em>. arXiv preprint, 2024. DOI: 10.48550/arXiv.2406.11160.</p></li><li><p>ISO/IEC 39075:2024. <em><a href="https://www.iso.org/standard/76120.html">Information Technology: Database Languages: GQL</a></em>. First edition, April 2024.</p></li><li><p>Neo4j. <em><a href="https://neo4j.com/docs/getting-started/cypher/">Graph Database Concepts and Cypher Documentation</a></em>. Accessed 16 August 2026.</p></li><li><p>Neo4j. <em><a href="https://neo4j.com/docs/operations-manual/current/authentication-authorization/manage-privileges/">Role-Based Access Control and Graph Privileges</a></em>. Accessed 16 August 2026.</p></li><li><p>Chang Yang et al. <em><a href="https://arxiv.org/abs/2602.05665">Graph-Based Agent Memory: Taxonomy, Techniques, and Applications</a></em>. arXiv preprint, 2026. DOI: 10.48550/arXiv.2602.05665.</p></li><li><p>Pratyay Banerjee et al. <em><a href="https://aclanthology.org/2026.acl-long.749/">APEX-MEM: Agentic Semi-Structured Memory with Temporal Reasoning for Long-Term Conversational AI</a></em>. Proceedings of ACL 2026. DOI: 10.18653/v1/2026.acl-long.749.</p></li><li><p>Preston Rasmussen et al. <em><a href="https://arxiv.org/abs/2501.13956">Zep: A Temporal Knowledge Graph Architecture for Agent Memory</a></em>. Company-authored arXiv preprint, 2025. DOI: 10.48550/arXiv.2501.13956.</p></li><li><p>Zidi Xiong et al. <em><a href="https://aclanthology.org/2026.acl-long.27/">How Memory Management Impacts LLM Agents: An Empirical Study of Experience-Following Behavior</a></em>. Proceedings of ACL 2026. DOI: 10.18653/v1/2026.acl-long.27.</p></li><li><p>Jiachen Qian. <em><a href="https://aclanthology.org/2026.acl-long.954/">Visual Inception: Compromising Long-Term Planning in Agentic Recommenders via Multimodal Memory Poisoning</a></em>. Proceedings of ACL 2026. DOI: 10.18653/v1/2026.acl-long.954.</p></li><li><p>Bo Wang et al. <em><a href="https://aclanthology.org/2025.acl-long.1227/">Unveiling Privacy Risks in LLM Agent Memory</a></em>. Proceedings of ACL 2025. DOI: 10.18653/v1/2025.acl-long.1227.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Re3g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Re3g!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!Re3g!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!Re3g!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!Re3g!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Re3g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:983008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/211542489?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Re3g!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!Re3g!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!Re3g!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!Re3g!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c104716-f89f-4ce5-a14b-16ccb6c060cc_1376x768.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[The RDF Break-Even Test]]></title><description><![CDATA[Where RDF creates business value, and where it adds an ontology tax without changing the decision]]></description><link>https://sergeyvasiliev.substack.com/p/the-rdf-break-even-test</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/the-rdf-break-even-test</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Thu, 06 Aug 2026 12:18:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!949_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Table of Contents</h2><ol><li><p>Introduction</p></li><li><p>The automatic journey from semantics to RDF</p></li><li><p>What RDF solves and what it does not replace</p></li><li><p>Eight signals that RDF may be unnecessary</p></li><li><p>The ontology tax is not one cost</p></li><li><p>When RDF earns the investment</p></li><li><p>The RDF Break-Even Test</p></li><li><p>AI needs trustworthy context, not a preferred syntax</p></li><li><p>Summary</p></li><li><p>References</p></li></ol><h1>1. Introduction</h1><p>Three ideas keep returning in discussions about Resource Description Framework (RDF).</p><p>The first is that a proper ontology can only be built with RDF. The second is that RDF already contains everything an enterprise needs for semantics, identity, validation, inference and interoperability. The third is that RDF may cost more at the beginning, but becomes the cheaper option as the number of domains and systems grows.</p><p>There is some truth in each of these ideas. RDF has a mature standards ecosystem and remains a strong choice when meaning must be shared across systems, organisations and time. The problem begins when these strengths are turned into universal rules.</p><p>Not every ontology needs the same level of formalism. Not every enterprise problem needs every capability available in the RDF stack. And cost does not depend on the data model alone. It also depends on the workload, data quality, change rate, governance, skills and the number of applications that will reuse the result.</p><p>This is not an argument against RDF, ontology or formal semantics. It is an argument against treating RDF as the automatic destination of every knowledge graph, semantic layer or enterprise AI initiative.</p><p>In previous publications, I separated RDF as a knowledge representation model from an LPG as operational decision infrastructure [1]. I also argued that knowledge graphs can be realised through different graph models, and that semantics is not created merely by choosing a database, query language or ontology technology [2][3][4].</p><p>This article begins with a more basic question:</p><blockquote><p><strong>Does your business problem need RDF at all?</strong></p></blockquote><h1>2. The automatic journey from semantics to RDF</h1><p>Enterprise semantic programmes often follow a familiar line of reasoning:</p><blockquote><p>Our data is inconsistent, so we need semantics. We need semantics, so we need an ontology. We need an ontology, so we need RDF.</p></blockquote><p>Each step may be reasonable. The conclusion does not automatically follow.</p><p>Inconsistent data may require clearer definitions, stronger identity management, governed data contracts, temporal context, provenance, validation and ownership. An ontology may help formalise some of those agreements. RDF may then be an effective way to represent and exchange them.</p><p>These are still separate architectural decisions.</p><p>Data inconsistency is not always an ontology problem. It may come from duplicate source systems, incompatible identifiers, missing ownership, weak operational processes or uncontrolled local definitions. Representing these problems as triples does not resolve them.</p><p>Choosing RDF also does not make enterprise data meaningful. It makes RDF the chosen representation of that meaning. Definitions still have to be agreed. Identities still have to be reconciled. Mappings still have to be maintained. Changes still have to be approved and tested.</p><p>This distinction matters because RDF is sometimes presented as a semantic maturity level. The implied hierarchy is that relational systems are basic, LPGs are practical but limited, and RDF is the mature destination.</p><p>That is not a useful architectural hierarchy.</p><p>A relational schema can express precise meaning inside a controlled application. An API can define a governed contract between known systems. An event schema can describe the meaning and lifecycle of a business event. An LPG can represent operational relationships, paths, state and decision context.</p><p>None of these approaches is semantically empty because it does not use RDF.</p><p>The same applies to ontology. As discussed in <em>The RDF Assumption That Meaning Lives in Ontology Is Breaking in the LLM Era</em>, enterprise meaning is also carried by context, policy, evidence, operational state and the conditions under which a fact may be used [5]. An ontology can formalise part of that meaning, but it does not contain the complete enterprise reality.</p><p>RDF should therefore be selected because it enables a required capability. That capability may involve interoperability, reusable identity, shared vocabularies, formal entailment or long-term preservation of meaning.</p><p>When the business cannot name the capability, RDF may add semantic infrastructure without changing the result.</p><h1>3. What RDF solves and what it does not replace</h1><h2>Representation, semantics and validation</h2><p>RDF is an abstract data model for representing information as graphs. An RDF graph contains subject-predicate-object triples, while an RDF dataset may contain a default graph and one or more named graphs. RDF uses Internationalised Resource Identifiers, or IRIs, as a standard way to identify resources and relationships [10].</p><p>The wider RDF ecosystem provides additional capabilities, but they should not be confused with base RDF.</p><p>RDF Schema and the Web Ontology Language, OWL, can define formal semantic relationships. Formal entailment means deriving a conclusion that logically follows from the asserted information and the declared semantics. In practical terms, it can make implicit knowledge explicit.</p><p>SHACL, the Shapes Constraint Language, can validate RDF graphs against declared conditions. PROV-O, the PROV Ontology, provides classes and properties for representing and exchanging provenance information [12][13][14].</p><p>These are valuable capabilities, but they are separate choices. An organisation may use RDF without OWL reasoning. It may use SHACL validation without a large domain ontology. It may publish linked data without making RDF its operational system of record.</p><p>RDF, ontology, validation, reasoning, storage and governance should not be approved as one indivisible package called semantics.</p><p>A modest requirement to align several identifiers can otherwise expand into an enterprise ontology, a triplestore, a reasoning environment, source mappings, specialist tooling and a new governance organisation. Each part may be useful, but each part needs its own justification.</p><h2>Global naming is not the same as stable identity</h2><p>IRIs allow identifiers to be expressed in a globally recognisable naming scheme. That is useful when independent systems need to refer to the same resource without sharing one database key.</p><p>However, global scope does not guarantee stability.</p><p>An IRI is not automatically persistent, correctly assigned or governed. Someone must decide what it identifies, who may create it, whether it can be reassigned, how duplicates are resolved and what happens when the represented entity changes.</p><p>RDF supplies a standard identification mechanism. The organisation still has to supply the identity policy.</p><p>An unmanaged IRI is not inherently more trustworthy than an unmanaged relational key.</p><h2>RDF, SPARQL and database products are different things</h2><p>RDF is the data model. SPARQL is a family of standards used to work with RDF data. Triplestores and other RDF database products implement storage and operational capabilities.</p><p>SPARQL 1.1 Query Language defines how graph patterns can be queried and how results may be returned. SPARQL 1.1 Update defines operations that update, create and remove RDF graphs in a graph store [15][16].</p><p>Individual database products may add transactions, concurrency control, access management, audit functions, replication, backup and recovery. The details vary between implementations.</p><p>This distinction matters when discussing Create, Read, Update and Delete operations, usually shortened to CRUD.</p><p>RDF is not technically static. RDF data can be queried and changed. A triplestore may also provide strong transactional behaviour.</p><p>The more important question is whether those technical operations capture the business lifecycle.</p><h2>RDF and the enterprise data lifecycle</h2><p>Enterprise CRUD is not only about inserting, reading, updating and deleting stored values. It represents the changing life of a business object.</p><p>An order may be created, approved, changed, fulfilled, cancelled and retained for audit. A policy may be drafted, approved, made effective, superseded and eventually withdrawn. A payment may be initiated, authorised, settled, rejected or reversed.</p><p>These transitions carry operational meaning.</p><p>RDF can represent the states, events, actors and evidence involved. It does not, by itself, define which transitions are valid, who may approve them, how conflicting changes are resolved, what must be retained or what a deletion means to the business.</p><p>No data model supplies a complete enterprise lifecycle on its own.</p><p>A relational model does not automatically know that a payment reversal requires a second approval. An LPG does not automatically know that a cancelled order must remain available for seven years. Application logic, workflow, policy and governance are still needed.</p><p>The point is not that RDF uniquely fails to provide lifecycle management. The point is that RDF&#8217;s strengths in representation and interoperability should not be mistaken for a complete operational lifecycle model.</p><p>Three separate questions should therefore be kept apart.</p><p>First, <strong>what happened to the graph?</strong> A SPARQL Update operation may remove a triple from a particular graph.</p><p>Second, <strong>what can now be concluded logically?</strong> Under standard RDF and OWL semantics, the absence of a statement is not generally treated as proof of its opposite. Removing a statement that a customer is active does not logically assert that the customer is inactive [11][12].</p><p>Third, <strong>what does the change mean to the business?</strong> The customer may have become inactive, the status may be unknown, the source may have been corrected, or the information may have moved to a different version. That meaning must be modelled and governed explicitly.</p><p>RDF is particularly strong when meaning must travel independently of one application. It is less obviously necessary when the main problem is controlling changing state inside one operational boundary.</p><h1>4. Eight signals that RDF may be unnecessary</h1><p>The following situations are not automatic rejection rules. One regulatory or interoperability requirement may justify RDF even when several other conditions point towards a simpler model.</p><p>They are signals that RDF should carry a higher burden of proof.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!qQzK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!qQzK!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!qQzK!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!qQzK!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!qQzK!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!qQzK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1575673,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/210039209?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!qQzK!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!qQzK!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!qQzK!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!qQzK!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f461c9f-4b4c-4160-990b-c64b6241539b_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>4.1. The problem is contained within one application</h2><p>One application owns the data, workflow, schema and definitions. Its product team controls releases and most consumers use the same operational model.</p><p>A relational schema, domain model or governed API may already express the required meaning. Adding RDF could create a second representation without creating an independent consumer.</p><h2>4.2. The schema is controlled and changes predictably</h2><p>RDF is valuable when data sources evolve independently and no single team controls the complete model.</p><p>Where one organisation owns the schema and manages planned changes, explicit constraints and versioned contracts may be enough. Semantic flexibility is not automatically an advantage when the domain is intentionally controlled.</p><h2>4.3. The main workload is transactional</h2><p>Operational systems often prioritise validation, concurrency, predictable writes, recovery and controlled state transitions.</p><p>RDF may be useful for publishing or integrating the resulting information, but that does not make it the best foundation for creating orders, settling payments or managing workflow state.</p><p>The decision should follow the workload rather than the presence of relationships.</p><h2>4.4. Relationships are local and predictable</h2><p>Almost all enterprise data contains relationships. Customers place orders, employees belong to teams and contracts refer to parties.</p><p>A small set of known joins does not automatically justify RDF or any graph database.</p><p>An LPG may become attractive when repeated multi-hop traversal, paths, topology or graph algorithms create value. RDF may become attractive when relationships need shared meaning across independent systems. A few predictable joins may need neither.</p><h2>4.5. Formal entailment does not affect an outcome</h2><p>A derived conclusion matters when it changes an approval, classification, obligation, control or permitted action.</p><p>It matters less when application code calculates the same result, when every conclusion needs manual confirmation, or when the result appears only in a demonstration.</p><p>Rules, SQL, materialised relationships, graph algorithms and machine learning may also derive or predict information. These mechanisms are not equivalent to OWL entailment, but one of them may fit the decision more naturally.</p><h2>4.6. External vocabularies are not genuinely reused</h2><p>RDF becomes compelling when regulators, partners, research communities or industry bodies already recognise the same vocabulary.</p><p>An external ontology that no real consumer uses may add mapping work without reducing integration work. In a purely internal domain, a shared API schema, data contract or metadata service may be sufficient.</p><h2>4.7. Only one application will consume the model</h2><p>A semantic model created for one report, chatbot or retrieval pipeline can still be useful. It is probably an application model rather than enterprise semantic infrastructure.</p><p>Future reuse should be concrete. The proposal should name the next consumers, the mappings they will stop maintaining and the teams committed to adoption.</p><h2>4.8. Nobody owns semantic change</h2><p>Shared meaning needs funded ownership.</p><p>Someone must govern identifiers, vocabulary versions, mappings, deprecations, validation rules and inference behaviour. Without that ownership, a shared model will drift like any other enterprise model, while its failures may affect more consumers.</p><p>These conditions do not suggest that the organisation needs no semantics. They suggest that the semantics may be implemented more simply through the operational model, contracts, policies and governance the organisation already uses.</p><h1>5. The ontology tax is not one cost</h1><p>I use <strong>ontology tax</strong> as a working label, not as an established industry metric.</p><p>The phrase is useful because it draws attention to costs that are often missing from semantic demonstrations. However, those costs should not all be attributed to ontology.</p><p>They fall into at least three groups.</p><h2>Ontology design cost</h2><p>This includes defining concepts, properties, axioms, classifications and vocabulary versions. It also includes resolving conflicting interpretations and reviewing the consequences of a semantic change.</p><p>These are genuine ontology costs.</p><h2>RDF integration and platform cost</h2><p>This includes mapping source systems, generating and synchronising RDF data, managing identifiers, operating a triplestore, building queries and integrating the graph with applications.</p><p>Some of these costs would exist in any integration architecture. The important point is to identify them rather than hide them inside a broad claim about semantic maturity.</p><h2>Shared semantic governance and adoption cost</h2><p>This includes ownership, approval processes, consumer support, version communication, lifecycle management, testing and the effort required to persuade teams to reuse the shared model.</p><p>The cost often grows with the ambition of the programme. A model used by ten systems can create more value than a model used by one, but it also requires stronger change management.</p><p>Other architectures pay similar costs. Relational systems require modelling and migration. LPGs require identity rules and graph governance. APIs require contracts, versioning and support.</p><p>The question is not whether RDF has costs that other models avoid entirely. It is whether RDF creates enough additional value to justify the specific combination of modelling, integration and governance work.</p><p>Consider two examples.</p><p>In the first, eight systems and several external partners maintain separate mappings for the same products, legal entities and regulatory classifications. A shared RDF representation may reduce duplicated mapping, preserve common identifiers and make partner integration easier. Several consumers share the cost.</p><p>In the second, one internal chatbot answers questions from two governed tables. Mapping those tables into RDF may improve the conceptual design, but it may not improve the answers enough to justify a second query stack, synchronisation process and governance model.</p><p>The same issue appears in CRUD-heavy environments. When the operational application remains the only trusted place where records can be created, corrected and deleted, an RDF layer may become a semantic copy of operational state. That copy still needs synchronisation, reconciliation, version management and reprocessing.</p><blockquote><p><strong>The ontology tax is reasonable when several systems reuse the meaning. It is difficult to justify when one application merely needs a better query.</strong></p></blockquote><h1>6. When RDF earns the investment</h1><p>RDF earns its place when it creates a capability that simpler local models cannot provide as effectively over the expected life of the solution.</p><p>One strong case is exchange between independent organisations. Shared identifiers and vocabularies can provide an agreement that exists outside any single application, database or vendor.</p><p>Another is the reuse of established standards. A vocabulary already recognised by regulators, research communities or industry partners may reduce repeated negotiation and custom mapping.</p><p>RDF can also help when datasets evolve independently. It does not remove the need to understand and map each source. Its value comes from allowing several sources and consumers to align through a common representation rather than maintaining a separate mapping for every pair.</p><p>Formal entailment may justify the investment when a logically derived conclusion changes a real outcome. For example, a product classification derived from asserted properties and an ontology may trigger an additional compliance check or alter an approval route.</p><p>Longevity provides another reason. Applications are replaced, databases are migrated and vendors change. A standards-based representation can help preserve identities, classifications, relationships and provenance beyond the life of the systems that originally created them.</p><p>Linked data publication or consumption may itself be a requirement. In that situation, RDF is not one optional implementation among many. It is part of the requested capability.</p><p>Consider a hypothetical product compliance network involving manufacturers, distributors and regulators. Each participant owns different systems and release cycles. They need to exchange product identities, classifications, evidence and regulatory status.</p><p>A shared RDF vocabulary may allow all parties to use the same identifiers and classification terms without adopting the same application. Formal rules may derive which compliance regime applies, while provenance records show where the supporting information came from.</p><p>The value would not be the number of triples produced. It would be fewer custom mappings, faster onboarding of new participants, less ambiguity in product identity and more consistent compliance decisions.</p><p>Even then, RDF does not need to perform every architectural role.</p><p>The manufacturer may keep product transactions in a relational system. An LPG may support supply-chain paths and risk analysis. Event streams may carry lifecycle changes. Policy services may enforce permissions and obligations. RDF may provide the durable semantic and exchange layer connecting them.</p><p>RDF earning a place does not mean RDF must become the whole architecture.</p><h1>7. The RDF Break-Even Test</h1><p>The <strong>RDF Break-Even Test</strong> is a working term for a qualitative architectural assessment. It is not a mathematical formula, a universal score or a claim that every question has equal weight.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!2-1t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!2-1t!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!2-1t!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!2-1t!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2-1t!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!2-1t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1887789,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/210039209?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!2-1t!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!2-1t!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!2-1t!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2-1t!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11a9e367-3265-4662-838d-a8cff3520be9_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>A legal or contractual requirement to use a standard may be decisive even when several other answers are no. Conversely, a long list of speculative benefits should not justify an enterprise platform.</p><p>Each positive answer should be supported by evidence.</p><h2>Required capability and obligation</h2><h3>1. Is an RDF-based standard required by a regulator, partner or established ecosystem?</h3><p>Name the standard, the external parties and the exchange process.</p><p>A concrete obligation is stronger than a general preference for semantic interoperability.</p><h3>2. Which business capability becomes possible because RDF is used?</h3><p>&#8220;Better semantics&#8221; is not a business capability.</p><p>A useful answer describes what the organisation will be able to exchange, reuse, derive or preserve that it cannot achieve economically today.</p><h3>3. Does formal entailment change a decision, action or control?</h3><p>The proposal should identify the asserted information, the conclusion that is logically derived and the workflow that changes as a result.</p><p>It should also explain how ontology changes will be tested. Making implicit knowledge explicit is valuable only when someone or something uses the conclusion.</p><h2>Reuse, identity and longevity</h2><h3>4. Which independent consumers will reuse the model?</h3><p>Name the applications, teams, partners and workflows.</p><p>Expected reuse should be based on committed consumers rather than the possibility that somebody may adopt the model later.</p><h3>5. Are shared identifiers materially important?</h3><p>Describe the current identity problem. It may involve duplicate entities, failed joins, incompatible partner identifiers or repeated reconciliation.</p><p>Using IRIs can provide a common naming mechanism. Stable identity still requires ownership, persistence rules and entity resolution.</p><h3>6. Will established external vocabularies replace local negotiation?</h3><p>Name the vocabularies and the consumers that recognise them.</p><p>Adopting a standard that no other participant uses creates another mapping target rather than interoperability.</p><h3>7. Must the knowledge outlive the systems that produce it?</h3><p>The case becomes stronger when identities, provenance, classifications and relationships must remain interpretable across several generations of applications.</p><p>Temporary application state creates a weaker longevity argument.</p><h2>Workload and operational fit</h2><h3>8. What workload must the architecture support?</h3><p>Separate transaction processing, graph traversal, analytics, semantic exchange, document retrieval and formal reasoning.</p><p>A graph model should not be chosen merely because the data contains relationships. The workload should explain why RDF, an LPG, SQL, search or a combination is appropriate.</p><h3>9. What are the expected scale, change rate and performance requirements?</h3><p>The assessment should include:</p><ul><li><p>data volume and growth</p></li><li><p>ingestion and update frequency</p></li><li><p>query shapes</p></li><li><p>expected latency</p></li><li><p>concurrent users and processes</p></li><li><p>reasoning or validation frequency</p></li><li><p>reprocessing requirements</p></li></ul><p>These should be tested against realistic data rather than assumed from the data model.</p><h3>10. Where does operational authority remain?</h3><p>Identify the system of record and the lifecycle owner.</p><p>When RDF is a projection of operational data, explain how creation, correction, deletion, late events and conflicting updates will be synchronised. Maintaining two representations can be reasonable, but its cost must be visible.</p><h2>Delivery, governance and economics</h2><h3>11. Does the organisation have the required skills and operating model?</h3><p>The assessment should cover modelling skills, query expertise, platform support, security, monitoring, incident response and consumer support.</p><p>It should also identify a funded owner for ontology, mappings, identifiers, validation and semantic change.</p><h3>12. Does RDF outperform the simplest credible alternative over the expected lifetime?</h3><p>Compare RDF with SQL, an LPG, APIs, event contracts, search and application logic where relevant.</p><p>The comparison should include:</p><ul><li><p>platform and licensing costs</p></li><li><p>implementation and migration</p></li><li><p>source mapping</p></li><li><p>synchronisation</p></li><li><p>specialist skills</p></li><li><p>operational support</p></li><li><p>governance</p></li><li><p>change and reprocessing</p></li><li><p>expected years of use</p></li><li><p>measurable benefits</p></li></ul><p>Counting triples, ontology classes or vocabulary terms measures implementation size, not value.</p><p>Useful business measures may include fewer custom mappings, faster partner onboarding, fewer identity conflicts, lower integration effort, broader reuse of shared definitions and decisions improved through formal entailment.</p><h2>Interpreting the result</h2><p>RDF is more likely to be <strong>above break-even</strong> when a named external or cross-system capability is required, several consumers will reuse the model, identifiers and vocabularies are genuinely shared, formal semantics affect outcomes, and long-term ownership is funded.</p><p>The case is <strong>unproven</strong> when the benefits depend mainly on future reuse, the workload has not been tested, consumers have not committed or the operating model is unclear. A bounded pilot is more appropriate than an enterprise platform.</p><p>RDF is probably <strong>below break-even</strong> when the problem is local, one application consumes the result, the schema is controlled, no external vocabulary is reused, formal entailment changes no decision and a simpler model can deliver the same outcome at lower total cost.</p><p>There is no universal number of yes answers. The strength of the evidence matters more than the count.</p><h1>8. AI needs trustworthy context, not a preferred syntax</h1><p>Enterprise AI has made the RDF question more urgent because semantics is increasingly presented as the answer to unreliable agents.</p><p>The reasoning often follows another automatic chain:</p><blockquote><p>AI needs context. Context needs semantics. Semantics needs an ontology. Therefore, AI needs RDF.</p></blockquote><p>The conclusion still does not follow automatically.</p><p>An enterprise agent needs to know which entity is involved, which facts are current, where the evidence came from, what the user is authorised to see, which policy applies and which action is permitted.</p><p>It also needs lifecycle context. A customer may have withdrawn consent. An order may have been cancelled. A policy may have expired. An identity relationship may have been corrected.</p><p>RDF can represent these facts and events. It does not automatically select the right evidence, resolve conflicting versions, enforce permissions or prevent an unsafe action.</p><p>At decision time, an AI agent gains no safety simply because a fact arrived as an RDF triple. What matters is whether the information is current, relevant, authorised, supported and actionable.</p><p>Representation still matters to the surrounding architecture. Parsers, query engines and retrieval services need to understand the format. However, syntax alone does not establish whether the information may be trusted for a particular decision.</p><p>In <em>From LPG to GraphRAG: The Minimum Semantic Contract</em>, I described the minimum commitments that a GraphRAG runtime should be allowed to trust [7]. <em>The Missing Half of Enterprise Semantics: What the Agent Must Not Do</em> extended that argument to the restrictions that determine whether an interpretation or action is admissible [8]. <em>The Applied Knowledge Graph as the Runtime Layer for Agentic AI</em> connected graph structure with evidence, policy, tools, state and decision trace [9].</p><p>These capabilities may be implemented through RDF, an LPG, relational data, APIs, event streams, policy services, metadata platforms and controlled retrieval pipelines.</p><p>RDF can provide durable identifiers, vocabularies and provenance across these components. The operational layer must still retrieve the correct version, apply the right policy, check authorisation and record what happened.</p><p>AI can also increase the consequences of semantic change. A new class hierarchy may alter retrieval. A changed identity mapping may merge entities that were previously separate. A new inference rule may expand the set of transactions affected by a policy.</p><p>As argued in <em>The Ontology Trap: When AI Scales Unvalidated Meaning</em>, machine-generated ontology content should remain a proposal until it has been reviewed, tested and approved [6].</p><p>The more authority an agent receives, the less acceptable it becomes to confuse representable meaning with governed and operationally valid meaning.</p><h1>9. Summary</h1><p>RDF is a strong standard for representing and exchanging connected information. It can support shared identifiers, external vocabularies, validation, provenance and formal semantics across systems that do not share one implementation.</p><p>That does not make it the natural destination of every semantic initiative.</p><p>An ontology is useful when people and systems reuse it. An identifier is durable when somebody governs it. A logically derived conclusion creates value when it changes a real decision. A vocabulary is only shared when independent consumers adopt it.</p><p>The same practical test applies to enterprise CRUD. RDF, SPARQL and triplestores can query and modify graph data, but technical update operations are not the complete business lifecycle. Approval, cancellation, correction, retention and legal deletion still require policy, workflow and ownership.</p><p>This is not a weakness unique to RDF. No data model supplies the full lifecycle by itself. The distinction matters because representation, operational state and business meaning are different architectural responsibilities.</p><p>RDF is most convincing when meaning must cross boundaries, remain reusable and survive the applications that first produced it. In those cases, the cost of ontology design, RDF integration and shared governance may create a durable asset.</p><p>When the problem is local, the workload is transactional and one application owns the meaning, a relational model, an LPG, an API or application logic may provide the same result more simply.</p><p>The break-even test is therefore not a competition between graph communities. It is a comparison between a required business capability and the complete cost of delivering it.</p><p>That cost includes workload fit, scale, performance, mappings, synchronisation, skills, governance, migration and years of operation. The value must include named consumers, reduced integration work, better decisions or knowledge that remains reusable over time.</p><p>Enterprise AI does not remove this requirement. Agents need trustworthy context, but trustworthy context is not synonymous with RDF. Information must still be current, authorised, supported by evidence and valid for the proposed action.</p><p>The practical conclusion is straightforward. RDF should earn its place in the architecture, just like every other component.</p><p>Businesses should ask:</p><blockquote><p><strong>Which capability becomes possible because we chose RDF, who will reuse it, and why can we not achieve the same result more simply elsewhere?</strong></p></blockquote><p>When there is a clear, measurable answer, RDF may be the right investment. When there is no answer, the organisation may not be building semantic maturity. It may simply be paying an ontology tax.</p><h1>10. References</h1><h2>Previous publications</h2><p><strong>1. </strong>RDF Is a Knowledge Representation Model. LPG Is a Decision Infrastructure<br><a href="/__u/sergeyvasiliev.substack.com/p/rdf-is-a-knowledge-representation">https://sergeyvasiliev.substack.com/p/rdf-is-a-knowledge-representation</a></p><p><strong>2. </strong>LPG, PG and RDF: Structural Models, Semantics, and Applied Reality<br><a href="/__u/sergeyvasiliev.substack.com/p/lpg-pg-and-rdf-structural-models">https://sergeyvasiliev.substack.com/p/lpg-pg-and-rdf-structural-models</a></p><p><strong>3. </strong>The Pragmatic Semantic Layer Manifesto<br><a href="/__u/sergeyvasiliev.substack.com/p/the-pragmatic-semantic-layer-manifesto">https://sergeyvasiliev.substack.com/p/the-pragmatic-semantic-layer-manifesto</a></p><p><strong>4. </strong>The Semantic Layer Naming Crisis<br><a href="/__u/sergeyvasiliev.substack.com/p/the-semantic-layer-naming-crisis">https://sergeyvasiliev.substack.com/p/the-semantic-layer-naming-crisis</a></p><p><strong>5. </strong>The RDF Assumption That Meaning Lives in Ontology Is Breaking in the LLM Era<br><a href="/__u/sergeyvasiliev.substack.com/p/the-rdf-assumption-that-meaning-lives">https://sergeyvasiliev.substack.com/p/the-rdf-assumption-that-meaning-lives</a></p><p><strong>6. </strong>The Ontology Trap: When AI Scales Unvalidated Meaning<br><a href="/__u/sergeyvasiliev.substack.com/p/the-ontology-trap-when-ai-scales">https://sergeyvasiliev.substack.com/p/the-ontology-trap-when-ai-scales</a></p><p><strong>7. </strong>From LPG to GraphRAG: The Minimum Semantic Contract<br><a href="/__u/sergeyvasiliev.substack.com/p/from-lpg-to-graphrag-the-minimum">https://sergeyvasiliev.substack.com/p/from-lpg-to-graphrag-the-minimum</a></p><p><strong>8. </strong>The Missing Half of Enterprise Semantics: What the Agent Must Not Do<br><a href="/__u/sergeyvasiliev.substack.com/p/the-missing-half-of-enterprise-semantics">https://sergeyvasiliev.substack.com/p/the-missing-half-of-enterprise-semantics</a></p><p><strong>9. </strong>The Applied Knowledge Graph as the Runtime Layer for Agentic AI<br><a href="/__u/sergeyvasiliev.substack.com/p/the-applied-knowledge-graph-as-the">https://sergeyvasiliev.substack.com/p/the-applied-knowledge-graph-as-the</a></p><h2>External references</h2><p><strong>10. </strong>W3C, RDF 1.1 Concepts and Abstract Syntax<br><a href="https://www.w3.org/TR/rdf11-concepts/">https://www.w3.org/TR/rdf11-concepts/</a></p><p><strong>11. </strong>W3C, RDF 1.1 Semantics<br><a href="https://www.w3.org/TR/rdf11-mt/">https://www.w3.org/TR/rdf11-mt/</a></p><p><strong>12. </strong>W3C, OWL 2 Web Ontology Language Primer (Second Edition)<br><a href="https://www.w3.org/TR/owl2-primer/">https://www.w3.org/TR/owl2-primer/</a></p><p><strong>13. </strong>W3C, Shapes Constraint Language (SHACL)<br><a href="https://www.w3.org/TR/shacl/">https://www.w3.org/TR/shacl/</a></p><p><strong>14. </strong>W3C, PROV-O: The PROV Ontology<br><a href="https://www.w3.org/TR/prov-o/">https://www.w3.org/TR/prov-o/</a></p><p><strong>15. </strong>W3C, SPARQL 1.1 Query Language<br><a href="https://www.w3.org/TR/sparql11-query/">https://www.w3.org/TR/sparql11-query/</a></p><p><strong>16. </strong>W3C, SPARQL 1.1 Update<br><a href="https://www.w3.org/TR/sparql11-update/">https://www.w3.org/TR/sparql11-update/</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!949_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!949_!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!949_!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!949_!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!949_!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!949_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2162748,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/210039209?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!949_!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!949_!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!949_!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!949_!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4311ce20-1188-4f79-9d85-06c7441a2d3e_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Missing Half of Enterprise Semantics: What the Agent Must Not Do]]></title><description><![CDATA[Why production agents need governed knowledge of exclusions, invalid interpretations and required conditions, not only definitions of what data means]]></description><link>https://sergeyvasiliev.substack.com/p/the-missing-half-of-enterprise-semantics</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/the-missing-half-of-enterprise-semantics</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Fri, 31 Jul 2026 15:40:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fi9p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Table of Contents</h2><ol><li><p>Introduction: a map without warning signs</p></li><li><p>What Anthropic&#8217;s analytics files reveal</p></li><li><p>Defining Negative Semantic Knowledge</p></li><li><p>What Negative Semantic Knowledge is not</p></li><li><p>The typed rule families of Negative Semantic Knowledge</p></li><li><p>Does a Negative Knowledge Graph make sense?</p></li><li><p>Representing Negative Semantic Knowledge in a Labelled Property Graph</p></li><li><p>How an agent should use Negative Semantic Knowledge</p></li><li><p>Extending the Minimum Semantic Contract</p></li><li><p>Conclusion</p></li><li><p>References</p></li></ol><div><hr></div><h1>1. Introduction: a map without warning signs</h1><p>Most enterprise semantic models resemble maps that show every road but none of the warning signs.</p><p>They describe what exists, what it means and how it is connected. This table represents customers. This field contains a customer identifier. This relationship connects orders to products. This metric calculates active users. This tool performs experiment analysis.</p><p>All of that is useful. It is also incomplete.</p><p>A real map tells us more than how to reach a destination. It warns us that a bridge cannot carry heavy vehicles, a road is closed after a certain date, or a route crosses a restricted area. The road still exists. It is simply not suitable for every journey.</p><p>Enterprise data has the same problem.</p><p>Two datasets may contain technically compatible keys, but joining them may produce the wrong level of detail. A metric may be correctly defined for operational monitoring but not approved for financial reporting. A relationship in a graph may be useful for investigation but insufficient as evidence for a compliance decision. A missing record may mean that something did not happen, or simply that the relevant system did not capture it.</p><p>Human experts usually know these distinctions.</p><p>An experienced analyst knows not to use product telemetry as a source of legal customer identities. A finance specialist knows which revenue table has been approved for external reporting. A compliance specialist knows that a shared address may indicate a connection but does not prove ownership or control.</p><p>Much of this knowledge is never represented formally. It remains in people&#8217;s heads, review conversations, old tickets, code comments and warnings such as:</p><blockquote><p>We normally do not use that table for this.</p></blockquote><p>That was already a governance problem. Agents make it a production problem.</p><p>An agent is not merely reading definitions. It selects sources, resolves identities, joins datasets, follows graph paths, compares metrics and turns evidence into conclusions. In GraphRAG, where graph structure is used to retrieve and assemble context for a language model, these choices determine what the model is allowed to see. In Text2Query, where a natural-language question is converted into SQL, Cypher or another query language, they determine what the system executes.</p><p>A query can therefore be syntactically correct and still express the wrong business meaning.</p><p>A route can exist without being suitable. A source can be available without being approved. Two metrics can look similar without being validly comparable. Missing evidence can remain unknown rather than becoming a negative conclusion.</p><p>Production agents need explicit knowledge of these limits. I call this <strong>Negative Semantic Knowledge</strong>, or <strong>NSK</strong>.</p><p>This concept continues the argument developed in three of my earlier publications. <em>The Ontology Trap</em> examined the danger of allowing plausible but unvalidated meaning to enter operational systems [9]. <em>Labelled Property Graphs, GraphRAG and Text2Query</em> separated query planning from query generation [10]. <em>From LPG to GraphRAG: The Minimum Semantic Contract</em> defined the smallest set of semantic commitments that a production GraphRAG environment may trust [11].</p><p>NSK focuses on the restrictions, qualifications and required conditions within those commitments.</p><h1>2. What Anthropic&#8217;s analytics files reveal</h1><p>Anthropic&#8217;s account of its internal analytics environment provides a useful practical example.</p><p>Its reference files do more than describe available tables and columns. They record a table&#8217;s grain, scope, exclusions, appropriate uses, inappropriate uses, join keys, required filters and known wrong-answer modes.</p><p>Here, <strong>grain</strong> means what one row represents. One table may contain one row per customer, another one row per order and another one row per product event. A join can be technically possible while still being invalid because those grains have not been reconciled correctly.</p><p>Anthropic&#8217;s reference-file template explicitly asks authors to record what one row represents, when a table should and should not be used, which joins are available, which filters are required and which mistakes a senior analyst would recognise. That information sits alongside business definitions rather than being treated as unrelated documentation [1].</p><p>A simplified example might read as follows:</p><blockquote><p>This table contains product events at event grain. Do not use it to count legal customers. Exclude internal accounts. Do not join it directly to invoices through a device identifier. Use the approved account mapping instead.</p></blockquote><p>This is my illustrative example, not a quotation from Anthropic. It shows the difference between a description and an operational semantic contract.</p><p>A conventional catalogue entry might state that a table contains product activity. That makes the table discoverable. It does not tell an agent whether the table is suitable for financial reporting, whether its identifier represents a device or a customer, or whether a particular join will duplicate revenue.</p><p>Anthropic reports that, without its analytics skills, Claude&#8217;s accuracy on the organisation&#8217;s evaluations did not exceed 21 per cent. Adding the skills raised aggregate performance consistently above 95 per cent and regularly to around 99 per cent in some domains [1].</p><p>That result should be attributed to the skills as a whole. The skills include structured reference material, routing, analytical procedures and review steps. The published result does not isolate the effect of reference files from the rest of the system. What the example does show is that schemas and raw access were not enough. The agent needed curated business context and procedures for using it.</p><p>The same source also describes a maintenance problem. Anthropic observed its offline accuracy falling from about 95 per cent at launch to about 65 per cent over one month as the data environment changed. It responded by keeping skill files with the transformation models and checking whether data-model changes were accompanied by corresponding skill changes. Anthropic reports that roughly 90 per cent of relevant data-model pull requests now include a skill change in the same update [1].</p><p>This matters because exclusions and restrictions are not permanent annotations. They change when schemas, metrics, business processes and reporting policies change.</p><p>A filter may become compulsory. A source may lose its approved status. An identifier may be replaced. A previously invalid join may become valid after a governed mapping is introduced.</p><p>Knowledge about what an agent must not do therefore needs ownership, versioning and maintenance. It cannot safely remain as an old comment copied into a prompt.</p><h1>3. Defining Negative Semantic Knowledge</h1><p>Negative Semantic Knowledge is a working term used in this article. I am not presenting it as an established standard, a new logic or a replacement for existing policy and validation languages.</p><p>The idea has an important precedent in research on professional expertise.</p><p>Researchers use the term <strong>negative knowledge</strong> to describe knowledge about what is wrong, what should be avoided and which approaches lead to failure in a particular work situation. An experienced professional becomes effective not only by learning more correct actions, but also by recognising plausible wrong turns before taking them [2].</p><p>That is close to what experienced data professionals do every day.</p><p>A senior analyst knows which table to use. They also know which apparently reasonable alternative will produce a misleading result. They know which join multiplies monetary values, which field only looks like a customer identifier and which operational metric must not appear in a regulatory report.</p><p>NSK brings this knowledge into the governed semantic environment.</p><blockquote><p><strong>Negative Semantic Knowledge is explicit, governed and machine-retrievable knowledge that states when an interpretation, data combination, inference or action is prohibited, unsupported or conditional within a defined context.</strong></p></blockquote><p>This is an umbrella concept. It does not turn every restriction into the same kind of semantic rule. Instead, it groups several related rule families while preserving the difference between them.</p><p>A rule about the meaning of an identifier is not the same as a rule about access permission. A rule about an invalid join is not the same as a rule requiring human approval. A rule about missing evidence is not the same as a temporal deprecation rule.</p><p>They belong to one NSK model because they can all change whether an agent&#8217;s proposed plan is acceptable. Their types must remain explicit because different rules have different owners, evaluation methods and enforcement mechanisms.</p><h2>3.1 Explicit</h2><p>NSK cannot depend on somebody remembering that a source is &#8220;usually wrong for this&#8221;.</p><p>The restriction must be stated clearly enough for a person or system to evaluate it. It should identify what is restricted, under which conditions, for which purpose and with what expected result.</p><p>Compare these two statements:</p><blockquote><p>Be careful with the old customer table.</p></blockquote><p>And:</p><blockquote><p>The legacy customer table is not approved for current regulatory reporting. It remains suitable for reproducing reports issued before 1 January 2025. Current reporting must use the governed legal-customer model.</p></blockquote><p>The first is informal advice. The second can be evaluated.</p><h2>3.2 Governed</h2><p>A serious restriction needs an owner and a lifecycle.</p><p>The system should know who approved it, when it became active, what evidence supports it, whether an exception exists and which newer rule replaces it.</p><p>Governance also applies to changes. An agent may propose a new restriction after detecting a failure pattern, but a generated rule should not become authoritative simply because it sounds sensible. Like any other semantic change, it must be reviewed and approved.</p><h2>3.3 Machine-retrievable</h2><p>A rule can be perfectly written and still be operationally useless if the agent cannot find it before acting.</p><p>NSK must be connected to the datasets, metrics, identifiers, relationships, question types and decisions that it controls. When a candidate plan selects an asset or path, the relevant restrictions should be retrievable with it.</p><p>This does not mean that every rule must be stored in one database. It means the production environment needs a reliable way to locate and evaluate applicable rules before execution.</p><p>In this article, <strong>runtime</strong> means that wider production execution environment. It includes the agent, retrieval services, rule evaluation, query validation, permissions, tools and audit records. It does not mean the language model alone.</p><h2>3.4 Prohibited, unsupported or conditional</h2><p>Not every NSK rule says &#8220;never&#8221;.</p><p>Some actions are prohibited:</p><blockquote><p>Do not use product telemetry for audited revenue reporting.</p></blockquote><p>Some conclusions are unsupported:</p><blockquote><p>A shared address is insufficient evidence of company ownership.</p></blockquote><p>Other actions are valid only under stated conditions:</p><blockquote><p>This comparison is allowed only after both metrics are aligned to the same population and time window.</p></blockquote><p>NSK therefore includes direct prohibitions, evidential limits and compulsory preconditions.</p><p>A rule written as &#8220;always apply this filter&#8221; belongs here because it defines every query without that filter as inadmissible.</p><h2>3.5 Context matters</h2><p>A rule rarely applies everywhere.</p><p>A source may be suitable for exploratory analysis but not approved for a board report. A relationship may be useful for search but insufficient for a customer decision. A legacy metric may be valid for reproducing a historical report but unsuitable for current performance management.</p><p>Relevant context can include the question type, intended use, reporting audience, jurisdiction, time period, decision type, user role and required assurance level.</p><p>The restriction should be as narrow as the underlying reason allows. A vague global prohibition can block valid work just as easily as a missing rule can allow invalid work.</p><h2>3.6 A consistent vocabulary</h2><p>Several terms in this area are often used as if they mean the same thing. In this article, they have distinct meanings.</p><p><strong>Valid</strong> describes semantic or structural correctness. A join is valid when it preserves the intended grain, cardinality and meaning.</p><p><strong>Suitable</strong> describes fitness for a particular purpose. A source may be valid within its own domain but unsuitable for a financial report.</p><p><strong>Approved</strong> describes a governance decision. An approved source or metric has passed the organisation&#8217;s defined review process for a stated use.</p><p><strong>Authorised</strong> describes access permission. An agent may be authorised to read a source without that source being suitable or approved for the current purpose.</p><p><strong>Trusted</strong> describes what the production environment is allowed to rely on when producing an answer or taking an action.</p><p><strong>Admissible</strong> describes the result of evaluating a complete candidate plan in context. A plan is admissible only when its interpretations and combinations are valid, its sources are suitable, its governed elements are approved, the user or agent is authorised, and the evidence is trusted for the intended use.</p><p>These distinctions prevent technical access, semantic correctness and governance approval from being collapsed into one vague idea of &#8220;allowed&#8221;.</p><h1>4. What Negative Semantic Knowledge is not</h1><p>The boundaries of NSK matter because several neighbouring concepts also use the language of negation, constraints and prohibition.</p><h2>4.1 NSK is not simply a negative fact</h2><p>A negative fact describes something that does not hold in the domain:</p><blockquote><p>Company A does not own Company B.</p><p>Product X does not contain Ingredient Y.</p><p>Customer C did not place an order in June.</p></blockquote><p>An NSK rule describes the permitted use of information:</p><blockquote><p>Do not infer ownership from a shared registered address.</p><p>Do not treat missing ingredient information as proof that a product is allergen-free.</p><p>Do not infer customer inactivity from the absence of an order in one source system.</p></blockquote><p>The negative fact makes a claim about the world. The NSK rule controls an interpretation, inference or action.</p><p>Both can appear in the same knowledge graph. They should not be represented as if they were the same type of statement.</p><h2>4.2 NSK is not missing information</h2><p>Knowledge graphs commonly operate under an open-world assumption. Under this assumption, a statement that is not present may simply be unknown. Its absence does not make the statement false.</p><p>The OWL 2 Primer contrasts this with the closed-world behaviour commonly associated with databases. In OWL, a missing fact may still be true but unrecorded. OWL also supports explicit negative property assertions, which allow a system to state that a particular relationship is known not to hold [4]. Research on expressive negative statements in open-world knowledge graphs makes the same distinction between absent information and supported negative information [3].</p><p>Four states should therefore remain separate.</p><p>A <strong>positive assertion</strong> says that a fact holds.</p><p>An <strong>explicit negative assertion</strong> says that a fact does not hold.</p><p>An <strong>unknown state</strong> means the available knowledge supports neither conclusion.</p><p>A <strong>validation failure</strong> means that information required for a particular operation is missing or malformed.</p><p>The last state is not the same as false or unknown. It is the result of applying a requirement.</p><p>For example, suppose an agent finds no compliance certificate for a supplier. That may mean the supplier has no certificate. It may also mean the certificate has not been loaded, has expired, exists in an inaccessible system or is hidden from the current user.</p><p>If the process requires a current certificate, a validation mechanism can report that the requirement is not satisfied. SHACL, for example, can express required properties and generate a validation result when the minimum required number of values is missing [5]. This still does not prove the negative domain statement that the supplier has never been certified.</p><p>NSK tells the agent what it may conclude and what it must do in each state. The result might be &#8220;unknown&#8221;, &#8220;incomplete&#8221;, &#8220;not applicable&#8221;, &#8220;requires review&#8221; or &#8220;block the decision&#8221;. It should not automatically become &#8220;no&#8221;.</p><h2>4.3 NSK is not access control</h2><p>Access control asks whether a person or agent is authorised to read a source, call a tool or perform an operation.</p><p>NSK asks whether the source, interpretation or operation is suitable for the current purpose.</p><p>An analyst may be authorised to access product telemetry. That does not make product telemetry an approved source for audited revenue.</p><p>The reverse is also possible. A source may be the approved source for the question, while the current user is not authorised to access it.</p><p>A production plan must satisfy both conditions. Semantic suitability cannot replace access control, and access permission cannot establish semantic suitability.</p><h2>4.4 NSK is not reducible to data quality</h2><p>A source can be accurate, complete and current within its intended scope while still being unsuitable for another use.</p><p>Product telemetry may record device activity correctly. It can pass technical quality checks and remain unsuitable for counting legal customers.</p><p>At the same time, the boundary between data quality and NSK is not absolute. Data quality is often assessed relative to an intended use. The W3C Data Quality Vocabulary recognises that a dataset may be considered high quality for one use while different characteristics matter for another [12].</p><p>NSK therefore overlaps with contextual data quality, but it adds an operational consequence.</p><p>A quality annotation may report that identity coverage is incomplete. An NSK rule can state that a plan using the source to count legal customers is not admissible.</p><p>NSK does not replace quality measurement. It converts relevant quality, semantic and governance knowledge into an explicit boundary on agent behaviour.</p><h2>4.5 NSK is not just another prompt instruction</h2><p>A prompt can explain a rule and help an agent select a better alternative. It cannot guarantee enforcement.</p><p>The model may overlook the instruction, misunderstand its scope or generate a query that accidentally violates it. A serious restriction therefore needs a control outside the model&#8217;s discretion.</p><p>Anthropic&#8217;s guidance on Claude Code distinguishes contextual instructions from hooks that can be triggered at defined lifecycle events. Command, HTTP and MCP tool hooks can execute deterministically, and a pre-tool hook can block a command before it runs [8].</p><p>The wider principle applies beyond Claude Code.</p><p>Prompt instructions are useful for guidance and explanation. Deterministic validation checks whether the generated operation follows the rule. Permissions and tool configuration prevent prohibited actions from being available.</p><p>NSK describes the meaning of the boundary. Other controls enforce it.</p><h1>5. The typed rule families of Negative Semantic Knowledge</h1><p>NSK should not become one undifferentiated collection of warnings. Each rule needs a type because the type determines what is being controlled, who owns the rule and how it should be enforced.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!6VqN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!6VqN!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png 424w, /__u/substackcdn.com/image/fetch/$s_!6VqN!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png 848w, /__u/substackcdn.com/image/fetch/$s_!6VqN!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png 1272w, /__u/substackcdn.com/image/fetch/$s_!6VqN!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!6VqN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png" width="1456" height="668" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:668,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163950,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/209267595?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!6VqN!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png 424w, /__u/substackcdn.com/image/fetch/$s_!6VqN!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png 848w, /__u/substackcdn.com/image/fetch/$s_!6VqN!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png 1272w, /__u/substackcdn.com/image/fetch/$s_!6VqN!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b0d01d-e965-48d2-9ee5-8960af32b3c6_2600x1192.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>These families often work together. A single plan may use a semantically incorrect identity, an invalid join and a source that was never approved for the requested report.</p><p>Keeping the types separate avoids turning every problem into a vague &#8220;semantic issue&#8221;. The domain steward may own the identity definition, data engineering may own the join rule, finance may approve the reporting use, and compliance may define the evidence threshold for a decision.</p><p>The final admission result can combine all of these rules without erasing their different responsibilities.</p><h1>6. Does a Negative Knowledge Graph make sense?</h1><p>The phrase <strong>Negative Knowledge Graph</strong> sounds like the natural opposite of an ordinary knowledge graph. It can make sense, but only when its meaning is kept narrow.</p><p>In knowledge graph research, an explicit negative statement records that a particular fact is known not to hold. A graph may state that a person did not receive an award, a company does not own another company, or one biological entity does not interact with another [3]. Some recent research has used a separate negative graph to store and learn from statements of this kind [7].</p><p>That is different from missing information. Under an open-world assumption, an absent relationship is unknown rather than automatically false. A separate negative graph cannot safely be created by copying every missing triple into it.</p><p>It is also different from the negative samples used to train knowledge graph embeddings. These samples are often generated by altering positive triples so that a model can learn to distinguish observed facts from less plausible alternatives. They are training examples, not necessarily verified negative facts [6].</p><p>NSK is broader than all three.</p><p>An NSK rule may state that a source is unsuitable, a join is invalid, a metric comparison requires alignment, or an inferred relationship is insufficient for a decision. It is not necessarily claiming that a domain fact is false.</p><p>Consider the difference:</p><blockquote><p>Person P shares an address with Company C.</p></blockquote><p>This is a positive graph fact.</p><blockquote><p>A shared address must not be treated as proof of company control.</p></blockquote><p>This is an NSK rule about interpretation and evidence.</p><p>A separate Negative Knowledge Graph can be useful when explicit negative facts are a major subject of the application. It is not the best default architecture for enterprise NSK.</p><p>A restriction needs to remain connected to the asset, metric, relationship, use case, time period and decision it governs. Separating positive meaning and its usage boundaries creates another synchronisation problem.</p><p>For enterprise agent systems, the clearer approach is an <strong>NSK subgraph</strong> within the same semantic environment. The phrase <strong>semantic admissibility</strong> can then describe the process that evaluates a candidate plan against that subgraph.</p><h1>7. Representing Negative Semantic Knowledge in a Labelled Property Graph</h1><p>A <strong>Labelled Property Graph (LPG)</strong> represents information as nodes, typed relationships, labels and properties. It provides a practical way to keep NSK rules close to the assets and concepts they govern.</p><p>The following patterns are conceptual and are not complete executable Cypher statements:</p><pre><code><code>(:Dataset)-[:MUST_NOT_BE_USED_FOR]-&gt;(:UseCase)
(:Identifier)-[:MUST_NOT_BE_INTERPRETED_AS]-&gt;(:IdentityConcept)
(:QueryPattern)-[:REQUIRES_FILTER]-&gt;(:FilterRule)
(:EvidenceType)-[:INSUFFICIENT_FOR]-&gt;(:DecisionType)
(:Source)-[:DEPRECATED_FOR]-&gt;(:UseCase)</code></code></pre><p>These direct relationships are suitable for simple rules with limited context.</p><p>More complex restrictions should become first-class rule nodes. This allows the graph to record the rule type, effect, owner, approval status, validity period, evidence, enforcement mode and exceptions.</p><pre><code><code>(rule:SemanticRule {
    ruleId: "NSK-204",
    ruleType: "STRUCTURAL",
    effect: "REQUIRE",
    enforcementMode: "MANDATORY",
    impact: "HIGH",
    approvalStatus: "APPROVED",
    lifecycleStatus: "ACTIVE"
})

(rule)-[:LEFT_SOURCE]-&gt;
    (:Dataset {name: "order_lines"})

(rule)-[:RIGHT_SOURCE]-&gt;
    (:Dataset {name: "payment_events"})

(rule)-[:REQUIRES_STEP]-&gt;
    (:Transformation {
        name: "aggregate payments to one row per order"
    })

(rule)-[:FOR_USE_CASE]-&gt;
    (:UseCase {name: "revenue reporting"})</code></code></pre><p>This model does not say that either source is universally invalid. It states what must happen before their combination becomes valid for a particular use.</p><p>Rule nodes are also preferable for symmetric restrictions. If two metrics are not directly comparable, placing the rule on a separate node avoids relying on the direction of one LPG relationship.</p><p>Not every warning needs to become a graph object. A practical test is whether the statement could change the selected source, interpretation, join, graph path, filter, tool, answer or action. When it can, it is a reasonable candidate for first-class NSK representation.</p><h1>8. How an agent should use Negative Semantic Knowledge</h1><p>NSK must be evaluated before the agent executes a query or calls a tool.</p><p>A practical production flow is:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!DGfl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!DGfl!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png 424w, /__u/substackcdn.com/image/fetch/$s_!DGfl!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png 848w, /__u/substackcdn.com/image/fetch/$s_!DGfl!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DGfl!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!DGfl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png" width="1456" height="618" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:618,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:807789,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/209267595?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!DGfl!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png 424w, /__u/substackcdn.com/image/fetch/$s_!DGfl!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png 848w, /__u/substackcdn.com/image/fetch/$s_!DGfl!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DGfl!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c79fb41-5193-4ce0-864b-41e1bc8cb36e_1536x652.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The candidate semantic plan describes how the question could be answered. It identifies the proposed sources, identities, metrics, joins, graph traversals, filters, aggregations and tools. At this stage, the plan is plausible but not yet admissible.</p><p>The production environment then retrieves the NSK rules connected to every material part of the plan. It must check combinations as well as individual assets. Two suitable datasets can still form an invalid join. Two approved metrics can still be non-comparable. A path made from trusted relationships can still be insufficient for the intended decision.</p><p>Semantic admissibility evaluation brings these findings together. The result may be <code>ADMIT</code>, <code>ADMIT_WITH_REQUIREMENTS</code>, <code>CLARIFY</code>, <code>REVIEW</code> or <code>BLOCK</code>. These are outcomes for the complete plan, not permanent properties of a source.</p><p>Only an admitted plan should be converted into SQL, Cypher or a tool call. The generator receives the selected sources together with required filters, permitted joins, metric versions and traversal limits.</p><p>The generated operation should then be checked deterministically. Here, deterministic validation means that the same operation and the same rules produce the same result without depending on the language model&#8217;s judgement.</p><p>For the most serious restrictions, the prohibited source or tool should not be available in that context at all. The production environment should also preserve the decision trace, including the selected plan, matched NSK rules, required changes, rule versions and any approved exception.</p><p>This extends the planning model from <em>Labelled Property Graphs, GraphRAG and Text2Query</em> [10]. Query planning identifies a possible route. Semantic admissibility evaluation determines whether that route is acceptable in the current context. Query generation expresses the admitted route in executable form.</p><h1>9. Extending the Minimum Semantic Contract</h1><p>NSK is not a replacement for the ideas in my earlier publications. It gives the negative side of those ideas a clearer structure.</p><h2>9.1 The Ontology Trap</h2><p><em>The Ontology Trap: When AI Scales Unvalidated Meaning</em> argued that AI-generated concepts, relationships and definitions should be treated as proposals until they have been validated [9].</p><p>The same rule applies to negative knowledge.</p><p>An agent can propose that a join is unsafe, a source should be prohibited or a comparison should require additional conditions. Those proposals may be useful. They should not become authoritative restrictions without evidence, ownership and approval.</p><p>An incorrect positive relationship can allow a bad plan. An incorrect prohibition can block a valid one.</p><p>Both are changes to operational meaning, so both require governance.</p><h2>9.2 Labelled Property Graphs, GraphRAG and Text2Query</h2><p><em>Labelled Property Graphs, GraphRAG and Text2Query</em> separated query planning from query generation [10].</p><p>The difficult part is not merely writing valid syntax. The system must choose the correct starting entities, relationship paths, traversal depth, aggregations and temporal filters.</p><p>NSK adds semantic admissibility evaluation between planning and generation.</p><p>A candidate plan can be coherent while remaining unacceptable. It may use a source that is not approved for the audience, compare incompatible metrics or rely on evidence that is insufficient for the decision.</p><p>Planning identifies a possible route. NSK determines whether the complete route is admissible.</p><h2>9.3 From LPG to GraphRAG: The Minimum Semantic Contract</h2><p><em>From LPG to GraphRAG: The Minimum Semantic Contract</em> defined the Minimum Semantic Contract as the smallest validated set of semantic, structural, evidential, temporal, governance and retrieval commitments that an LPG-backed GraphRAG environment may rely on [11].</p><p>It already established that not every graph fact, relationship or retrieval path should be trusted equally. It also introduced the need to exclude, qualify, escalate or block unsuitable information.</p><p>NSK makes these negative commitments explicit and typed.</p><p>A mature Minimum Semantic Contract should define what concepts mean, but also which interpretations are invalid. It should identify approved retrieval paths, but also which paths must not support a particular decision. It should define metrics, but also the conditions under which they are not comparable. It should identify trusted evidence, but also state when absence must remain unknown.</p><p>NSK should therefore be understood as part of the Minimum Semantic Contract, not as another architectural layer placed beside it.</p><h1>10. Conclusion</h1><p>Enterprise semantics has traditionally concentrated on positive knowledge.</p><p>It describes the available datasets, concepts, metrics, relationships and tools. That helps an agent find a possible route to an answer.</p><p>Production agents also need governed knowledge of the routes they must not take.</p><p>Negative Semantic Knowledge provides a name for that missing body of knowledge. It covers prohibited interpretations, invalid combinations, evidential limits, governance restrictions, procedural preconditions, temporal boundaries and decision-use controls.</p><p>NSK is not one new rule language. It is an umbrella for typed restrictions that remain connected to their proper owners and enforcement mechanisms.</p><p>It is also not simply a graph of negative facts.</p><p>A Negative Knowledge Graph makes sense when the main purpose is to represent explicit statements known not to hold. Enterprise NSK is broader. It governs how positive facts, negative facts, missing information and available tools may be used.</p><p>The better architecture is usually an NSK subgraph connected to the same semantic environment as the assets and concepts it controls.</p><p>The agent can then propose a plan. The production environment can retrieve the relevant NSK, evaluate semantic admissibility, validate the generated operation and preserve the decision trace.</p><p>This does not create an agent that refuses every difficult question.</p><p>It creates an agent that can distinguish between an answer that is merely possible and one that is justified for the stated purpose.</p><p>Positive semantics explains what the enterprise knows.</p><p>Negative Semantic Knowledge defines where the legitimate use of that knowledge ends.</p><h1>11. References</h1><ol><li><p>Anthropic, <em>How Anthropic enables self-service data analytics with Claude</em><br><a href="https://claude.com/blog/how-anthropic-enables-self-service-data-analytics-with-claude">https://claude.com/blog/how-anthropic-enables-self-service-data-analytics-with-claude</a></p></li><li><p>Martin Gartmeier, Johannes Bauer, Hans Gruber and Helmut Heid, <em>Negative Knowledge: Understanding Professional Learning and Expertise</em><br><a href="https://link.springer.com/article/10.1007/s12186-008-9006-1">https://link.springer.com/article/10.1007/s12186-008-9006-1</a></p></li><li><p>Hiba Arnaout, <em>Enriching Open-world Knowledge Graphs with Expressive Negative Statements</em><br><a href="https://publikationen.sulb.uni-saarland.de/handle/20.500.11880/36992">https://publikationen.sulb.uni-saarland.de/handle/20.500.11880/36992</a></p></li><li><p>W3C, <em>OWL 2 Web Ontology Language Primer, Second Edition</em><br><a href="https://www.w3.org/TR/owl2-primer/">https://www.w3.org/TR/owl2-primer/</a></p></li><li><p>W3C, <em>Shapes Constraint Language, SHACL</em><br><a href="https://www.w3.org/TR/shacl/">https://www.w3.org/TR/shacl/</a></p></li><li><p>Kian Ahrabian, Aarash Feizi, Yasmin Salehi, William L. Hamilton and Avishek Joey Bose, <em>Structure Aware Negative Sampling in Knowledge Graphs</em><br><a href="https://aclanthology.org/2020.emnlp-main.492/">https://aclanthology.org/2020.emnlp-main.492/</a></p></li><li><p>Rita T. Sousa and Heiko Paulheim, <em>Improving Knowledge Graph Embeddings through Contrastive Learning with Negative Statements</em><br><a href="https://arxiv.org/abs/2510.11868">https://arxiv.org/abs/2510.11868</a></p></li><li><p>Anthropic, <em>Steering Claude Code: when to use CLAUDE.md, skills, hooks, and subagents</em><br><a href="https://claude.com/blog/steering-claude-code-skills-hooks-rules-subagents-and-more">https://claude.com/blog/steering-claude-code-skills-hooks-rules-subagents-and-more</a></p></li><li><p>Sergey Vasiliev, <em>The Ontology Trap: When AI Scales Unvalidated Meaning</em><br><a href="/__u/sergeyvasiliev.substack.com/p/the-ontology-trap-when-ai-scales">https://sergeyvasiliev.substack.com/p/the-ontology-trap-when-ai-scales</a></p></li><li><p>Sergey Vasiliev, <em>Labelled Property Graphs, GraphRAG and Text2Query</em><br><a href="/__u/sergeyvasiliev.substack.com/p/labelled-property-graphs-graphrag?utm_source=chatgpt.com">https://sergeyvasiliev.substack.com/p/labelled-property-graphs-graphrag</a></p></li><li><p>Sergey Vasiliev, <em>From LPG to GraphRAG: The Minimum Semantic Contract</em><br><a href="/__u/sergeyvasiliev.substack.com/p/from-lpg-to-graphrag-the-minimum">https://sergeyvasiliev.substack.com/p/from-lpg-to-graphrag-the-minimum</a></p></li><li><p>W3C, <em>Data on the Web Best Practices: Data Quality Vocabulary</em><br><a href="https://www.w3.org/TR/vocab-dqv/">https://www.w3.org/TR/vocab-dqv/</a></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!fi9p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!fi9p!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!fi9p!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!fi9p!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fi9p!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!fi9p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2095763,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/209267595?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!fi9p!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!fi9p!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!fi9p!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fi9p!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa44b94a-56bc-4afc-9fdc-f97d029396de_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Semantic Layer Naming Crisis]]></title><description><![CDATA[How a useful architecture term became a vendor catch-all]]></description><link>https://sergeyvasiliev.substack.com/p/the-semantic-layer-naming-crisis</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/the-semantic-layer-naming-crisis</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:30:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KRve!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Table of contents</h2><ol><li><p>From ambiguity to naming crisis</p></li><li><p>Who is it for, what does it sit over, and where is it applied?</p></li><li><p>RDF 1.2 is useful, but it does not own the semantic layer</p></li><li><p>Representation is only part of the job</p></li><li><p>Name the function, not the ambition</p></li><li><p>A practical test for products and designs</p></li><li><p>Summary</p></li></ol><h1>1. From ambiguity to naming crisis</h1><p>In <a href="/__u/sergeyvasiliev.substack.com/p/the-pragmatic-semantic-layer-manifesto">The Pragmatic Semantic Layer Manifesto</a>, I argued that the semantic layer is not one clearly defined piece of technology. Depending on the speaker, it may refer to a governed metrics model, an ontology, a catalogue, a knowledge graph, a query abstraction, a data product contract or a service that supplies context to an AI agent.</p><p>All of these deal with shared definitions or context, but they do not perform the same job. They serve different users, sit in different parts of a system and require different forms of ownership and support.</p><p>Since then, the problem has moved beyond ordinary ambiguity. The term is now applied so widely that it often reveals almost nothing about the product or component carrying it.</p><p>The semantic layer appears to have stopped being an architecture term and become a universal vendor spell. Once those two words appear in a product announcement, metrics become consistent, data becomes trustworthy, governance starts enforcing itself, lineage appears and AI agents finally stop making things up. Apparently, most enterprise problems were waiting for the correct capitalisation.</p><p>The joke works because the inflation of the term has practical consequences. A vendor claiming to provide a semantic layer may be offering governed metrics and SQL or SPARQL generation, an ontology management tool, entity matching across systems, a metadata catalogue, a graph platform or a service that supplies evidence and policy context to an AI agent.</p><p>Several of those functions may exist in the same platform, and each can be useful. Yet the label alone no longer tells us what has been implemented, which decisions the product makes or how it affects real work.</p><p>Useful architecture terms normally create expectations. They help us understand what a component owns, where its boundaries lie, how other systems use it and what happens when it fails. Once one name can cover almost any product concerned with data, context or business language, it no longer provides that clarity.</p><p>This is the naming crisis considered here. The problem is not simply that people disagree about one precise definition, but that the term can now survive almost any definition at all.</p><h1>2. Who is it for, what does it sit over, and where is it applied?</h1><p>Before discussing products or standards, three questions help reveal what a proposed semantic layer is actually expected to do: <em>who uses the shared definitions, what does the service sit over, and where are those definitions applied?</em></p><p>For a business analyst, the main goal may be consistent reporting. Terms such as &#8220;net revenue&#8221;, &#8220;active customer&#8221; or &#8220;renewal rate&#8221; need to resolve to approved calculations, dimensions and joins whenever a report or query is produced.</p><p>An integration team may face a different problem. Its work could involve mapping the same customer, product or contract across applications, aligning vocabulary between systems and managing the effects of changing source structures. Here the focus is identity, mapping and controlled change rather than analytical calculation.</p><p>Inside an AI agent&#8217;s operating environment, shared definitions may need to influence decisions directly. The agent may have to identify the authoritative source for a task, check whether information is current, respect the user&#8217;s permissions and determine whether a proposed action requires approval.</p><p>Although all three cases involve semantics, they call for different designs, interfaces and operating practices. A model used to generate SQL is not maintained in the same way as an identity service, while a catalogue used for discovery has a different role from a policy check placed inside an application&#8217;s execution path.</p><p>What the service sits over also changes the task. Above a data warehouse, it may hide joins and expose approved measures. Across data products, it may align identities and contracts. Over a knowledge graph, it may provide connected facts and paths that several applications can reuse.</p><p>The third question, where the definitions are applied, separates documentation from control. A catalogue may explain how a metric should be calculated without ensuring that a dashboard uses that calculation. Similarly, a graph may record which policy applies to an action without placing the policy check into the system that carries out the action.</p><p>Descriptive tools can still be valuable. Glossaries, catalogues and conceptual models may improve discovery, ownership and communication even when they do not control application behaviour. Problems begin when a descriptive product is presented as if it governs every query, decision and action in the organisation.</p><p>From a practitioner&#8217;s point of view, the important distinction is therefore not whether a vendor uses the phrase &#8220;semantic layer&#8221;. It is whether the product supplies definitions, applies them during query or application execution, or does both.</p><h1>3. RDF 1.2 is useful, but it does not own the semantic layer</h1><p>Renewed interest in semantic layers may look like a late victory for RDF and the Semantic Web. The market is again discussing shared concepts, machine-readable relationships, connected context and reusable models, all of which sound familiar to people who have worked with RDF for many years.</p><p>The language is familiar, but that does not mean the underlying systems have converged on RDF.</p><p>RDF 1.2 contains worthwhile improvements. In particular, its support for triple terms and updated reification makes it easier to describe statements themselves, including who made a claim, where it came from and what other information is attached to it. A graph can record that a person or system made a claim without automatically treating the claim as true, which is useful when sources disagree or when information needs to be traced back to its origin. (<a href="https://www.w3.org/TR/rdf12-concepts/">W3C RDF 1.2 Concepts and Abstract Syntax</a>)</p><p>These changes can improve provenance, exchange and statement-level context. They deserve to be assessed on those terms.</p><p>They do not provide a complete enterprise operating model, nor do the RDF specifications claim that they do. RDF 1.2 defines a standard way to represent and interpret information, while concerns such as metric ownership, source mappings, approval processes, policy enforcement and application integration remain matters for the organisations and systems using it.</p><p>Confusing those two levels creates the problem. A standard can make claims and annotations easier to exchange without deciding which department owns a definition, which source should be used in a particular process or whether an AI agent may carry out a proposed action.</p><p>At the time of writing, the core RDF 1.2 documents are still at the W3C Candidate Recommendation stage rather than being final Recommendations. That is a normal part of standards development, but it also makes any declaration of a completed market victory premature.</p><p>More importantly, the growing use of the phrase &#8220;semantic layer&#8221; tells us very little about RDF adoption. Analytics products already use the label for governed metric definitions, automated joins and SQL generation. The <a href="https://docs.getdbt.com/docs/use-dbt-semantic-layer/dbt-sl">dbt Semantic Layer</a>, for example, is publicly described through MetricFlow, centralised metrics and query generation rather than through RDF.</p><p>A product can therefore adopt the name without adopting RDF, just as an organisation can use RDF without calling the result a semantic layer. Counting appearances of the word &#8220;semantic&#8221; in product marketing is not a useful measure of standards success.</p><p>Nor does this need to become another contest between RDF and Labelled Property Graphs, LPG. LPG may be practical when an application relies heavily on relationship properties, graph traversal and changing operational state. RDF may be the stronger fit where standardised exchange, global identifiers and formal interpretation are more important.</p><p>Relational models remain effective for metrics and transactions, while documents continue to matter when context depends on clauses, explanations or human language. Serious systems often combine several of these approaches because they are solving several different problems.</p><p>RDF 1.2 should be judged through working implementations, interoperability, portability, tooling and successful use in production. A marketing trend may create attention, but it does not prove adoption.</p><h1>4. Representation is only part of the job</h1><p>A persistent mistake in semantic projects is to assume that representing a fact is the same as putting that fact to work.</p><p>A model can record who owns a metric, which policy applies to an action and which source is considered authoritative. Those records become operationally useful only when reports, applications and AI agents consult them at the appropriate point and respond in a predictable way.</p><p>In analytics, an approved revenue definition creates limited value when delivery teams continue to build local calculations in dashboards and spreadsheets. Value appears when query tools reuse the approved logic, changes are distributed in a controlled way and users can see which definition produced a result.</p><p>The same principle applies to AI agents. An ontology might define an authoritative source, while a graph connects that source to a customer, policy and decision. Additional application logic is still required to select the right evidence, check permissions, handle exceptions and record what the agent did.</p><p>Putting shared definitions into practice therefore requires more than a model. Someone must decide which source or definition takes priority in a given context, and mappings must connect business concepts to tables, APIs, documents and application objects. Version control is also essential because policies, calculations and source structures change over time.</p><p>Governance determines who may approve, alter or retire those definitions. Security determines how permissions on conceptual objects relate to permissions on the underlying data. Production support covers deployment, monitoring, testing and recovery, especially when other systems depend on the service during query or application execution.</p><p>Change exposes whether these arrangements are real. When a source field is renamed, the organisation needs to know which mappings, reports and applications are affected. When a policy is replaced, teams must understand which processes should use the new version and how past decisions will remain explainable.</p><p>Adoption presents another test. A shared service that is harder to use than the underlying data will be bypassed, particularly when teams are under delivery pressure. Good interfaces, documentation, ownership and support matter as much as the elegance of the model.</p><p>The practical distinction is between recording agreed definitions and making those definitions influence real queries, decisions and actions. Both can be useful, but they should not be presented as the same achievement.</p><h1>5. Name the function, not the ambition</h1><p>Solving the naming crisis does not require a new universal taxonomy. Creating eight more kinds of semantic layer would simply provide future conference speakers with more boxes to rearrange.</p><p>A more useful method is to name a component through its domain, its main function and the point at which it is used. The examples below are working descriptions, not proposed standards or established industry categories.</p><p>A team governing measures, dimensions, joins and calculation rules might reasonably call its service an <strong>analytics metrics layer</strong>. That description tells a reader more than the generic phrase because it points to analytical consistency and query generation.</p><p>Where the main task is to align concepts, identifiers and schemas across applications, <strong>semantic integration service</strong> may be a clearer description. Its success would be visible in reduced mapping duplication, more reliable entity matching and better control over source changes.</p><p>An Enterprise Knowledge Graph, EKG, can remain an appropriate name when the system connects reusable entities, facts and relationships across domains. The term does not guarantee good governance or successful adoption, but it gives the reader a clearer idea of what is being built.</p><p>For an AI agent, a team might use the working description agent context and control service when the component selects evidence, applies permissions, supplies workflow state and restricts available actions. Calling it a service rather than assuming it is always a layer also leaves room for a more honest technical design.</p><p>Other products do not need a new label. An ontology can remain an ontology, a metadata catalogue can remain a catalogue and a graph database can remain a graph database. None becomes more useful simply because &#8220;semantic&#8221; is placed in front of its name.</p><p>Clearer descriptions also reduce procurement risk. A buyer seeking consistent metrics should not discover halfway through a programme that the product mainly supports conceptual modelling. A team seeking controls for AI agents should not receive a catalogue, a search interface and a prompt template, while an organisation purchasing a graph platform should not assume that identity, provenance and governance arrive automatically with the database licence.</p><p>Platforms may combine several of these functions, and that can be a sensible design. The provider should still explain which parts are included, how they interact and where each boundary lies, rather than leaving the buyer to imagine that one impressive label covers everything.</p><h1>6. A practical test for products and designs</h1><p>When a product is described as a semantic layer, the most useful question is not whether it stores definitions, but what happens when those definitions meet disagreement, change and real use.</p><p>Begin with a conflict. Give two departments different definitions of the same business term, then ask the provider to show how the system identifies the disagreement and determines which definition applies. A credible demonstration should also reveal whether both versions can remain valid in different contexts, who may approve them and how reports or applications choose between them.</p><p>Next, introduce change by modifying a source field, replacing a policy or changing the effective date of a metric. The product should show which mappings, reports, models and processes are affected, rather than providing only a screen where someone can edit the definition.</p><p>Finally, follow one result back through the system. It should be possible to identify the definition and version that were used, the evidence that supported the result and the person or team that owned the relevant decision. When the result led to an action, the trace should also show which permissions or policies were checked.</p><p>These exercises test authority, change management and explainability. They reveal far more than a feature list because they show whether the product participates in real work or simply presents related metadata.</p><p>Two further questions expose the technical boundary. What happens when the service is unavailable, and can the definitions, mappings and policies be exported in a form that remains useful elsewhere? The first question shows whether other systems depend on it during normal operation, while the second reveals how tightly the organisation is tied to one platform.</p><p>Internal projects deserve the same scrutiny. Teams should be able to explain who maintains the service, how changes are reviewed, which consumers rely on it and what outcome has improved since it was introduced.</p><p>Depending on the purpose, success might mean fewer disputes between reports, faster integration of new sources, more consistent policy checks, safer AI agent actions or clearer explanations of automated decisions. The measure should follow from the job the component is meant to perform.</p><p>When the response to these questions returns to a glowing box labelled &#8220;Semantic Layer&#8221;, the label is still doing more work than the system.</p><h2>Summary</h2><p>The phrase &#8220;semantic layer&#8221; is becoming too broad to function as a useful architecture term. Vendors now use it for metric models, metadata, ontologies, knowledge graphs, integration services, AI context and application controls, even though these products serve different users and influence systems in different ways.</p><p>A practical assessment should begin by asking who uses the shared definitions, what the component sits over and where those definitions are applied. The answers show whether the product documents concepts, influences query generation, participates in application execution or combines several of these roles.</p><p>RDF 1.2 is valuable standards work, particularly where claims, sources and statement-level context need to be represented and exchanged. However, the wider popularity of semantic layer language does not demonstrate RDF adoption, and a representation standard does not provide ownership, mappings, approval processes or application controls by itself.</p><p>Neither RDF nor a Labelled Property Graph automatically creates a complete semantic design. The right choice depends on the problem, the need for interoperability, the systems involved and how the information will be used.</p><p>Rather than inventing another universal definition, practitioners should describe each component through its domain, function and point of use. Terms such as analytics metrics layer, semantic integration service or agent context and control service can be useful as working descriptions, provided they are not mistaken for fixed industry categories.</p><p>Ultimately, the value of any semantic product lies in what it changes in real work: whether reports agree more often, integration becomes easier, policies are applied consistently and automated decisions can be explained.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!KRve!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!KRve!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!KRve!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!KRve!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!KRve!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!KRve!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2489620,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/207283693?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!KRve!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!KRve!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!KRve!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!KRve!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72c17d94-b033-437c-abe8-e879dde34d9e_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[From LPG to GraphRAG: The Minimum Semantic Contract]]></title><description><![CDATA[How MVO becomes the runtime boundary for trusted GraphRAG]]></description><link>https://sergeyvasiliev.substack.com/p/from-lpg-to-graphrag-the-minimum</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/from-lpg-to-graphrag-the-minimum</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Fri, 10 Jul 2026 09:57:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KpyP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Table of Contents</h3><ol><li><p>Introduction</p></li><li><p>Terminology used in this article</p></li><li><p>The flow: LPG &#8594; AKG &#8594; PSL &#8594; MSC</p></li><li><p>Why MVO is the right starting point</p></li><li><p>Why MVO and MVG are not enough for GraphRAG runtime use</p></li><li><p>Defining the Minimum Semantic Contract</p></li><li><p>What the contract must contain</p></li><li><p>Implementing and operating the MSC in an LPG</p></li><li><p>Closing view</p></li><li><p>References</p></li></ol><div><hr></div><h1>1. Introduction</h1><p>In previous posts, I described a progression from graph structure to operational semantics, and from operational semantics to semantic control.</p><p>The post on when a Labelled Property Graph can legitimately be considered an Applied Knowledge Graph defined the maturity threshold: an LPG becomes an AKG when labels carry domain meaning, relationships encode valid domain interactions, constraints enforce correctness, applications rely on the graph, and system behaviour would degrade if the graph semantics were wrong [1].</p><p>The Pragmatic Semantic Layer Manifesto then moved the argument from graph maturity to architectural purpose. It positioned the semantic layer as something broader than metadata or analytics vocabulary. A pragmatic semantic layer must combine meaning, access and control. It must help systems and agents retrieve the right context, follow the right path, apply the right policy and explain what happened afterwards [2].</p><p>Other posts filled in adjacent parts of the same argument. GraphRAG was framed as a pipeline, not a single pattern [3]. Token efficiency was positioned as a graph modelling problem, not only a prompt optimisation problem [4]. GraphRAG evaluation was moved beyond answer quality towards retrieval coverage, path faithfulness, provenance completeness, cost, latency and decision usefulness [5]. Ontology work was treated as a source of infrastructure risk when generated structures enter production without validation [6]. Labels, graph summarisation and AKG runtime behaviour were discussed as practical mechanisms for making semantics executable [7], [8], [9].</p><p>This post is the next step in that sequence.</p><p>The flow is:</p><pre><code><code>LPG &#8594; AKG &#8594; Pragmatic Semantic Layer &#8594; Minimum Semantic Contract for GraphRAG</code></code></pre><p>The new question is not: <em>Can an LPG become an AKG?</em></p><p>That was already addressed.</p><p>The new question is: <em>Once an LPG-backed AKG becomes part of a GraphRAG runtime, which semantic commitments is the runtime allowed to trust?</em></p><p>That is the role of the Minimum Semantic Contract.</p><p>This argument also connects to external work. The RAG work by Lewis et al. formalised one influential formulation of combining parametric language models with external non-parametric memory for knowledge-intensive language generation [10]. GraphRAG extends retrieval by constructing and using graph structures, communities and summaries for question answering over private corpora [11], [12]. Property graph systems, Neo4j Cypher, openCypher and GQL give the implementation side a stronger standardisation path [14], [15], [16], [17]. W3C standards and publications, including OWL, SHACL, PROV-O, RDF 1.2 and SKOS, give useful reference points for formal meaning, validation, provenance, statement-level metadata and controlled vocabularies [18], [19], [20], [21], [22].</p><p>The point of this article is not to replace those traditions.</p><p>The point is to define the missing implementation artefact between a Minimum Valuable Ontology and a production GraphRAG capability.</p><p>A GraphRAG system should not treat every node, relationship, property, extracted fact, generated summary or inferred link as equally trusted. Professional graph systems contain candidates, drafts, deprecated structures, low-confidence extractions, duplicated entities, old policy versions, disputed evidence and experimental model changes. That is normal.</p><p>What is not normal is allowing all of that structure to enter retrieval and generation as if it had the same authority.</p><p>The Minimum Semantic Contract defines the smallest explicit set of semantic, structural, evidential, temporal and retrieval commitments that the GraphRAG runtime can rely on.<br>Small enough to ship.<br>Explicit enough to test.<br>Strict enough to trust.<br>Pragmatic enough to evolve.</p><h1>2. Terminology used in this article</h1><p>The following short forms are used consistently throughout the article.</p><h2>Labelled Property Graph, LPG</h2><p>A Labelled Property Graph, LPG, is a graph model built from nodes, relationships, labels and properties. Nodes can have one or more labels. Relationships have types. Both nodes and relationships can carry properties.</p><p>In this article, LPG refers to the implementation model.</p><h2>Applied Knowledge Graph, AKG</h2><p>An Applied Knowledge Graph, AKG, is a knowledge graph used in a real workflow where graph structure, graph semantics, application behaviour and governance are managed together.</p><p>In this article, AKG refers to a graph that participates in operational behaviour, not only storage, search or reporting.</p><h2>Pragmatic Semantic Layer, PSL</h2><p>A Pragmatic Semantic Layer, PSL, is the combination of meaning, access and control.</p><p>It defines the concepts and relationships that matter, makes them usable through queries and retrieval, and governs how they are owned, trusted, versioned, explained and changed.</p><p>In this article, PSL refers to the architectural layer that turns semantic structure into operational control.</p><h2>Minimum Valuable Ontology, MVO</h2><p>A Minimum Valuable Ontology, MVO, is the smallest set of domain concepts, relationship meanings, constraints and validation expectations that makes a specific workflow meaningfully better.</p><p>In this article, MVO means <strong>Minimum Valuable Ontology</strong>, not Minimum Viable Ontology.</p><p>The distinction matters.<br>Viable means it can exist.<br>Valuable means it improves work.</p><p>The minimum viable ontology and graph pattern is useful as a delivery reference point in enterprise knowledge graph guidance [24]. This article deliberately raises the bar from viable to valuable because GraphRAG runtime trust requires more than the existence of a small ontology slice.</p><h2>Minimum Valuable Graph, MVG</h2><p>A Minimum Valuable Graph, MVG, is the smallest connected graph slice, with real instance data and evidence, that proves the value of the MVO in a specific use case.</p><p>The MVO defines the minimum useful meaning.<br>The MVG provides the minimum useful connected evidence.</p><h2>Retrieval-Augmented Generation, RAG</h2><p>Retrieval-Augmented Generation, RAG, combines retrieval from external sources with generation by a language model.</p><p>In this article, RAG refers to the general retrieval plus generation pattern.</p><h2>GraphRAG</h2><p>GraphRAG is graph-based retrieval-augmented generation. It uses graph structure, entities, relationships, paths, communities, summaries, constraints and evidence to improve retrieval and context assembly for generation.</p><p>In this article, GraphRAG refers specifically to implementations where graph semantics influence retrieval, context packaging, explanation or answer constraints.</p><h2>Large Language Model, LLM</h2><p>A Large Language Model, LLM, is the language model used for interpretation, extraction, summarisation, planning, generation or query construction.</p><p>In this article, the LLM is not treated as the source of semantic authority. It is one component in a governed retrieval and generation architecture.</p><h2>Minimum Semantic Contract, MSC</h2><p>A Minimum Semantic Contract, MSC, is the smallest validated set of semantic, structural, evidential, temporal, governance and retrieval commitments that an LPG-backed GraphRAG runtime is allowed to rely on.</p><p>In this article, MSC is the proposed next implementation artefact after MVO and MVG.</p><h1>3. The flow: LPG &#8594; AKG &#8594; PSL &#8594; MSC</h1><p>The sequence matters because each step answers a different question.</p><h2>LPG answers the representation question</h2><p><em>How do we represent entities, relationships, properties and paths in a way that engineers can build, query and evolve?</em></p><p>The LPG gives us labelled nodes, typed relationships, properties and traversals. It is a strong implementation model for domains where relationships matter and where relationship properties such as source, confidence, validity, timestamp, owner, status or weight need to be represented directly.</p><p>This is why the LPG model is practical for GraphRAG. It allows domain-specific relationship types and properties to sit close to the retrieval path. The graph does not only store connected entities. It can store why they are connected, when the connection applies, who approved it, which evidence supports it and whether the connection is trusted for runtime use.</p><p>However, an LPG is not automatically a knowledge graph. It may be a graph-shaped data store. It may support analytics, navigation or application queries. That alone does not make it semantic infrastructure.</p><h2>AKG answers the operational question</h2><p><em>When does the graph become part of the system&#8217;s behaviour?</em></p><p>An LPG becomes an AKG when graph semantics enter the control path. This happens when labels act as domain types, relationship types define valid interactions, constraints enforce correctness, workflows depend on graph patterns and AI systems are grounded or constrained by the graph [1].</p><p>In GraphRAG, this point is especially important. If the graph only stores chunks and embeddings, it is infrastructure. If the graph constrains what the LLM may retrieve, cite, infer or say, it becomes part of runtime behaviour.</p><p>That shift creates responsibility.</p><p>Once the graph influences generated answers, its semantics are no longer optional documentation. They become operational commitments.</p><h2>PSL answers the architecture question</h2><p><em>How do we make agreed meaning usable through access and control?</em></p><p>The Pragmatic Semantic Layer extends the AKG idea into an architectural pattern. Meaning is not enough. A useful semantic layer must also provide access and control [2].</p><p>Access means the semantic structure is queryable, traversable, retrievable and usable by applications and agents.</p><p>Control means the semantic structure is governed through ownership, policies, evidence, lineage, quality rules, versioning, permissions, change control and audit.</p><p>This turns semantics from documentation into infrastructure.</p><p>For GraphRAG, this is critical. A semantic layer that cannot guide retrieval is too passive. A semantic layer that cannot preserve evidence is too weak. A semantic layer that cannot express refusal, qualification or escalation is too unsafe for production AI.</p><h2>MSC answers the runtime trust question</h2><p><em>Which semantic commitments can GraphRAG rely on when retrieving, assembling context, generating answers, explaining evidence or blocking unsafe outputs?</em></p><p>This is the next logical step.</p><p>An MVO can define the useful concepts and relationship meanings. An MVG can provide the useful connected data. But the GraphRAG runtime still needs to know which parts are trusted enough to influence generation.</p><p>The MSC is that boundary.</p><p>It says:</p><ul><li><p>These labels are trusted.</p></li><li><p>These relationship types have approved meaning.</p></li><li><p>These source-target patterns are valid.</p></li><li><p>These properties are mandatory.</p></li><li><p>These evidence rules must hold.</p></li><li><p>These temporal filters must be applied.</p></li><li><p>These retrieval paths are approved.</p></li><li><p>These graph facts may enter runtime context.</p></li><li><p>These graph facts must remain in review, staging or exclusion.</p></li><li><p>The MSC is therefore not a larger ontology.</p></li></ul><p>It is a runtime contract over the part of the semantic layer that GraphRAG is allowed to use.</p><h1>4. Why MVO is the right starting point</h1><p>GraphRAG does not usually need a complete enterprise ontology before it delivers value.</p><p>It needs a focused semantic slice that is relevant to a real capability.</p><p>Examples:</p><ul><li><p>Which obligations apply to this business process in this jurisdiction?</p></li><li><p>Which suppliers create exposure for this active contract?</p></li><li><p>Which contractual clauses conflict with the current negotiation playbook?</p></li><li><p>Which system dependencies increase the risk of an unresolved vulnerability?</p></li><li><p>Which customer commitments are affected by a changed regulatory rule?</p></li></ul><p>These are not abstract questions. They are operational questions.</p><p>They do not require every enterprise concept to be fully modelled. They require the concepts and relationships that make the answer reliable.</p><p>That is why <strong>Minimum Valuable Ontology</strong> is the right starting point.</p><ul><li><p>An MVO should define:</p></li><li><p>the domain concepts that matter for the capability</p></li><li><p>the relationship meanings that support the workflow</p></li><li><p>the constraints that prevent invalid interpretation</p></li><li><p>the evidence expectations that make claims traceable</p></li><li><p>the temporal and version rules that keep answers current</p></li><li><p>the ownership and review rules that make changes governable</p></li></ul><p>The associated MVG should then provide enough connected instance data to test whether the MVO is useful in practice.</p><p>For an LPG practitioner, this is a natural delivery pattern.</p><ul><li><p>Start with a workflow.</p></li><li><p>Identify the concepts and relationships that matter.</p></li><li><p>Build the graph slice.</p></li><li><p>Test it against real questions.</p></li><li><p>Expand only where ambiguity, risk or user value justifies expansion.</p></li><li><p>The point is not to model less for the sake of speed.</p></li><li><p>The point is to model the smallest semantic structure that is valuable enough to use and strict enough to trust.</p></li></ul><p>This is also where ontology engineering practice remains relevant. Classic ontology guidance emphasises scope, intended use, users, maintainers and the questions the ontology should answer [23]. In a GraphRAG setting, those questions become more operational. They are not only competency questions for ontology design. They become release questions for retrieval and generation.</p><p>The MVO should therefore be shaped by the real GraphRAG capability, not by an abstract desire for semantic completeness.</p><h1>5. Why MVO and MVG are not enough for GraphRAG runtime use</h1><p>MVO and MVG are necessary, but they are not sufficient for production GraphRAG.</p><p>The MVO may include meanings that are still being refined.</p><p>The MVG may include instance data at different levels of trust.</p><p>The graph may contain:</p><ul><li><p>candidate labels</p></li><li><p>unreviewed relationships</p></li><li><p>generated mappings</p></li><li><p>low-confidence extractions</p></li><li><p>duplicate entities</p></li><li><p>stale policy versions</p></li><li><p>deprecated relationship types</p></li><li><p>draft summaries</p></li><li><p>conflicting evidence</p></li><li><p>experimental retrieval paths</p></li></ul><p>This is not a failure. It is what living graph systems look like.</p><p>The problem starts when the GraphRAG runtime treats all of these structures as equally authoritative.</p><p>A graph can be useful for exploration while still being unsafe for generation.</p><p>A relationship can be interesting during discovery while still being unapproved for runtime retrieval.</p><p>A generated summary can be helpful during review while still being too weak to enter a final answer.</p><p>A label can exist in the graph while still being excluded from trusted context.</p><p>That distinction is essential.</p><p>GraphRAG is not only about finding related content. In an LPG-backed implementation, retrieval may return entities, relationship paths, source evidence, graph facts, community summaries, context cards, temporal states and policy constraints. The LLM may then use those elements to produce an answer.</p><p>If the retrieved structure is semantically weak, the generated answer can be fluent and still wrong.</p><p>For example:</p><pre><code><code>(:Document)-[:MENTIONS]-&gt;(:Requirement)</code></code></pre><p>may be enough for search.</p><p>It is not enough to answer: <em>Which approved obligation applies to this process as of today?</em></p><p>For that, the runtime needs something closer to:</p><pre><code><code>(:PolicyVersion)-[:CONTAINS]-&gt;(:Clause)
(:Clause)-[:CREATES]-&gt;(:Obligation)
(:Obligation)-[:APPLIES_TO]-&gt;(:BusinessProcess)
(:Obligation)-[:SUPPORTED_BY]-&gt;(:Evidence)
(:PolicyVersion)-[:VALID_IN]-&gt;(:Jurisdiction)</code></code></pre><p>Even that structure is not enough unless the runtime knows which statuses, evidence rules, dates and relationship properties must be checked.</p><p>This is the gap the MSC fills.<br>The MVO defines the valuable meaning.<br>The MVG proves the valuable graph slice.<br>The MSC decides which part of both is trusted enough for GraphRAG runtime use.</p><h1>6. Defining the Minimum Semantic Contract</h1><p>A <strong>Minimum Semantic Contract</strong> is: <em>The smallest validated set of semantic, structural, evidential, temporal, governance and retrieval commitments that an LPG-backed</em></p><ul><li><p>GraphRAG runtime is allowed to rely on.</p></li><li><p>The MSC is not the entire ontology.</p></li><li><p>It is not the entire graph schema.</p></li><li><p>It is not all available graph data.</p></li><li><p>It is not a prompt instruction.</p></li><li><p>It is not a diagram.</p></li><li><p>It is the approved runtime subset of the semantic layer.</p></li><li><p>A useful distinction is:</p></li></ul><pre><code><code>MVO: What meanings are valuable for this capability?
MVG: What connected instance data and evidence make those meanings usable?
MSC: Which meanings, structures, facts, paths and evidence rules may GraphRAG trust at runtime?</code></code></pre><p>This changes the design conversation.</p><p>Instead of asking only: <em>What should we model?</em></p><p>we also ask: <em>What is the GraphRAG runtime allowed to trust?</em></p><p>Instead of asking only: <em>What can we retrieve?</em></p><p>we also ask: <em>What should be excluded, qualified, escalated or blocked?</em></p><p>Instead of asking only: <em>Did the LLM produce a good answer?</em></p><p>we also ask: <em>Did the answer come from an approved semantic path with sufficient evidence?</em></p><p>This is where semantic modelling becomes runtime engineering.</p><p>This distinction is important because RAG evaluation frameworks usually focus on retrieval relevance, faithfulness, answer relevance or context quality [25], [26]. These are useful dimensions, but they do not fully answer the pre-runtime semantic question:</p><p><em>Was the retrieved graph structure trusted enough to be used in the first place?</em></p><p>The MSC sits before the answer.</p><p>It defines the semantic boundary that retrieval, generation and evaluation must respect.</p><h1>7. What the contract must contain</h1><p>The MSC should be small, but it must not be vague.</p><p>A practical way to think about it is as five connected layers.</p><pre><code><code>+----------------------------------------------------------------------+
|                    Minimum Semantic Contract                         |
+----------------------------------------------------------------------+
| 1. Scope layer        What capability is this contract for?          |
| 2. Semantic layer     Which labels and relationships mean enough?    |
| 3. Evidence layer     Which facts are traceable and valid?           |
| 4. Retrieval layer    Which paths and filters may be used?           |
| 5. Runtime layer      What may be answered, qualified or blocked?    |
+----------------------------------------------------------------------+</code></code></pre><p>The contract is not a larger ontology. It is the approved runtime subset of MVO and MVG.</p><pre><code><code>MVO              MVG                  MSC
meaning          connected data       trusted runtime commitments
concepts         instances            approved labels
relations        evidence             approved relationships
constraints      graph facts          approved paths
definitions      source links         approved evidence rules</code></code></pre><h2>7.1 Contract content map</h2><p>The following table shows the main content of the MSC.</p><pre><code><code>+----------------------------+------------------------------------------+
| MSC component              | Runtime question it answers              |
+----------------------------+------------------------------------------+
| Semantic scope             | What can this capability answer?         |
| Trusted labels             | Which node types may retrieval trust?    |
| Relationship semantics     | Which edge types have approved meaning?  |
| Source-target rules        | Which graph patterns are valid?          |
| Identity rules             | Which nodes represent the same thing?    |
| Evidence and provenance    | Where did this fact come from?           |
| Statement metadata         | What is known about this relationship?   |
| Temporal and version rules | When is this fact valid?                 |
| Confidence and review      | Is this fact approved, candidate or old? |
| Retrieval patterns         | Which paths may GraphRAG follow?         |
| Context packaging          | What enters the LLM context?             |
| Refusal and escalation     | When must the system not answer?         |
+----------------------------+------------------------------------------+</code></code></pre><p>This inventory is deliberately implementation-oriented. It does not ask whether the ontology is elegant. It asks whether the runtime can safely depend on the graph.</p><h2>7.2 Semantic scope and trusted labels</h2><p>Every MSC starts with a capability boundary.</p><p>Trusted labels are then defined inside that boundary.</p><p>Capability:   Retrieve current policy obligations for business processes.</p><p>In scope:</p><ul><li><p>  Policy</p></li><li><p>  PolicyVersion</p></li><li><p>  Clause</p></li><li><p>  Obligation</p></li><li><p>  BusinessProcess</p></li><li><p>  Jurisdiction</p></li><li><p>  Evidence</p></li><li><p>  SourceDocument</p></li></ul><p>Out of scope:</p><ul><li><p>  Draft policies</p></li><li><p>  Historical policy analysis before the approved start date</p></li><li><p>  Unreviewed extracted obligations</p></li><li><p>  Obligations without source evidence</p></li></ul><p>  Jurisdictions not mapped to the controlled jurisdiction catalogue</p><pre><code><code>+--------------------+-------------------+--------------------------------+
| Label group        | Examples          | Runtime treatment              |
+--------------------+-------------------+--------------------------------+
| Trusted            | Policy, Clause,   | May guide retrieval, ranking,  |
|                    | Obligation        | validation and packaging       |
| Candidate          | RiskTheme,        | May support review, not final  |
|                    | ControlGap        | answer generation              |
| Deprecated         | Requirement,      | Excluded from production paths |
|                    | RuleFragment      | unless explicitly mapped       |
+--------------------+-------------------+--------------------------------+</code></code></pre><p>Labels are not only grouping mechanisms in disciplined LPG systems. They are operational type commitments. A trusted label should have a definition, owner, identity rule, required properties and expected runtime behaviour.</p><p>Controlled vocabulary practice is useful here. SKOS is a useful reference because it shows how controlled vocabularies, taxonomies and classification schemes can be represented and linked as machine-readable knowledge organisation systems [22]. An LPG implementation does not need to become an RDF SKOS implementation to learn from the principle.</p><ul><li><p>Terms need identifiers.</p></li><li><p>Terms need definitions.</p></li><li><p>Terms need ownership.</p></li><li><p>Terms need lifecycle status.</p></li><li><p>Terms need mappings and aliases.</p></li><li><p>Terms need deprecation rules.</p></li></ul><p>Without this discipline, GraphRAG may retrieve over terms that look similar to humans but behave differently in the graph.</p><h2>7.3 Relationship semantics and source-target rules</h2><p>Relationship types are one of the strongest semantic instruments in an LPG.</p><p>They are also one of the easiest places to create semantic debt.</p><p>Weak runtime graph:</p><pre><code><code>(:Document)-[:MENTIONS]-&gt;(:Thing)
(:Thing)-[:RELATED_TO]-&gt;(:Thing)</code></code></pre><p>Contract-ready graph:</p><pre><code><code>(:PolicyVersion)-[:CONTAINS]-&gt;(:Clause)
(:Clause)-[:CREATES]-&gt;(:Obligation)
(:Obligation)-[:APPLIES_TO]-&gt;(:BusinessProcess)
(:Obligation)-[:SUPPORTED_BY]-&gt;(:Evidence)
(:PolicyVersion)-[:VALID_IN]-&gt;(:Jurisdiction)</code></code></pre><p>The MSC should define relationship types with operational meaning.</p><pre><code><code>+---------------------+-----------------------+------------------------------+
| Relationship type   | Valid pattern         | Runtime rule                 |
+---------------------+-----------------------+------------------------------+
| IMPOSES_OBLIGATION  | PolicyVersion &#8594;       | Allowed only when reviewed   |
|                     | Obligation            | and evidence-backed          |
| APPLIES_TO          | Obligation &#8594;          | Allowed only above confidence|
|                     | BusinessProcess       | threshold                    |
| SUPPORTED_BY        | Obligation &#8594; Evidence | Required for material claims |
| SUPERSEDES          | Version &#8594; Version     | Required for version logic   |
| VALID_IN            | PolicyVersion &#8594;       | Required for jurisdictional  |
|                     | Jurisdiction          | filtering                    |
+---------------------+-----------------------+------------------------------+</code></code></pre><p>A relationship type should not be valid between arbitrary node labels.</p><p>Valid:</p><pre><code>  (:PolicyVersion)-[:IMPOSES_OBLIGATION]-&gt;(:Obligation)</code></pre><p>Invalid for this capability:</p><pre><code><code>  (:Person)-[:IMPOSES_OBLIGATION]-&gt;(:Document)</code></code></pre><p>Source-target rules are particularly important when LLMs or extraction pipelines propose graph structures. Generated graph content often looks plausible because the language is plausible. The MSC must prevent plausible structure from becoming trusted structure without validation.</p><p>SHACL is relevant as an external reference because it formalises the idea of validating graph data against shape constraints [19]. An LPG implementation may use different constraint mechanisms, but the principle remains the same.</p><p><em>Trusted graph structure should be validated before runtime use.</em></p><h2>7.4 Identity, evidence, provenance and statement metadata</h2><p>GraphRAG quality depends heavily on entity resolution. If the same policy, product, process, supplier or system appears under several nodes, retrieval becomes fragmented.</p><pre><code><code>+-------------------+-----------------------+------------------------------+
| Entity type       | Identity rule         | Runtime implication          |
+-------------------+-----------------------+------------------------------+
| Policy            | policyId + version    | Prevents version confusion   |
| BusinessProcess   | canonical processId   | Prevents duplicate paths     |
| Jurisdiction      | controlled code       | Prevents free-text filtering |
| Supplier          | supplierId + aliases  | Prevents exposure gaps       |
+-------------------+-----------------------+------------------------------+</code></code></pre><p>Evidence and provenance define why a fact can be trusted.</p><p>Direct relationship metadata:</p><pre><code><code>(:PolicyVersion)-[:IMPOSES_OBLIGATION {
  sourceId: "doc-421",
  sourceSpan: "section 4.2",
  confidence: 0.92,
  extractionMethod: "human_reviewed_extraction",
  reviewStatus: "approved"
}]-&gt;(:Obligation)</code></code></pre><p>For more complex claims, a reified assertion pattern may be safer.</p><pre><code><code>(:PolicyVersion)-[:CONTAINS_ASSERTION]-&gt;(:ObligationAssertion)
(:ObligationAssertion)-[:ASSERTS_OBLIGATION]-&gt;(:Obligation)
(:ObligationAssertion)-[:SUPPORTED_BY]-&gt;(:Evidence)
(:ObligationAssertion)-[:APPLIES_IN]-&gt;(:Jurisdiction)
(:ObligationAssertion)-[:VALID_DURING]-&gt;(:ValidityPeriod)</code></code></pre><p>W3C PROV-O is a useful external reference for provenance because it provides a model for representing entities, activities and agents involved in producing information [20]. OpenLineage is also relevant from the data engineering side because it defines a standard approach for collecting lineage events about jobs, runs and datasets [30].</p><p>An LPG-based MSC can take the same principle into GraphRAG.</p><p>Every material graph fact used in generation should know:</p><ul><li><p>where it came from</p></li><li><p>how it was produced</p></li><li><p>when it was observed or extracted</p></li><li><p>who or what approved it</p></li><li><p>whether it is trusted for runtime use</p></li></ul><p>LPGs are naturally strong at attaching properties to relationships. RDF 1.2 and RDF-star are also relevant reference points because they address statements about statements through quoted triples [21]. The practical lesson is not that GraphRAG must choose RDF or LPG. The lesson is that modern knowledge systems need first-class ways to attach metadata, evidence and lifecycle state to claims.</p><h2>7.5 Temporal, confidence and review rules</h2><p>Many GraphRAG failures are temporal failures.</p><p>Wrong retrieval:   current policy + superseded policy + draft update + old interpretation</p><p>Safer retrieval:</p><ul><li><p>  active policy version</p></li><li><p>  approved obligation</p></li><li><p>  valid jurisdiction</p></li><li><p>  correct as-of date</p></li><li><p>  evidence-backed relationship</p></li></ul><p>The MSC should define temporal semantics explicitly. It should distinguish when a fact becomes applicable, when it stops being applicable, when it was observed, when it was extracted, when it was approved and which version or fact superseded it.</p><p>It should also distinguish statuses such as at Figure 7.5</p><p>The runtime should know whether a fact can be used directly, used only as background context, shown with a warning, sent for human review or excluded from retrieval.</p><p>This is where the practical operating model from earlier ontology validation work becomes important: AI can propose, systems can validate, humans can decide, and the graph should record the decision [6].</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!6p9S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!6p9S!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png 424w, /__u/substackcdn.com/image/fetch/$s_!6p9S!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png 848w, /__u/substackcdn.com/image/fetch/$s_!6p9S!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png 1272w, /__u/substackcdn.com/image/fetch/$s_!6p9S!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!6p9S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png" width="1456" height="936" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:936,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:261097,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/206416063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!6p9S!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png 424w, /__u/substackcdn.com/image/fetch/$s_!6p9S!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png 848w, /__u/substackcdn.com/image/fetch/$s_!6p9S!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png 1272w, /__u/substackcdn.com/image/fetch/$s_!6p9S!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bb9021a-e72a-410e-b6a5-103c03ecf878_2800x1800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 7.5:</strong> Temporal, confidence and review rules turn graph facts into authorised, qualified, review-only or excluded GraphRAG context.</p><h2>7.6 Retrieval, packaging and escalation rules</h2><p>GraphRAG should not be allowed to traverse everything that is technically reachable.</p><p>For an obligation question, the MSC may approve a path like this.</p><p>Question type:  <em>Which obligations apply to this business process?</em></p><p>Approved retrieval path see at Figure 7.6</p><p>Required filters may include:</p><pre><code><code>obligation.reviewStatus = approved
policyVersion.status = active
applies.confidence &gt;= 0.8
jurisdiction = requestedJurisdiction
validFrom &lt;= asOfDate
validTo is null or validTo &gt;= asOfDate</code></code></pre><p>Context packaging should preserve semantic metadata. A prompt-only rule is not enough. Telling the LLM to &#8220;use only approved evidence&#8221; is useful, but weak if retrieval has already supplied unapproved, obsolete or unsupported facts.</p><p>The MSC should also define refusal, qualification and escalation behaviour.</p><pre><code><code>+------------------------------+----------------------------------------+
| Runtime condition            | Behaviour                              |
+------------------------------+----------------------------------------+
| No approved evidence         | Refuse material claim                  |
| Low confidence               | Qualify answer                         |
| Conflicting approved sources | Escalate or present conflict           |
| Missing jurisdiction         | Ask for clarification                  |
| Missing as-of date           | Ask or use declared default            |
| Candidate facts only         | State that no approved knowledge exists|
+------------------------------+----------------------------------------+</code></code></pre><p>The graph should not only help the LLM say more. It should help the system know when not to say too much.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!GMHg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!GMHg!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png 424w, /__u/substackcdn.com/image/fetch/$s_!GMHg!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png 848w, /__u/substackcdn.com/image/fetch/$s_!GMHg!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png 1272w, /__u/substackcdn.com/image/fetch/$s_!GMHg!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!GMHg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png" width="1456" height="955" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:291484,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/206416063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!GMHg!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png 424w, /__u/substackcdn.com/image/fetch/$s_!GMHg!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png 848w, /__u/substackcdn.com/image/fetch/$s_!GMHg!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png 1272w, /__u/substackcdn.com/image/fetch/$s_!GMHg!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48beb17a-cae4-463f-9eaa-0f6f4ed56865_3200x2100.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Figure 7.6:</strong> Retrieval, packaging and escalation rules restrict GraphRAG to approved paths, authorised context and explicit answer behaviour.</p><h1>8. Implementing and operating the MSC in an LPG</h1><p>The MSC should not live only in a document.</p><p>It should be represented in a form that systems can query, test and monitor. Depending on the architecture, it may live in a schema registry, graph catalogue, configuration repository, CI test suite, retrieval gateway, application code or the graph itself.</p><p>The implementation detail is less important than the principle.</p><p><em>A contract that cannot be checked is only guidance.</em></p><h2>8.1 MSC as an executable control plane</h2><p>The MSC is the control plane between MVO, MVG and the GraphRAG runtime.</p><p>It takes the valuable meaning from the MVO, the connected evidence from the MVG, and turns the trusted subset into runtime commitments. Those commitments then drive ingestion validation, retrieval control, query guards, context packaging, generation constraints, monitoring and governed evolution.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!L4BO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!L4BO!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!L4BO!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!L4BO!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!L4BO!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!L4BO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png" width="1456" height="942" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:942,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:228985,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/206416063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!L4BO!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!L4BO!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!L4BO!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!L4BO!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9e6eedf-0234-40e0-a585-de6f357bb2cd_3400x2200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Figure 8.1:</strong> The Minimum Semantic Contract as the executable control plane between MVO, MVG and GraphRAG runtime behaviour.</p><h2>8.2 Trust zones in the graph environment</h2><p>A practical graph programme should not force all graph content into one trust level.</p><p>The same graph environment may contain:</p><ul><li><p>exploration graph: broad extraction, weak structure, discovery relationships</p></li><li><p>staging graph: candidate labels, candidate mappings, generated facts</p></li><li><p>review graph: structures awaiting human or automated validation</p></li><li><p>trusted runtime graph: approved labels, approved relationships, evidence-backed facts</p></li><li><p>audit graph: changes, decisions, rejected proposals, lineage, review outcomes</p></li></ul><p>This separation can be physical, logical or property-based.</p><p>For example, a relationship may carry:</p><pre><code><code>status: "candidate"
runtimeTrusted: false</code></code></pre><p>and later become:</p><pre><code><code>status: "approved"
runtimeTrusted: true
approvedAt: "2026-07-09"
approvedBy: "policy-governance-team"</code></code></pre><p>This prevents a common GraphRAG failure: The exploration graph becomes the production retrieval graph by accident.</p><p>Generated labels, generated relationships, generated summaries and generated mappings should enter the trusted runtime graph only when they pass MSC validation and review rules.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Q0DJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Q0DJ!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!Q0DJ!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!Q0DJ!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Q0DJ!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Q0DJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png" width="1456" height="942" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:942,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:288708,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/206416063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Q0DJ!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!Q0DJ!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!Q0DJ!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Q0DJ!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48001a58-ee08-49a1-8659-33902a6a9e28_3400x2200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 8.2:</strong> Trust zones prevent exploratory or candidate graph content from entering GraphRAG runtime context without MSC validation and review.</p><h2>8.3 Executable metadata pattern</h2><p>Part of the MSC can be modelled in the graph itself.</p><pre><code><code>(:SemanticContract {
  contractId: "policy-obligation-graphrag-v1",
  version: "1.0.0",
  status: "active",
  capability: "policy_obligation_retrieval"
})</code></code></pre><p>The contract can then point to specifications.</p><pre><code><code>(:SemanticContract)-[:ALLOWS_LABEL]-&gt;(:LabelSpec)
(:SemanticContract)-[:ALLOWS_RELATIONSHIP]-&gt;(:RelationshipSpec)
(:SemanticContract)-[:REQUIRES_PROPERTY]-&gt;(:PropertySpec)
(:SemanticContract)-[:REQUIRES_EVIDENCE_RULE]-&gt;(:EvidenceRule)
(:SemanticContract)-[:REQUIRES_TEMPORAL_RULE]-&gt;(:TemporalRule)
(:SemanticContract)-[:APPROVES_RETRIEVAL_TEMPLATE]-&gt;(:RetrievalTemplate)
(:SemanticContract)-[:REQUIRES_TEST]-&gt;(:ContractTest)</code></code></pre><p>Example label specification:</p><pre><code><code>(:SemanticContract)-[:ALLOWS_LABEL]-&gt;(:LabelSpec {
  name: "Obligation",
  owner: "Policy Governance",
  runtimeTrusted: true,
  requiredProperties: ["obligationId", "status", "reviewStatus"]
})</code></code></pre><p>Example relationship specification:</p><pre><code><code>(:SemanticContract)-[:ALLOWS_RELATIONSHIP]-&gt;(:RelationshipSpec {
  type: "APPLIES_TO",
  sourceLabel: "Obligation",
  targetLabel: "BusinessProcess",
  requiredProperties: ["confidence", "sourceId", "reviewStatus"],
  runtimeTrustedWhen: "reviewStatus = 'approved' AND confidence &gt;= 0.8"
})</code></code></pre><p>Example retrieval template:</p><pre><code><code>(:SemanticContract)-[:APPROVES_RETRIEVAL_TEMPLATE]-&gt;(:RetrievalTemplate {
  name: "active_obligations_for_process",
  questionType: "obligation_lookup",
  version: "1.0.0",
  requiresEvidence: true,
  requiresTemporalFilter: true
})</code></code></pre><p>Some teams will implement this through schema constraints, query templates and validation tests. Others will use graph metadata nodes. Others will combine both. The key requirement is that the MSC is inspectable and enforceable.</p><pre><code><code>Domain owner  &#8594; understands the contract
Engineer      &#8594; enforces the contract
Retriever     &#8594; applies the contract
Auditor       &#8594; checks the contract</code></code></pre><h2>8.4 Implementation flow from ingestion to answer</h2><p>The MSC should influence the whole path from source ingestion to answer generation.</p><p>A typical flow is presented at Figure 8.5</p><p>Typical validation rules include:</p><ul><li><p>Reject relationship if source-target pattern is invalid.</p></li><li><p>Send relationship to staging if confidence is below threshold.</p></li><li><p>Require sourceSpan for every extracted obligation.</p></li><li><p>Require canonical processId before APPLIES_TO is trusted.</p></li><li><p>Reject free-text jurisdiction unless mapped to a controlled node.</p></li><li><p>Mark summaries as generated unless reviewed.</p></li></ul><p>This is where SHACL-style thinking is useful even in LPG systems [19]. The implementation may not use SHACL directly, but it should use shape-like validation logic.</p><p>Example obligation rule:</p><pre><code><code>Every runtime-trusted Obligation must have:

obligationId
reviewStatus = approved
at least one SUPPORTED_BY relationship
at least one source reference
temporal validity where applicable</code></code></pre><p>Validation failures should be visible as graph quality issues, not hidden inside logs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!sIfF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!sIfF!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!sIfF!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!sIfF!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!sIfF!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!sIfF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png" width="1456" height="942" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:942,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:289957,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/206416063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!sIfF!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!sIfF!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!sIfF!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!sIfF!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F366fc2c5-7f70-4689-bebb-0ae6b573ee5e_3400x2200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 8.4:</strong> Implementation flow from ingestion to answer, with MSC validation controlling graph writes, retrieval templates and answer context.</p><h2>8.5 Retrieval and query control</h2><p>GraphRAG retrieval should not be an unconstrained graph walk.</p><p>A safe implementation pattern is presented at Figure 8.6</p><p>For generated Cypher, GQL or other graph queries, the MSC should define:</p><ul><li><p>which labels can be queried</p></li><li><p>which relationship types can be traversed</p></li><li><p>which properties can be returned</p></li><li><p>which filters are mandatory</p></li><li><p>which paths are forbidden</p></li><li><p>which result limits apply</p></li><li><p>which query shapes require review</p></li><li><p>which query shapes must be rejected</p></li></ul><p>A generated query should be treated as a proposal until validated against the contract.</p><p>Modern graph query languages and tools make this increasingly practical. Cypher / openCypher / GQL-style query patterns remain familiar to many graph engineers, while ISO GQL provides the standardised property graph query language reference point [15], [16], [17]. GraphRAG libraries can combine vector search with graph traversal, but graph traversal still needs approved semantic boundaries [13].</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!S7NK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!S7NK!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!S7NK!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!S7NK!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!S7NK!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!S7NK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png" width="1456" height="942" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:942,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:297284,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/206416063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!S7NK!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!S7NK!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!S7NK!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!S7NK!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81866421-649a-4cce-bb94-091e2bf7eacb_3400x2200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 8.5:</strong> Retrieval and query control validates generated graph queries against MSC-approved labels, paths, filters, limits and trust rules before execution.</p><h2>8.6 Context packaging and semantic acceptance tests</h2><p>Retrieval does not finish when the graph query returns rows.</p><p>If packaging strips away review status, confidence, validity, source span or path structure, the LLM receives context without the metadata needed to interpret it correctly.</p><p>For an obligation answer, the package should include:</p><ul><li><p>obligation text</p></li><li><p>policy version</p></li><li><p>clause identifier</p></li><li><p>jurisdiction</p></li><li><p>validFrom and validTo</p></li><li><p>reviewStatus</p></li><li><p>confidence</p></li><li><p>evidence reference</p></li><li><p>source span</p></li><li><p>retrieval path</p></li></ul><p>For high-risk answers, the package should include source snippets, unresolved conflicts, missing evidence warnings, temporal limitations and reviewer status.</p><p>For low-risk exploratory answers, broader summaries may be allowed, but lower-confidence candidates must be explicitly qualified. Candidate facts must not be stated as approved facts.</p><p>Semantic acceptance tests should run before answer evaluation.</p><p>Examples:</p><ul><li><p>Superseded policy found: exclude from current answer context.</p></li><li><p>Obligation has no evidence: exclude or report limitation.</p></li><li><p>Confidence below threshold: qualify answer.</p></li><li><p>Two approved sources differ: escalate or show conflict.</p></li><li><p>Generated query violates template: reject or rewrite query.</p></li><li><p>Jurisdiction missing: ask for clarification.</p></li></ul><p>RAG evaluation frameworks such as RAGAS and ARES are useful after this point because they assess retrieval and answer quality dimensions such as context relevance, faithfulness and answer relevance [25], [26]. The MSC adds a prior control.</p><p><em>Only semantically authorised context should reach the answer generation stage.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!hkor!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!hkor!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!hkor!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!hkor!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!hkor!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!hkor!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png" width="1456" height="942" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:942,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:304653,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/206416063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!hkor!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!hkor!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!hkor!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!hkor!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20eb0565-24a8-4971-a9e8-bdb124abab37_3400x2200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Figure 8.6:</strong> Context packaging preserves semantic metadata, while acceptance tests check that graph context is trusted before generation.</p><h2>8.7 Governance, lineage, monitoring and versioning</h2><p>The MSC needs owners.</p><p>Without ownership, the contract will drift.</p><p>Ownership should be assigned for:</p><ul><li><p>labels</p></li><li><p>relationship types</p></li><li><p>identity rules</p></li><li><p>evidence rules</p></li><li><p>retrieval templates</p></li><li><p>context packaging rules</p></li><li><p>confidence thresholds</p></li><li><p>review workflows</p></li><li><p>semantic tests</p></li><li><p>contract releases</p></li></ul><p>Lineage should be captured for:</p><ul><li><p>source document</p></li><li><p>source version</p></li><li><p>extraction run</p></li><li><p>model and prompt version</p></li><li><p>normalisation rule</p></li><li><p>entity resolution decision</p></li><li><p>human review decision</p></li><li><p>graph write</p></li><li><p>summary or embedding generation</p></li><li><p>retrieval template version</p></li><li><p>answer generation event</p></li></ul><p>This is where data lineage and metadata management patterns become relevant. OpenLineage provides a useful reference for lineage events in data pipelines [30]. DataHub is a useful external example of schema-first metadata modelling and lineage management [31]. Again, the point is not that every GraphRAG system must adopt these tools. The point is that GraphRAG needs equivalent discipline.</p><p>After release, monitor semantic drift.</p><ul><li><p>retrieval failures</p></li><li><p>unsupported claims</p></li><li><p>deprecated label usage</p></li><li><p>duplicate entity growth</p></li><li><p>evidence gaps</p></li><li><p>relationship type drift</p></li><li><p>low-confidence fact usage</p></li><li><p>temporal filter failures</p></li><li><p>user corrections</p></li><li><p>human review overrides</p></li><li><p>query rejection rates</p></li><li><p>contract test failures</p></li><li><p>prompt changes</p></li><li><p>model changes</p></li><li><p>source schema changes</p></li></ul><p>The MSC should be versioned as a runtime artefact.</p><pre><code><code>policy-obligation-graphrag-v1.0.0
policy-obligation-graphrag-v1.1.0
policy-obligation-graphrag-v2.0.0</code></code></pre><p>An audit should be able to ask:</p><ul><li><p>Which contract version was active?</p></li><li><p>Which retrieval template was used?</p></li><li><p>Which labels and relationships were trusted?</p></li><li><p>Which evidence rules were required?</p></li><li><p>Which temporal filters were applied?</p></li><li><p>Which model and prompt produced the answer?</p></li><li><p>Which graph snapshot or graph version was queried?</p></li></ul><p>Without versioning, GraphRAG audit becomes guesswork.</p><p>With versioning, the MSC becomes part of the answer trace.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!oiX2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!oiX2!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!oiX2!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!oiX2!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!oiX2!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!oiX2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png" width="1456" height="942" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:942,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:289884,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/206416063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!oiX2!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png 424w, /__u/substackcdn.com/image/fetch/$s_!oiX2!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png 848w, /__u/substackcdn.com/image/fetch/$s_!oiX2!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png 1272w, /__u/substackcdn.com/image/fetch/$s_!oiX2!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240ea9b-0a99-45ca-afc3-bd4672e221d3_3400x2200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 8.7:</strong> Governance, lineage, monitoring and versioning keep the Minimum Semantic Contract owned, traceable, auditable and able to evolve.</p><h1>9. Closing view</h1><p>The Minimum Semantic Contract is the next logical step after the Pragmatic Semantic Layer.</p><p>The progression is:</p><ul><li><p>LPG: expressive graph structure</p></li><li><p>AKG: operationally meaningful graph structure</p></li><li><p>PSL: meaning plus access plus control</p></li><li><p>MVO: the smallest valuable domain meaning for a capability</p></li><li><p>MVG: the smallest valuable connected evidence for that capability</p></li><li><p>MSC: the part of that meaning and graph structure that GraphRAG is allowed to trust at runtime</p></li></ul><p>This distinction matters.</p><p>A GraphRAG system does not fail only because the LLM hallucinates.</p><p>It can fail because the graph contains vague labels, ambiguous relationships, stale facts, weak evidence, unresolved identities, unreviewed extraction, missing temporal validity or traversal paths that were never approved for the question being asked.</p><p>The answer may still sound good.</p><p>But the structure underneath is not safe.</p><p>For technical teams working with LPG, GraphRAG, AI, ontology and semantic layers, the hard question is no longer whether graphs can improve retrieval. They can.</p><p>The harder question is: <em>Which graph semantics are trusted enough to enter the runtime?</em></p><p>That is the role of the Minimum Semantic Contract.</p><p>A Minimum Valuable Ontology defines the meanings that matter.</p><p>A Minimum Valuable Graph proves those meanings against connected data and evidence.</p><p>A Minimum Semantic Contract tells GraphRAG which of those meanings, structures, facts, paths and evidence rules it is allowed to rely on.</p><p>That is where pragmatic semantics becomes production engineering.</p><h1>10. References</h1><h2>Previous publications</h2><p>[1] When a Labelled Property Graph Can Legitimately Be Considered an Applied Knowledge Graph<br><a href="/__u/sergeyvasiliev.substack.com/p/when-a-labelled-property-graph-can?utm_source=chatgpt.com">https://sergeyvasiliev.substack.com/p/when-a-labelled-property-graph-can</a></p><p>[2] The Pragmatic Semantic Layer Manifesto<br><a href="/__u/sergeyvasiliev.substack.com/p/the-pragmatic-semantic-layer-manifesto?utm_source=chatgpt.com">https://sergeyvasiliev.substack.com/p/the-pragmatic-semantic-layer-manifesto</a></p><p>[3] GraphRAG Is a Pipeline, Not a Pattern<br><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-is-a-pipeline-not-a-pattern?utm_source=chatgpt.com">https://sergeyvasiliev.substack.com/p/graphrag-is-a-pipeline-not-a-pattern</a></p><p>[4] Token Efficient GraphRAG with Labelled Property Graphs<br><a href="/__u/sergeyvasiliev.substack.com/p/token-efficient-graphrag-with-labelled?utm_source=chatgpt.com">https://sergeyvasiliev.substack.com/p/token-efficient-graphrag-with-labelled</a></p><p>[5] Why Most GraphRAG Evaluations Are Wrong<br><a href="/__u/sergeyvasiliev.substack.com/p/why-most-graphrag-evaluations-are?utm_source=chatgpt.com">https://sergeyvasiliev.substack.com/p/why-most-graphrag-evaluations-are</a></p><p>[6] The Ontology Trap: When AI Scales Unvalidated Meaning<br><a href="/__u/sergeyvasiliev.substack.com/p/the-ontology-trap-when-ai-scales?utm_source=chatgpt.com">https://sergeyvasiliev.substack.com/p/the-ontology-trap-when-ai-scales</a></p><p>[7] Labels as the Real Semantic Layer of LPG in GraphRAG and Applied Knowledge Graphs<br><a href="/__u/sergeyvasiliev.substack.com/p/labels-as-the-real-semantic-layer?utm_source=chatgpt.com">https://sergeyvasiliev.substack.com/p/labels-as-the-real-semantic-layer</a></p><p>[8] Graph Summarisation Is the New Retrieval: A Practical View from the LPG and AKG Perspective<br><a href="/__u/sergeyvasiliev.substack.com/p/graph-summarisation-is-the-new-retrieval?utm_source=chatgpt.com">https://sergeyvasiliev.substack.com/p/graph-summarisation-is-the-new-retrieval</a></p><p>[9] The Applied Knowledge Graph as the Runtime Layer for Agentic AI<br><a href="/__u/sergeyvasiliev.substack.com/p/the-applied-knowledge-graph-as-the?utm_source=chatgpt.com">https://sergeyvasiliev.substack.com/p/the-applied-knowledge-graph-as-the</a></p><h2>External resources</h2><p>[10] Patrick Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, NeurIPS 2020<br><a href="https://proceedings.neurips.cc/paper/2020/hash/6b493230205f780e1bc26945df7481e5-Abstract.html?utm_source=chatgpt.com">https://proceedings.neurips.cc/paper/2020/hash/6b493230205f780e1bc26945df7481e5-Abstract.html</a></p><p>[11] Darren Edge et al., From Local to Global: A Graph RAG Approach to Query-Focused Summarization<br><a href="https://arxiv.org/abs/2404.16130?utm_source=chatgpt.com">https://arxiv.org/abs/2404.16130</a></p><p>[12] Microsoft GraphRAG documentation<br><a href="https://microsoft.github.io/graphrag/?utm_source=chatgpt.com">https://microsoft.github.io/graphrag/</a></p><p>[13] Neo4j GraphRAG documentation<br><a href="https://neo4j.com/labs/genai-ecosystem/graphrag/?utm_source=chatgpt.com">https://neo4j.com/labs/genai-ecosystem/graphrag/</a></p><p>[14] Neo4j Graph Database Concepts: Property Graph Model<br><a href="https://neo4j.com/docs/getting-started/appendix/graphdb-concepts/?utm_source=chatgpt.com">https://neo4j.com/docs/getting-started/appendix/graphdb-concepts/</a></p><p>[15] Neo4j Cypher Manual<br><a href="https://neo4j.com/docs/cypher-manual/current/introduction/?utm_source=chatgpt.com">https://neo4j.com/docs/cypher-manual/current/introduction/</a></p><p>[16] openCypher<br><a href="https://opencypher.org/">https://opencypher.org/</a></p><p>[17] ISO/IEC 39075:2024, Information technology, Database languages, GQL<br><a href="https://www.iso.org/standard/76120.html?utm_source=chatgpt.com">https://www.iso.org/standard/76120.html</a></p><p>[18] W3C OWL 2 Web Ontology Language Document Overview<br><a href="https://www.w3.org/TR/owl2-overview/?utm_source=chatgpt.com">https://www.w3.org/TR/owl2-overview/</a></p><p>[19] W3C SHACL, Shapes Constraint Language<br><a href="https://www.w3.org/TR/shacl/?utm_source=chatgpt.com">https://www.w3.org/TR/shacl/</a></p><p>[20] W3C PROV-O, The PROV Ontology<br><a href="https://www.w3.org/TR/prov-o/?utm_source=chatgpt.com">https://www.w3.org/TR/prov-o/</a></p><p>[21] W3C RDF 1.2 and RDF-star publications<br><a href="https://www.w3.org/groups/wg/rdf-star/publications/?utm_source=chatgpt.com">https://www.w3.org/groups/wg/rdf-star/publications/</a></p><p>[22] W3C SKOS, Simple Knowledge Organization System Reference<br><a href="https://www.w3.org/TR/skos-reference/?utm_source=chatgpt.com">https://www.w3.org/TR/skos-reference/</a></p><p>[23] Natalya F. Noy and Deborah L. McGuinness, Ontology Development 101: A Guide to Creating Your First Ontology<br><a href="https://protege.stanford.edu/publications/ontology_development/ontology101.pdf?utm_source=chatgpt.com">https://protege.stanford.edu/publications/ontology_development/ontology101.pdf</a></p><p>[24] Gartner, How to Build Knowledge Graphs That Enable AI-Driven Enterprise Applications<br><a href="https://www.gartner.com/en/documents/3985680-how-to-build-knowledge-graphs-that-enable-ai-driven-ente?utm_source=chatgpt.com">https://www.gartner.com/en/documents/3985680-how-to-build-knowledge-graphs-that-enable-ai-driven-ente</a></p><p>[25] Shahul Es et al., RAGAS: Automated Evaluation of Retrieval Augmented Generation<br><a href="https://arxiv.org/abs/2309.15217?utm_source=chatgpt.com">https://arxiv.org/abs/2309.15217</a></p><p>[26] Jon Saad-Falcon et al., ARES: An Automated Evaluation Framework for Retrieval-Augmented Generation Systems<br><a href="https://aclanthology.org/2024.naacl-long.20/?utm_source=chatgpt.com">https://aclanthology.org/2024.naacl-long.20/</a></p><p>[27] NIST AI Risk Management Framework 1.0<br><a href="https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-ai-rmf-10?utm_source=chatgpt.com">https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-ai-rmf-10</a></p><p>[28] NIST AI 600-1, Artificial Intelligence Risk Management Framework: Generative Artificial Intelligence Profile<br><a href="https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-generative-artificial-intelligence?utm_source=chatgpt.com">https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-generative-artificial-intelligence</a></p><p>[29] ISO/IEC 42001:2023, Artificial intelligence management system<br><a href="https://www.iso.org/standard/42001?utm_source=chatgpt.com">https://www.iso.org/standard/42001</a></p><p>[30] OpenLineage<br><a href="https://openlineage.io/">https://openlineage.io/</a></p><p>[31] DataHub Metadata Model<br><a href="https://docs.datahub.com/docs/metadata-modeling/metadata-model?utm_source=chatgpt.com">https://docs.datahub.com/docs/metadata-modeling/metadata-model</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!KpyP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!KpyP!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!KpyP!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!KpyP!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!KpyP!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!KpyP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2007963,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/206416063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!KpyP!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!KpyP!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!KpyP!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!KpyP!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4c19d91-898e-4bce-8d48-25776dbb906c_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Ontology Trap: When AI Scales Unvalidated Meaning]]></title><description><![CDATA[Why AI-generated ontology proposals need human validation before generated structure enters the operating layer]]></description><link>https://sergeyvasiliev.substack.com/p/the-ontology-trap-when-ai-scales</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/the-ontology-trap-when-ai-scales</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Thu, 11 Jun 2026 14:08:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DsDk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of contents</strong></p><ol><li><p>Why this matters now</p></li><li><p>Ontologies were created to make domain meaning explicit</p></li><li><p>The problem: AI can describe meaning without being accountable for it</p></li><li><p>What goes wrong when AI-generated ontology proposals grow without proper human validation</p></li><li><p>Structural hallucination becomes infrastructure risk</p></li><li><p>The hidden cost of AI ontology work</p></li><li><p>Open world and closed world assumptions must be explicit</p></li><li><p>A safer operating model for Applied Knowledge Graphs</p></li><li><p>Conclusion: do not turn plausible structure into infrastructure</p></li></ol><div><hr></div><h1>1. Why this matters now</h1><p>Ontologies are moving from the background into the operating layer of AI systems. They are no longer just reference models for search, data integration or semantic publishing. In the agentic web, ontologies can shape how AI agents retrieve information, recognise entities, remember context, select tools, validate outputs and decide what actions are allowed.</p><p>The WordLift article on <a href="https://wordlift.io/blog/en/ontologies-for-the-agentic-web/">ontologies for the agentic web</a> makes this shift clear: ontologies are becoming runtime structures for agents, not only formal artefacts for interoperability.</p><p>That is powerful. It is also risky.</p><p>The main risk is not that AI is being used in ontology work. AI can be useful. It can extract terms, suggest relationships, draft definitions, propose mappings and generate examples. In this article, AI mainly refers to LLM-based generation used to propose ontology elements, graph structures or extracted relationships.</p><p>The real risk is that AI can generate structure faster than organisations can validate meaning. When that happens, we do not get intelligence at scale. We get confusion at scale.</p><p>In this article, an <strong>ontology</strong> means the conceptual layer: concepts, relationship types, definitions, rules and validation expectations, once approved for use. A <strong>Knowledge Graph</strong> is the operational layer where entities, facts and relationships are stored, connected and queried. In a property graph implementation, part of the ontology may appear as labels, relationship types, properties, constraints and modelling rules. The Labelled Property Graph (LPG) model is based on nodes, relationships, labels, relationship types, and properties, so these modelling choices directly shape how the graph behaves. See Neo4j&#8217;s overview of <a href="https://neo4j.com/docs/getting-started/appendix/graphdb-concepts/">graph database concepts</a>.</p><p>By <strong>Applied Knowledge Graph</strong>, I mean a knowledge graph built for a real workflow, where the model, data, retrieval logic, application behaviour and governance are managed together. That distinction matters because a conceptual error in the ontology can become a structural error in the graph. A structural error in the graph can become a behavioural error in the application or agent.</p><h1>2. Ontologies were created to make domain meaning explicit</h1><p>Ontologies were created to make a shared understanding of a domain explicit and machine-readable. That domain might be products, customers, suppliers, medical concepts, legal obligations, research topics, public services or financial instruments. The ontology defines the things that matter, how they relate, which distinctions are important and which assumptions the system is allowed to make.</p><p>This is close to the classic knowledge engineering definition of an ontology as an explicit specification of a conceptualisation, described by Thomas Gruber in <a href="https://tomgruber.org/writing/ontolingua-kaj-1993.htm">A Translation Approach to Portable Ontology Specifications.</a></p><p>In an Applied Knowledge Graph, this is not abstract. The ontology shapes the graph. The graph then shapes search, analytics, recommendations, retrieval, explanations and AI behaviour.</p><p>A simple graph pattern can carry serious meaning:</p><pre><code><code>(:Product)-[:HAS_INGREDIENT]-&gt;(:Ingredient)
(:Product)-[:BELONGS_TO_CATEGORY]-&gt;(:Category)
(:Supplier)-[:HOLDS_CERTIFICATE]-&gt;(:Certificate)
(:Customer)-[:GAVE_CONSENT_FOR]-&gt;(:Purpose)</code></code></pre><p>These are not just links. They are commitments about the domain. If the structure is wrong, the system&#8217;s behaviour will be wrong too.</p><p>These examples are deliberately simplified. In real systems, relationships such as consent, certification or compliance often need source, timestamp, status, expiry and evidence.</p><p>This becomes even more important in GraphRAG, where extracted entities and relationships can shape what context the model receives and therefore what answer or action follows. Neo4j describes GraphRAG as combining entity and relationship extraction from unstructured text with graph and vector retrieval. Microsoft&#8217;s <a href="https://microsoft.github.io/graphrag/">GraphRAG documentation</a> describes GraphRAG as a structured approach to retrieval augmented generation using an LLM-generated knowledge graph.</p><h1>3. The problem: AI can describe meaning without being accountable for it</h1><p>Current AI models are very good at language. They can produce fluent definitions, convincing categories and plausible relationships. But producing language about a domain is not the same as providing grounded, accountable domain understanding.</p><p>An ontology is meant to reduce ambiguity. An LLM often works by producing a likely answer under ambiguity. An ontology is meant to define meaning. An LLM can imitate the language of meaning. An ontology is meant to support reliable validation and action. An LLM can sound confident even when the structure is wrong.</p><p>That gap matters.</p><p>AI may suggest that two concepts are the same because their names look similar. It may create a relationship because it sounds natural. It may build a hierarchy because the words imply one. It may generate a category that makes sense linguistically but not operationally.</p><p>This is why AI-generated ontology content should be treated as a proposal, not as authority.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ygzj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ygzj!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!ygzj!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!ygzj!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ygzj!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ygzj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1304809,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201599824?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!ygzj!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!ygzj!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!ygzj!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ygzj!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dac07c2-1674-4f6a-a5f1-fd69e927e0af_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>4. What goes wrong when AI-generated ontology proposals grow without proper human validation</h1><p>Unvalidated ontology growth usually does not fail loudly. It degrades the system slowly.</p><p><strong>The first problem</strong> is duplication. AI may create <code>Customer</code>, <code>Client</code>, <code>Buyer</code>, <code>Purchaser</code> and <code>Account Holder</code> as separate concepts when the organisation needs one concept with aliases. Queries become fragmented. Facts are spread across competing structures.</p><ul><li><p><strong>The second problem</strong> is false precision. AI may create many detailed categories that look useful but serve no real use case. The ontology becomes larger, not better.</p></li><li><p><strong>The third problem</strong> is false equivalence. AI may merge concepts that sound similar but have different business meaning. A supplier is not always a manufacturer. A product category is not always a compliance category. A substitute product is not always a safe alternative.</p></li><li><p><strong>The fourth problem</strong> is vague relationships. In a graph, relationship types matter. <code>RELATED_TO</code> may feel flexible, but it often becomes a dumping ground. If <code>CAUSES</code>, <code>DEPENDS_ON</code>, <code>REPLACES</code>, <code>CONTAINS</code>, <code>REQUIRES</code> and <code>IS_SIMILAR_TO</code> are blurred together, the graph loses its explanatory power.</p></li><li><p><strong>The fifth problem</strong> is missing provenance. If nobody knows where a generated class, relationship, mapping or definition came from, nobody can safely trust, maintain or challenge it. Every generated concept, relationship, mapping or definition should record source, model version, prompt or pipeline, timestamp, confidence, reviewer, approval status and change history. W3C PROV describes provenance as information about entities, activities and people involved in producing data or things, which helps assess quality, reliability and trustworthiness. See the <a href="https://www.w3.org/TR/prov-overview/">W3C PROV overview</a>.</p></li><li><p><strong>The sixth problem</strong> is semantic drift. The ontology keeps growing until it no longer reflects the organisation, the domain or the use case.</p></li></ul><p>This is how ontology debt is created. The graph still contains nodes and relationships. The agent still gives answers. The dashboards still run. But the meaning underneath has become unstable.</p><h1>5. Structural hallucination becomes infrastructure risk</h1><p>LLM hallucination is often discussed as a chatbot problem: the model gives a wrong answer, the user spots it and the answer is corrected. Structural hallucination is more dangerous in ontology work because the hallucination becomes part of the model or graph structure.</p><p>OpenAI describes hallucinations as plausible but false statements generated by language models. Its research also argues that common evaluation methods can reward guessing rather than admitting uncertainty. See OpenAI&#8217;s article, <a href="https://openai.com/index/why-language-models-hallucinate/">Why language models hallucinate</a>.</p><p>In ontology work, AI may invent:</p><ul><li><p>a class that sounds valid but has no real business meaning</p></li><li><p>a relationship that sounds useful but has no evidence</p></li><li><p>a hierarchy that looks clean but does not match reality</p></li><li><p>a definition that is fluent but not accepted by domain experts</p></li><li><p>a synonym that collapses two different concepts</p></li><li><p>a property that belongs at the wrong level of abstraction</p></li></ul><p>Once this enters the knowledge graph, it becomes reusable. It can affect retrieval, recommendations, reasoning, compliance checks and agent actions.</p><p>A wrong answer is a content problem. A wrong ontology element becomes an infrastructure problem once other systems depend on it.</p><p>This becomes more serious as AI models improve. The safer claim is not that every new model hallucinates more. The better point is that remaining errors can become harder to spot because they are better written, more complete and more persuasive. That makes validation more important, not less.</p><h1>6. The hidden cost of AI ontology work</h1><p>AI changes the economics of ontology creation. It lowers the cost of generating candidates, which can speed up discovery, extraction and documentation. But it does not remove the cost of trust. In many cases, it moves the cost downstream.</p><p>The visible cost is easy to see:</p><ul><li><p>model calls</p></li><li><p>prompts</p></li><li><p>extraction pipelines</p></li><li><p>storage</p></li><li><p>initial graph loading</p></li></ul><p>The hidden cost is larger:</p><ul><li><p>reviewing generated concepts</p></li><li><p>resolving duplicates</p></li><li><p>checking definitions with domain experts</p></li><li><p>testing relationship semantics</p></li><li><p>adding provenance</p></li><li><p>writing validation rules</p></li><li><p>versioning ontology changes</p></li><li><p>deprecating old labels and relationships</p></li><li><p>migrating old graph structures</p></li><li><p>refactoring queries</p></li><li><p>managing review backlogs</p></li><li><p>resolving ownership disputes</p></li><li><p>fixing broken dashboards</p></li><li><p>correcting poor retrieval</p></li><li><p>running agent regression tests</p></li><li><p>explaining wrong agent behaviour</p></li><li><p>maintaining a larger and messier model</p></li></ul><p>Cheap ontology creation can become expensive ontology maintenance.</p><p>The useful question is not: how many ontology elements did AI generate?</p><p>The better question is: how many validated, governed and reusable modelling decisions did we add?</p><p>In Applied Knowledge Graph work, speed only matters when the structure can be trusted.</p><h1>7. Open world and closed world assumptions must be explicit</h1><p>AI-generated ontology proposals also create a serious problem around open world and closed world assumptions.</p><p>In an <strong>open world assumption</strong>, missing information does not mean false. It means unknown. In a <strong>closed world assumption</strong>, the system treats the available data as complete for a specific purpose. If required information is missing, the record fails validation or the action is blocked.</p><p>This distinction is critical.</p><p>If a product has no allergen relationship, does that mean it has no allergens, or that the allergen data is missing?</p><p>If a supplier has no compliance certificate in the graph, does that mean the supplier is non-compliant, or that the certificate has not been loaded?</p><p>If a customer has no consent flag, does that mean consent is denied, unknown or not required?</p><p>An AI model should not silently decide whether missing data means unknown, false, invalid or not applicable. For agents, this is an operational issue. The difference between unknown, false, invalid and not allowed can change the action the system takes.</p><p>OWL 2 has open-world semantics, where a missing fact may simply be missing rather than false. See the <a href="https://www.w3.org/TR/owl2-syntax/">W3C OWL 2 structural specification</a>. SHACL is commonly used to express validation conditions over RDF data graphs. See the <a href="https://www.w3.org/TR/shacl/">W3C SHACL recommendation</a>.</p><p>In RDF and OWL environments, these issues are often handled through formal semantics and validation languages such as SHACL. In property graph databases, equivalent controls usually come from constraints, schema registries, test queries, review workflows and application rules. Neo4j, for example, supports constraints such as key constraints to ensure required properties exist and remain unique for nodes or relationships of a specific type. See Neo4j&#8217;s documentation on <a href="https://neo4j.com/docs/cypher-manual/current/constraints/">constraints</a>.</p><p>Open world assumptions, closed world assumptions and validation policies must be explicit in the ontology, the graph model, the validation rules and the agent policy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Nkdd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Nkdd!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!Nkdd!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!Nkdd!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Nkdd!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Nkdd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1443075,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201599824?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Nkdd!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!Nkdd!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!Nkdd!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Nkdd!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2132ce8a-295e-4b74-944a-1e1dea036d46_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>8. A safer operating model for Applied Knowledge Graphs</h1><p>The solution is not to ban AI from ontology work. The solution is to put AI in the right part of the workflow.</p><p>AI should propose. Systems should validate. Humans should decide. The graph should record the decision.</p><p>A practical operating model looks like this.</p><h3>1. Propose</h3><p>AI suggests candidate concepts, labels, relationships, properties, definitions, aliases and examples. Every proposal should include evidence.</p><h3>2. Stage</h3><p>Generated ontology content should first go into a staging area, not into the production graph. This can be a review graph, a versioned branch or a set of pending change nodes.</p><h3>3. Validate</h3><p>The proposal should be checked against:</p><ul><li><p>naming rules</p></li><li><p>approved labels and relationship types</p></li><li><p>allowed source and target node patterns</p></li><li><p>identity rules</p></li><li><p>required properties</p></li><li><p>provenance requirements</p></li><li><p>duplication checks</p></li><li><p>competency questions, meaning test questions the graph must be able to answer</p></li><li><p>regression queries</p></li><li><p>open world and closed world policies</p></li></ul><h3>4. Review</h3><p>Humans must review meaning. Domain experts review the concepts. Graph practitioners review the structure. Governance owners review risk.</p><h3>5. Merge</h3><p>Only approved changes enter production. The merge should record who approved the change, when it was approved, what evidence supported it and which tests passed.</p><p>It should also record versioning and deprecation decisions. A new label, relationship type or definition may need to replace an old one. That change has to be managed, not left as another layer of graph debt.</p><h3>6. Monitor</h3><p>After release, monitor retrieval quality, graph quality, agent behaviour and user feedback. Ontology validation is not a one-time task. It is an operating discipline.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!4G1n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!4G1n!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png 424w, /__u/substackcdn.com/image/fetch/$s_!4G1n!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png 848w, /__u/substackcdn.com/image/fetch/$s_!4G1n!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png 1272w, /__u/substackcdn.com/image/fetch/$s_!4G1n!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!4G1n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1404841,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201599824?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!4G1n!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png 424w, /__u/substackcdn.com/image/fetch/$s_!4G1n!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png 848w, /__u/substackcdn.com/image/fetch/$s_!4G1n!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png 1272w, /__u/substackcdn.com/image/fetch/$s_!4G1n!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb7ed7b7-8558-42d7-986a-c3f157893f6f_1672x941.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This treats ontology change as production change. That is the right mindset. If an ontology affects retrieval, memory, recommendations, validation or agent action, then changing the ontology changes the system.</p><h1>9. Conclusion: do not turn plausible structure into infrastructure</h1><p>AI-generated ontologies are not the enemy. Unvalidated AI-generated ontology proposals are the problem.</p><p>Ontologies were created to make domain meaning clear enough that machines could work with it. But current AI models do not provide grounded, accountable domain understanding on their own. They can generate language, structure and relationships that look convincing. That does not make those structures true.</p><p>This is especially important for Applied Knowledge Graphs. A graph is not just a storage layer. It shapes how systems retrieve, connect, explain and act. If the ontology is weak, the graph becomes weak. If the graph becomes weak, the agent becomes unreliable.</p><p>The practical rule is simple:</p><ul><li><p>Use AI to propose.</p></li><li><p>Use staging to isolate.</p></li><li><p>Use validation to test.</p></li><li><p>Use humans to decide.</p></li><li><p>Use provenance to explain.</p></li><li><p>Use governance to control.</p></li><li><p>Use monitoring to improve.</p></li></ul><p>The future of AI and knowledge graphs should not be about generating more structure as quickly as possible. It should be about building trusted structure that can be inspected, tested, maintained and safely used.</p><p>Growth without validation is not intelligence at scale.</p><p>It is confusion at scale, wrapped in confidence.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!DsDk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!DsDk!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!DsDk!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!DsDk!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DsDk!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!DsDk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2696249,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201599824?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!DsDk!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!DsDk!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!DsDk!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DsDk!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14e30935-ec28-4a72-8771-6e2fa2951a23_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Token Efficient GraphRAG with Labelled Property Graphs]]></title><description><![CDATA[How better graph modelling reduces LLM context, improves retrieval precision, and makes GraphRAG easier to run]]></description><link>https://sergeyvasiliev.substack.com/p/token-efficient-graphrag-with-labelled</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/token-efficient-graphrag-with-labelled</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Mon, 08 Jun 2026 13:42:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W8S2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of contents</strong></p><ol><li><p>Introduction</p></li><li><p>Why token efficiency starts with graph modelling</p></li><li><p>Why a Labelled Property Graph fits GraphRAG well</p></li><li><p>Alternatives to LPG and when to use them</p></li><li><p>Modelling the graph for compact retrieval</p></li><li><p>How the LPG changes query-time behaviour</p></li><li><p>Implementation architecture</p></li><li><p>Operating a token efficient GraphRAG pipeline</p></li><li><p>Common anti-patterns</p></li><li><p>Practical design rules</p></li></ol><div><hr></div><h1>1. Introduction</h1><p>GraphRAG is usually discussed as a way to improve answer quality. The common argument is that graphs help language models reason over entities, relationships, communities, and source evidence better than plain vector search. That is true, but it is only part of the story.</p><p>GraphRAG can also be a query-time token efficiency technique. The trade-off is that a GraphRAG pipeline can cost more during indexing, because it may use LLM calls for extraction, entity resolution, relationship generation, summarisation, and community report generation. The savings come when that graph is reused to reduce the amount of raw text sent to the language model at query time.</p><p>In a conventional RAG pipeline, the retriever usually sends chunks of text to the language model. Those chunks may be semantically similar to the query, but they are often repetitive, partially relevant, or missing the connecting facts needed to answer the question. The model then has to spend context window space figuring out which pieces matter.</p><p>GraphRAG changes the shape of the retrieval problem. Instead of only asking which chunks are similar to the query, the system can ask which entities, relationships, summaries, optional claims, communities, and evidence paths are needed to answer it.</p><p>That difference matters because LLM context is expensive. Every irrelevant chunk, duplicated paragraph, obsolete policy, repeated entity description, or vague summary increases cost and can reduce answer quality. A smaller prompt is not automatically better, but a denser prompt usually is.</p><p>A well designed graph gives the retrieval system a control layer. It can decide what should enter the prompt, what should remain in storage, and what should only be retrieved if the answer needs source-level evidence.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!gyn4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!gyn4!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!gyn4!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!gyn4!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!gyn4!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!gyn4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1402134,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201143962?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!gyn4!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!gyn4!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!gyn4!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!gyn4!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf089bc6-0fa8-4288-bcef-807f585a58e1_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 1. GraphRAG pipeline overview.</strong> The graph narrows context before the LLM sees source evidence, so the prompt can be built from compact facts, relevant summaries, and selected evidence chunks.</p><p>The main idea is simple:</p><pre><code><code>Use the graph to increase useful information per token.</code></code></pre><p>This is where graph modelling becomes central. GraphRAG does not save tokens merely because a graph exists. A badly modelled graph can do the opposite. It can create duplicate nodes, generic relationships, noisy communities, oversized summaries, and broad traversals that pull too much context into the prompt.</p><p>A token-efficient GraphRAG system depends on careful modelling. The graph must be designed as part of the retrieval architecture, not as a decorative knowledge layer.</p><h1>2. Why token efficiency starts with graph modelling</h1><p>A normal vector RAG system usually starts with text chunks. The system embeds chunks, searches for chunks that are close to the query, then sends the top results to the model.</p><p>That approach is simple and often effective. It works especially well when the answer is contained in one or two passages. It becomes less efficient when the answer depends on structure.</p><p>Examples include:</p><ul><li><p>Which policy applies to this product in this region?</p></li><li><p>What caused this issue and how was it resolved?</p></li><li><p>Which risks recur across several business units?</p></li><li><p>What has changed between the old and new process?</p></li><li><p>Where the domain requires claim modelling, which claims are supported by which documents?</p></li></ul><p>In these cases, the answer is not just a piece of text. It is a relationship between things.</p><p>A graph can represent those relationships directly. It can show that a policy applies to a product, that a procedure resolves an issue, that an optional domain-specific claim is supported by a document, or that several incidents share the same root cause.</p><p>This reduces query-time token usage because the system can retrieve the relationship itself before retrieving the surrounding prose.</p><p>Compare these two retrieval payloads.</p><p>Vector-only retrieval might send:</p><pre><code><code>Five chunks, each 500 to 900 tokens, because all mention login timeout,
OAuth refresh, session expiry, customer complaints, and patch notes.</code></code></pre><p>Graph-based retrieval might send:</p><pre><code><code>Issue: Login timeout
Affected version: Mobile App 4.2
Root cause: OAuth token refresh race condition
Resolution: Patch 4.2.1
Evidence: chunk-184-002, chunk-211-009</code></code></pre><p>The second payload is much smaller. It also gives the model a clearer answer structure.</p><p>The graph acts as a compression layer, but only if the model is clear. If the graph contains vague links, duplicate entities, or long copied text in properties, it becomes just another source of noise.</p><p>A useful rule is:</p><pre><code><code>The graph should do retrieval work before the LLM does language work.</code></code></pre><p>That means filtering, ranking, resolving, grouping, and compressing should happen before the final prompt is built.</p><h1>3. Why a Labelled Property Graph fits GraphRAG well</h1><p>GraphRAG does not require a Labelled Property Graph. This article focuses on implementing the GraphRAG knowledge layer as an LPG because it is a practical fit for application-level traversal, ranking, and context assembly.</p><p>A Labelled Property Graph, or LPG, represents information as nodes and relationships. Nodes can have labels, relationships can be directed and typed, and both can have properties.</p><p>For GraphRAG, this is a practical fit because it maps well to retrieval behaviour.</p><p>A node might represent:</p><pre><code><code>Product
Version
Issue
Procedure
Policy
CustomerSegment
Document
Chunk
Claim, optional and domain-specific
Community
ContextCard</code></code></pre><p>A relationship might represent:</p><pre><code><code>AFFECTS
CAUSED_BY
RESOLVED_BY
APPLIES_TO
SUPPORTED_BY
SUPERSEDES
MENTIONED_IN
CONTAINS_ENTITY</code></code></pre><p>Properties hold compact values:</p><pre><code><code>name
summary
confidence
source_count
valid_from
valid_to
authority_score
token_count
embedding_id
text_ref</code></code></pre><p>An LPG is useful because it lets the retriever follow typed paths.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!7RHw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!7RHw!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!7RHw!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!7RHw!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7RHw!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!7RHw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1658274,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201143962?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!7RHw!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!7RHw!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!7RHw!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!7RHw!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b499b5-67cb-4814-8101-7bb6ce74e0a0_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 2. Why a Labelled Property Graph fits GraphRAG well.</strong> Labels, typed relationships, and compact properties help the retriever follow meaningful paths before any broad text retrieval is needed.</p><p>This graph fragment is more useful than an unstructured list of semantically similar chunks. It tells the system what kind of information each item represents and how the items are connected.</p><p>The key difference is:</p><pre><code><code>Vector RAG asks:
Which chunks are similar to the query?

GraphRAG with an LPG asks:
Which facts, entities, paths, summaries, and evidence are needed to answer the query?</code></code></pre><p>That second question is more precise. It allows the retrieval system to send fewer tokens to the model without losing important context.</p><p>LPGs are also flexible. They work well when source data is messy, mixed, and evolving. A GraphRAG system often has to combine prose documents, tickets, logs, product metadata, policies, wiki pages, and structured records. The LPG model can represent all of these without forcing every fact into a rigid table or a pure ontology.</p><p>Community and community report terms are common in Microsoft-style GraphRAG, where communities are generated artefacts used for broader, corpus-level search. In an LPG implementation, they can be represented as nodes, stored as external records, or indexed as summary documents. They are implementation-specific artefacts, not mandatory parts of every GraphRAG system.</p><h1>4. Alternatives to LPG and when to use them</h1><p>A Labelled Property Graph is not the only way to build GraphRAG. It is often a strong choice, but it is worth understanding the alternatives.</p><h2>RDF-style knowledge graphs</h2><p>RDF represents information as triples:</p><pre><code><code>subject, predicate, object</code></code></pre><p>RDF is strong when the domain needs formal semantics, standard vocabularies, interoperability, and linked data. RDF itself provides the triple-based graph model. Ontology and constraint reasoning usually comes through related semantic-web tooling such as RDFS, OWL, SHACL, SPARQL entailment, or application-specific rule layers.</p><p>RDF-style knowledge graphs are common in regulated, scientific, public-sector, and semantic web environments.</p><p>RDF can be a better fit when:</p><pre><code><code>the organisation already has ontologies,
data must follow shared standards,
reasoning over classes and constraints matters,
interoperability is more important than traversal ergonomics.</code></code></pre><p>The trade-off is that RDF can feel heavier for application developers who mainly need fast retrieval paths, flexible properties, and pragmatic graph updates.</p><h2>Relational databases</h2><p>Relational databases are strong when data is structured, transactional, and well normalised. Many GraphRAG systems should use relational data directly instead of asking an LLM to rediscover it.</p><p>A relational model can be better when:</p><pre><code><code>facts already exist in tables,
joins are predictable,
transactional consistency matters,
the schema is stable,
reporting and governance are mature.</code></code></pre><p>The trade-off is that relationship-heavy retrieval can become awkward when queries need variable-depth traversal, graph neighbourhoods, or community detection.</p><h2>Vector-only RAG</h2><p>Vector-only RAG is simpler and cheaper to start with. It is often the right choice for narrow document question answering, especially when answers are usually found in single passages.</p><p>Vector-only RAG can be better when:</p><pre><code><code>the corpus is small,
queries are simple,
source text is well written,
cross-document reasoning is not needed,
low indexing cost matters more than retrieval precision.</code></code></pre><p>The trade-off is that vector search does not explicitly model entities, causality, versioning, ownership, evidence, or validity. Those connections must be inferred at prompt time.</p><h2>Document stores and search indexes</h2><p>A document store or search index is useful for keyword search, metadata filtering, and hybrid retrieval. It should not be seen as a competitor to GraphRAG. In many implementations, it works alongside the graph.</p><p>This can be better when:</p><pre><code><code>exact keyword matching matters,
metadata filters are important,
documents are the main unit of retrieval,
the system needs simple operational behaviour.</code></code></pre><p>The trade-off is that document search still retrieves text first. It does not naturally provide a compact semantic structure above the documents.</p><h2>Hypergraphs and event-centric models</h2><p>Some facts involve more than two entities. For example, an acquisition has an acquirer, target, date, amount, regulator, jurisdiction, and status.</p><p>A true hypergraph can connect more than two nodes through a single hyperedge. An LPG does not have true hyperedges. In LPG systems, the usual pattern is to model the event or relation as a node, then connect that node to the participating entities and attributes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!EACi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!EACi!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!EACi!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!EACi!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EACi!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!EACi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ebf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1571801,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201143962?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!EACi!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!EACi!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!EACi!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EACi!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febf44de4-5059-446a-a262-ff43d0267b6c_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 3. Hypergraph-like event modelling inside an LPG.</strong> The event node captures an n-ary fact in one place, while staying within the LPG model of nodes and directed relationships.</p><p>This gives a hypergraph-like modelling pattern while keeping the LPG model practical and avoiding overloaded relationships.</p><h2>The practical view</h2><p>For many GraphRAG implementations, the best architecture is hybrid:</p><pre><code><code>LPG for entity and relationship retrieval
vector index for semantic chunk search
search index for keyword and metadata filtering
relational sources for trusted structured data
object storage for long text and reports</code></code></pre><p>The LPG should not replace every storage system. It should coordinate retrieval.</p><h1>5. Modelling the graph for compact retrieval</h1><p>The most important modelling decision is to design the LPG around retrieval behaviour, not abstract completeness.</p><p>It is tempting to extract every entity and every relationship from source documents. That usually creates a graph that is expensive to build and difficult to use. A token efficient graph is more selective. It contains the entities and relationships that help the retriever build better prompts.</p><p>A practical GraphRAG LPG usually has three layers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!byjq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!byjq!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!byjq!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!byjq!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!byjq!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!byjq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1642475,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201143962?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!byjq!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!byjq!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!byjq!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!byjq!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8331c697-ccb0-4ef8-9752-ededaabd1d17_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 4. Modelling the graph for compact retrieval.</strong> A retrieval-friendly LPG separates domain concepts, compact summaries, and evidence so the context builder can fetch structured facts first and raw text only when needed.</p><p>The domain layer contains the concepts users ask about. This might include products, systems, policies, controls, issues, procedures, risks, customers, suppliers, teams, or decisions.</p><p>The evidence layer contains documents, sections, chunks, and sometimes sentences. It exists to ground answers and support citation.</p><p>The summary layer contains entity summaries, context cards, and community summaries. It exists to provide compact prompt-ready context. Community summaries may be implemented as LPG nodes, indexed summary documents, or stored reports, depending on the GraphRAG design.</p><p>This separation matters because each layer has a different job.</p><pre><code><code>The domain graph represents the system's current interpretation of what is true.
The evidence graph explains where it came from.
The summary graph explains what can be said briefly.</code></code></pre><p>A common mistake is to mix these layers into one noisy graph. When that happens, traversal becomes harder to control. A query about a product may drift into chunks, topics, dates, authors, and generic concepts before finding the answer.</p><p>A better design keeps long text out of core graph relationships. Relationships should carry meaning and small ranking signals, not copied paragraphs.</p><p>For example, this is useful:</p><pre><code><code>Issue RESOLVED_BY Procedure
properties:
confidence = 0.91
source_count = 7
last_seen = 2025-04-14</code></code></pre><p>This is less useful:</p><pre><code><code>Issue RESOLVED_BY Procedure
description = several paragraphs copied from incident reports</code></code></pre><p>Long evidence should live in chunks or external text storage. The graph should point to it.</p><p>Entity resolution is also central. If one product appears as &#8220;Mobile App&#8221;, &#8220;mobile client&#8221;, &#8220;iOS app&#8221;, and &#8220;customer app&#8221;, the system may create four nodes for one concept. That leads to duplicated relationships, repeated summaries, weaker communities, and larger prompt payloads.</p><p>A production graph should use canonical identifiers and aliases:</p><pre><code><code>canonical entity:
Product: Mobile App

aliases:
mobile client
iOS app
Android app
customer app</code></code></pre><p>This is not just data hygiene. It is token control.</p><p>The same applies to relationships. Vague relationship types such as RELATED_TO give the retriever little guidance. Typed relationships reduce ambiguity and help match retrieval paths to query intent.</p><p>For example:</p><pre><code><code>Diagnostic query: prioritise CAUSED_BY and AFFECTS
Fix query: prioritise RESOLVED_BY and REQUIRES
Policy query: prioritise APPLIES_TO, VALID_DURING, and SUPERSEDES
Evidence query: prioritise SUPPORTED_BY and ASSERTED_IN</code></code></pre><p>The more precisely the graph describes meaning, the less the LLM has to infer from raw text.</p><h1>6. How the LPG changes query-time behaviour</h1><p>At query time, the LPG should act as a routing and compression layer.</p><p>A token efficient GraphRAG system should not immediately dump graph neighbourhoods into the prompt. It should first classify the query.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Ih6G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Ih6G!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!Ih6G!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!Ih6G!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Ih6G!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Ih6G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1530954,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201143962?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Ih6G!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!Ih6G!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!Ih6G!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Ih6G!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae2f9f48-13e6-479a-ac95-66f440a92b53_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 5. How the LPG changes query-time behaviour.</strong> Query routing chooses between local graph traversal, community summary retrieval, hybrid retrieval, and structured lookup before the prompt is assembled.</p><p>A local question asks about a specific thing:</p><ul><li><p>What caused this issue?</p></li><li><p>Which policy applies to this product?</p></li><li><p>Who owns this service?</p></li><li><p>How do we fix this failure?</p></li></ul><p>For this type of question, the retriever should resolve the key entity, follow a small number of typed relationships, and collect only the most relevant facts and evidence.</p><p>A global question asks about the corpus:</p><ul><li><p>What are the main themes across these reports?</p></li><li><p>Which risks recur across business units?</p></li><li><p>What patterns appear in customer complaints?</p></li></ul><p>For this type of question, the retriever should use communities and summaries. In Microsoft-style GraphRAG, these may be community reports produced during indexing. Other implementations may store similar summaries in the graph, a vector index, or a document store. The system should not scan every raw chunk unless the answer needs examples or citations.</p><p>A hybrid question combines both:<br>What are the main authentication risks affecting Mobile App customers?</p><p>Here, the system needs a broad view of one topic, but still anchored to specific entities. The LPG can begin with the product, move into related issues and communities, then retrieve selected summaries and evidence.</p><p>The prompt should usually be assembled in this order:</p><ol><li><p>compact graph facts</p></li><li><p>entity or context-card summaries</p></li><li><p>community summaries where useful</p></li><li><p>selected evidence snippets</p></li><li><p>raw chunks only when necessary</p></li></ol><p>This order is important. Raw chunks are valuable for grounding, but they are token heavy. They should be fetched after the graph has narrowed the search space.</p><p>The graph also helps with answer reliability. If a fact has confidence, source count, validity dates, and supporting chunks, the system can avoid presenting obsolete or weakly supported information as current truth.</p><p>This is especially useful for domains where time matters:</p><pre><code><code>policies
pricing
service ownership
product versions
incident status
regulatory obligations
supplier contracts</code></code></pre><p>Without explicit validity modelling, the retriever may send old and new facts together. The language model then has to resolve the conflict inside the prompt. That wastes tokens and increases the risk of an incorrect answer.</p><h1>7. Implementation architecture</h1><p>A token efficient GraphRAG implementation is usually a hybrid system. The LPG is the control plane, but it works with other stores and indexes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!0mvj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!0mvj!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!0mvj!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!0mvj!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!0mvj!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!0mvj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1528218,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201143962?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!0mvj!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!0mvj!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!0mvj!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!0mvj!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdfc3807-2465-454c-841c-546c433be4b9_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Figure 6. GraphRAG implementation architecture.</strong> The LPG coordinates retrieval, while vector, search, object, cache, and structured stores provide specialised capabilities around it.</p><p>The architecture can be broken into several stages.</p><h2>Ingestion</h2><p>The ingestion stage parses source material and preserves metadata. It should keep document identifiers, section structure, timestamps, authorship, source system details, permissions, and offsets.</p><p>Chunking should be stable. If chunk identifiers change every time a file is processed, caching and incremental updates become harder.</p><p>A practical chunk identifier might depend on:</p><ul><li><p>document ID,</p></li><li><p>section path,</p></li><li><p>start offset,</p></li><li><p>end offset,</p></li><li><p>content hash.</p></li></ul><h2>Normalisation</h2><p>Many facts should be handled before any LLM call.</p><p>Examples include:</p><ul><li><p>dates,</p></li><li><p>product codes,</p></li><li><p>version numbers,</p></li><li><p>regions,</p></li><li><p>customer identifiers,</p></li><li><p>policy IDs,</p></li><li><p>ticket IDs,</p></li><li><p>service names,</p></li><li><p>known aliases.</p></li></ul><p>This reduces extraction cost and improves graph quality. The LLM should not be used to rediscover facts that already exist in structured metadata.</p><h2>Schema-guided extraction</h2><p>LLM extraction should be constrained by a schema. The prompt should not ask for every entity and every relationship. It should ask for the labels and relationship types that support retrieval.</p><p>For example, a support knowledge base might extract:</p><pre><code><code>Product
Version
Issue
RootCause
Procedure
Policy
CustomerSegment</code></code></pre><p>and relationships such as:</p><pre><code><code>AFFECTS
CAUSED_BY
RESOLVED_BY
APPLIES_TO
SUPPORTED_BY
SUPERSEDES</code></code></pre><p>This keeps the graph smaller, cleaner, and easier to query.</p><h2>Entity resolution</h2><p>Entity resolution merges equivalent entities and records aliases. It should combine deterministic rules, existing master data, embedding similarity, and LLM adjudication where necessary.</p><p>The important point is to resolve early. If duplicates enter summaries and communities, they become more expensive to remove later.</p><h2>Graph write and enrichment</h2><p>The graph write stage should upsert nodes and relationships using stable IDs. It should also attach provenance and calculate ranking signals.</p><p>Useful relationship properties include:</p><pre><code><code>confidence
source_count
first_seen
last_seen
authority_score
verified
extraction_method</code></code></pre><p>These properties help the retriever rank facts before prompt construction.</p><h2>Summary generation</h2><p>The system should generate compact summaries at different levels.</p><p>Useful summary types include:</p><ul><li><p>entity summary,</p></li><li><p>context card,</p></li><li><p>community summary,</p></li><li><p>community report, in Microsoft-style GraphRAG or similar implementations,</p></li><li><p>claim summary, where claim modelling is required.</p></li></ul><p>A context card is especially useful for high-traffic entities. It is a short, prompt-ready representation of what the system usually needs to know about that entity.</p><h2>Query routing and context building</h2><p>The query router chooses the cheapest useful retrieval path. It should distinguish local, global, hybrid, structured, and evidence-heavy questions.</p><p>The context builder then assembles the prompt under a token budget. It should track how many tokens come from graph facts, summaries, and raw chunks.</p><p>The final prompt should be compact, structured, and evidence-aware.</p><h1>8. Operating a token efficient GraphRAG pipeline</h1><p>GraphRAG usually costs more to index than simple vector RAG. It may use LLM calls for extraction, entity resolution, relationship generation, summaries, and community reports.</p><p>That indexing cost is justified when the graph is reused often, when queries need cross-document reasoning, or when the system must provide grounded answers with clear provenance. Query-time token savings must be weighed against the cost of building and maintaining the graph.</p><p>The operational aim is to spend tokens once where they can be reused many times.</p><p>That means structured data should be mapped directly into the graph. Product catalogues, service ownership tables, policy metadata, ticket fields, incident records, CRM records, and dependency maps do not need to be rediscovered from prose.</p><p>A sensible operating model looks like this:</p><ul><li><p>Use deterministic processing for known structure.</p></li><li><p>Use LLM extraction for genuinely unstructured content.</p></li><li><p>Use entity resolution before summary generation.</p></li><li><p>Use short summaries for routing.</p></li><li><p>Use long evidence only when required.</p></li><li><p>Use stable IDs and content hashes for incremental updates.</p></li></ul><p>Incremental updates are particularly important. If one document changes, the system should not rebuild the whole graph. It should update the changed chunks, affected entities, dependent relationships, and related summaries.</p><p>Token efficiency also needs measurement. The system should track indexing and query-time token usage separately.</p><p>Indexing metrics:</p><ul><li><p>indexing tokens per document</p></li><li><p>extraction input tokens</p></li><li><p>extraction output tokens</p></li><li><p>duplicate entity rate</p></li><li><p>entities per 1,000 source tokens</p></li><li><p>relationships per entity</p></li><li><p>community report token count</p></li><li><p>summary token count</p></li></ul><p>Query metrics:</p><ul><li><p>query type</p></li><li><p>retrieval strategy</p></li><li><p>graph context tokens</p></li><li><p>summary tokens</p></li><li><p>raw chunk tokens</p></li><li><p>number of chunks retrieved</p></li><li><p>number of relationships retrieved</p></li><li><p>total query tokens</p></li><li><p>citation coverage</p></li><li><p>unsupported claim rate</p></li><li><p>answer quality per 1,000 tokens</p></li></ul><p>The best metric is not the lowest token count. It is answer quality per token.</p><p>A tiny prompt that misses the answer is not efficient. A dense prompt that contains the right facts, summaries, and evidence is.</p><h1>9. Common anti-patterns</h1><h2>Extracting everything</h2><p>A common mistake is to treat graph construction as maximum extraction. The pipeline extracts every noun phrase, weak relationship, organisation, date, system, and topic.</p><p>This creates a large graph, but not necessarily a useful one. It increases indexing cost and makes retrieval noisier.</p><p>A better approach is to extract only what supports known retrieval patterns.</p><h2>Using generic relationships</h2><p>A graph full of RELATED_TO edges is not very helpful. It says that two things are connected, but not how or why.</p><p>That pushes the hard work back into the prompt. The LLM has to inspect more context to understand whether a relationship means cause, ownership, dependency, evidence, applicability, or sequence.</p><p>Typed relationships reduce token usage because they reduce ambiguity.</p><h2>Letting duplicate entities survive</h2><p>Duplicate entities create repeated summaries, split evidence, and fragmented graph neighbourhoods.</p><p>This weakens retrieval and increases prompt size. Entity resolution is not a clean-up task to run later. It is part of the core indexing pipeline.</p><h2>Storing long text inside graph properties</h2><p>Large text properties on nodes and relationships can make the graph look self-contained, but they often harm retrieval. The system starts pulling long descriptions into the prompt when a short fact would have been enough.</p><p>Long text should live in chunks, reports, or object storage. The graph should hold compact summaries and references.</p><h2>Mixing domain and evidence layers</h2><p>When documents, chunks, entities, topics, and communities are mixed without clear roles, graph traversal becomes unpredictable.</p><p>A query about one issue may drift into many chunks, authors, dates, and generic topics. The result is a large and unfocused prompt.</p><p>Separate layers make retrieval easier to control.</p><h2>Overusing global search</h2><p>Global search is valuable for corpus-level questions, but it is too expensive for simple local questions.</p><p>A question such as &#8220;How do we fix this issue?&#8221; should not require scanning community reports. It should use a local graph traversal and fetch only the evidence needed.</p><h2>Ignoring time and validity</h2><p>Many corpora contain old and new facts side by side. Policies change, ownership changes, procedures change, and product versions become obsolete.</p><p>If validity is not modelled, the retriever may send contradictory context to the LLM. The answer then depends on the model resolving conflict from prose, which is both costly and risky.</p><h2>Rebuilding everything</h2><p>Rebuilding the full graph after each source update wastes tokens and creates operational instability.</p><p>Stable IDs, content hashes, and dependency tracking allow the system to update only what changed.</p><h1>10. Practical design rules</h1><p>A Labelled Property Graph can make GraphRAG significantly more token efficient, but only when it is designed for retrieval.</p><p>The main rule is:</p><pre><code><code>Every graph element should help the system retrieve less text, better text, or more reliable text.</code></code></pre><p>In practice, this means:</p><ul><li><p>Use a controlled schema.</p></li><li><p>Resolve entities early.</p></li><li><p>Use typed relationships.</p></li><li><p>Keep graph facts compact.</p></li><li><p>Keep long text in evidence storage.</p></li><li><p>Model time and validity.</p></li><li><p>Generate short context cards for common entities.</p></li><li><p>Use communities for global questions.</p></li><li><p>Route queries before retrieval.</p></li><li><p>Fetch raw chunks last.</p></li><li><p>Measure answer quality per token.</p></li></ul><p>The LPG should not try to become a perfect copy of the source corpus. That defeats the purpose. The graph should be a structured, compressed, queryable interpretation of the corpus, with links back to the original evidence.</p><p>A good test is to inspect real prompt payloads.</p><p>If the prompt contains repeated chunks, vague summaries, obsolete facts, or large graph neighbourhoods that the model has to sort through, the graph is not doing enough work.</p><p>If the prompt contains a small set of relevant entities, typed relationships, compact summaries, and selected evidence, the graph is behaving as intended.</p><p>For technical teams, the important shift is to treat graph modelling as part of retrieval design. Labels, relationship types, properties, aliases, weights, summaries, and provenance links all influence how many tokens the LLM sees.</p><p>In a strong GraphRAG implementation, the LPG becomes the control plane for context. It decides what information is worth paying for. The language model then receives a smaller, cleaner, and more meaningful prompt.</p><p>That is where the token savings come from.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!W8S2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!W8S2!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!W8S2!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!W8S2!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!W8S2!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!W8S2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2447913,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/201143962?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!W8S2!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!W8S2!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!W8S2!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!W8S2!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4213f08-cd05-4cdb-a6c1-c3aa1690d42e_1376x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Pragmatic Semantic Layer Manifesto]]></title><description><![CDATA[A pragmatic graph practitioner&#8217;s view of semantics, knowledge layers and autonomous agent control]]></description><link>https://sergeyvasiliev.substack.com/p/the-pragmatic-semantic-layer-manifesto</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/the-pragmatic-semantic-layer-manifesto</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Tue, 19 May 2026 21:45:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XuvC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of contents</strong></p><ol><li><p>The semantic layer is moving beyond analytics</p></li><li><p>Autonomous agents need semantic control</p></li><li><p>The semantic layer is not one thing</p></li><li><p>Semantic layer, knowledge layer, knowledge graph, ontology and applied knowledge graph</p></li><li><p>Ontology and knowledge graph language is becoming buzzword language</p></li><li><p>The LPG view: meaning lives in topology, not only in triples</p></li><li><p>The practical value of LPG in semantic architecture</p></li><li><p>Gartner&#8217;s MVO and MVG: start small, but make it valuable</p></li><li><p>What the market shift reflects</p></li><li><p>Meaning, access and control</p></li><li><p>The semantic layer as a control layer for autonomous agents</p></li><li><p>A pragmatic semantic stack for agentic systems</p></li><li><p>Design principles for the pragmatic semantic layer</p></li><li><p>How to start without creating an enterprise ontology programme</p></li><li><p>Closing manifesto</p></li></ol><div><hr></div><p>The semantic layer has become one of those phrases that everyone uses and almost nobody defines in the same way.</p><p>For some people, it is a SQL facade. For others, it is a metrics layer, an ontology, a catalogue, a governance wrapper, a data product contract, a knowledge graph, an AI grounding layer, or a polite name for metadata management.</p><p>All of those meanings are valid in their own context. None of them is the whole story.</p><p>From a Labelled Property Graph (LPG) practitioner&#8217;s point of view, the confusion is sharper. We already model meaning in the graph. Labels, relationship types, properties, paths, constraints, identifiers, provenance, time, confidence, lineage and exceptions are not technical decoration. They express how the business sees the domain.</p><p>So when someone says &#8220;semantic layer&#8221;, the first question should be simple:</p><p><strong>Layer over what?</strong></p><p>Over tables, to hide joins?<br>Over metrics, to standardise definitions?<br>Over data products, to support discovery?<br>Over a graph, to expose a shared domain model?<br>Over governance, to control usage?<br>Over autonomous agents, to ground decisions and actions?</p><p>The answer matters because the market is now mixing semantic layer, ontology, knowledge graph, context layer, knowledge layer and applied knowledge graph into a new set of fashionable words.</p><p>That may help marketing. It does not help architecture.</p><p>My thesis is simple:</p><p><strong>In the age of autonomous agents, the semantic layer must move from a descriptive layer into a control layer.</strong></p><p>It still needs to define meaning. It still needs to support access. It still needs to make data easier to use. But for agentic systems, that is no longer enough. The semantic layer must also help decide what an agent can retrieve, what it can use, what it can infer, what it can do, what it must explain and what it must escalate.</p><p>By <strong>autonomous agents</strong>, I do not mean uncontrolled systems acting without supervision. I mean software agents that can plan, retrieve, call tools and progress work within explicit semantic, policy and human approval boundaries.</p><p>By <strong>agentic systems</strong>, I mean the broader enterprise environment around those agents: orchestration, tools, workflows, memory, policies, evidence, monitoring, review and audit.</p><p>A pragmatic semantic layer is not a product category first. It is an organisational agreement made usable through technology.</p><p>It is where agreed meaning becomes accessible, governable and actionable.</p><p>A useful external reference point for this shift is Gartner&#8217;s note: <a href="https://www.gartner.com/en/documents/6337279?utm_source=chatgpt.com">Rethink Semantic Layers to Support the Future of Analytics and AI</a>.</p><p>This manifesto argues for a practical position:</p><p>Use ontology where formal alignment is needed.<br>Use RDF where RDF is the right fit.<br>Use LPG where business context, relationships, state, time, provenance and decision trace need to become operational.<br>Use applied knowledge graphs where autonomous agents must act, not merely answer.<br>Do not buy a semantic layer before agreeing what semantics means in your organisation.</p><h1>1. The semantic layer is moving beyond analytics</h1><p>The traditional semantic layer was built for a familiar problem.</p><p>Business users wanted to ask questions without knowing every table, column, join and filter underneath. They wanted &#8220;net revenue&#8221;, &#8220;active customer&#8221;, &#8220;renewal rate&#8221;, &#8220;product margin&#8221; and &#8220;risk exposure&#8221; to mean the same thing across reports.</p><p>That problem has not disappeared.</p><p>Enterprises still need consistent metrics. They still need business-friendly names. They still need governed definitions. They still need a layer that hides some of the physical complexity of data platforms.</p><p>But the role of the semantic layer is changing.</p><p>It is no longer only about making analytics easier for people. It is becoming part of the operating environment for agentic systems.</p><p>That changes the expectation.</p><p>An analyst may ask for a number. An agent may use that number to recommend an action, open a case, escalate a risk, draft a communication, trigger a workflow, or decide which tool to call next.</p><p>That means the semantic layer must answer more than:</p><p>&#8220;What does this metric mean?&#8221;</p><p>It must also answer:</p><p>Is this the right definition for this context?<br>Which source is authoritative?<br>Which version is current?<br>Which policy applies?<br>Which user is allowed to see this?<br>Which action is allowed?<br>Which evidence supports the answer?<br>Which decision has already been made?<br>Which human needs to approve the next step?</p><p>Those are not dashboard questions.</p><p>They are control questions.</p><p>This is why the semantic layer is becoming more strategic. It is moving from a reporting convenience to a foundation for trusted, governed and explainable action.</p><h1>2. Autonomous agents need semantic control</h1><p>A human analyst can look at a result and ask whether it makes sense. A human can notice that the wrong customer hierarchy was used. A human can remember that the policy changed last quarter. A human can call the data owner and check whether a field is reliable.</p><p>An autonomous agent needs much of that context to be available in the system.</p><p>It needs to know where to retrieve information from. It needs to know which path through the data is valid. It needs to know which definition is certified, which policy applies and which action is blocked. It needs to know what has already happened in the current workflow.</p><p>In other words, an agent does not only need data access. It needs semantic control.</p><p>A classic semantic layer can help an agent translate business language into data logic. That is useful, but not enough. The agent also needs operational context.</p><p><strong>Context is the scoped, current and governed information with necessary timestamps needed to make a decision, trace previous decisions or take an action.</strong></p><p>This definition matters because context is not just &#8220;related information&#8221;. A pile of related documents is not context. A list of similar records is not context. A catalogue entry is not context on its own.</p><p>For autonomous agents, context must be scoped to the task, current enough to be safe, governed enough to be trusted and timestamped enough to support traceability.</p><p>The agent needs state.</p><p>For example, is the case open, reviewed, blocked, approved or closed?</p><p>It needs evidence.</p><p>For example, which document, record, calculation, clause or data point supports the recommendation?</p><p>It needs policy.</p><p>For example, is the proposed action allowed for this customer, in this region, under this contract, for this user?</p><p>It needs decision trace.</p><p>For example, which information was used, which tools were called, which checks passed, which checks failed, and who approved the final action?</p><p>This is the shift.</p><p>The semantic layer for autonomous agents is not only a map of data meaning. It becomes the place where meaning, state, policy, evidence and action meet.</p><h1>3. The semantic layer is not one thing</h1><p>We often talk about &#8220;the semantic layer&#8221; as if there is a single agreed architecture behind the term.</p><p>There is not.</p><p>In practice, the semantic layer can mean several different things.</p><p>It can mean a business view over tables. It can mean a governed metrics layer. It can mean a shared model for dashboards. It can mean a catalogue of business terms. It can mean mappings between data products. It can mean an ontology. It can mean a knowledge graph. It can mean a context layer for autonomous agents.</p><p>This is why semantic layer conversations often go wrong. People use the same words while discussing different concerns.</p><p>One team may be trying to standardise finance metrics. Another team may be trying to expose data products to business users. Another team may be trying to make policies machine-readable. Another team may be trying to build a graph that agents can use for context and control.</p><p>All of these are semantic problems, but they are not the same problem.</p><p>A pragmatic semantic layer needs to be clear about its boundary.</p><ul><li><p>If the layer only gives easier access to data, it is a query interface.</p></li><li><p>If it only defines terms, it is documentation.</p></li><li><p>If it only records ownership and approval, it is governance metadata.</p></li><li><p>If it only connects entities, it is a graph.</p></li><li><p>If it only defines concepts, it is ontology work.</p></li><li><p>If it supports meaning, access and control together, it becomes a practical semantic layer.</p></li></ul><p>This is the anchor sentence:</p><p><strong>The semantic layer is where agreed meaning becomes usable.</strong></p><p>That word &#8220;usable&#8221; is important.</p><p>Meaning that cannot be queried is weak.<br>Meaning that cannot be governed is risky.<br>Meaning that cannot be explained is not trusted.<br>Meaning that cannot be used by agents is not ready for the next generation of enterprise systems.</p><h1>4. Semantic layer, knowledge layer, knowledge graph, ontology and applied knowledge graph</h1><p>The terms need boundaries because the market is starting to blur them.</p><p>A <strong>semantic layer</strong> makes agreed meaning usable. It connects business terms, metrics, definitions, rules and relationships to the data and systems that implement them.</p><p>A <strong>knowledge layer</strong> is broader. It connects meaning to enterprise context. It brings together data, metadata, business entities, policies, lineage, evidence, ownership, usage, conversations and decisions.</p><p>A <strong>knowledge graph (KG)</strong> is not just connected data. It connects entities, relationships, facts and meaning in a way that can be reused for discovery, retrieval, recommendations, decisions and operational understanding.</p><p>An <strong>ontology</strong> provides formal alignment. It helps define concepts, relationships, constraints, hierarchies and shared vocabulary. Ontology can be extremely useful when precision, interoperability or standardisation matters.</p><p>An <strong>applied knowledge graph (AKG)</strong> is a graph that participates in real work. It is not just a representation of a domain. It supports retrieval, policy checks, workflow state, tool use, decision support, recommendations, approvals and audit.</p><p>These are related, but they are not the same thing.</p><p>A simple test helps:</p><p>If the model tells us what concepts mean, it is doing ontology work.<br>If it connects entities, relationships, facts and meaning, it is doing KG work.<br>If it maps business language to usable data, it is doing semantic layer work.<br>If it connects enterprise context for applications and agents, it is doing knowledge layer work.<br>If it changes how work is executed, governed or audited, it is becoming an AKG.</p><p>This distinction matters because many organisations are trying to buy one thing and expecting it to behave like all five.</p><p>That is how disappointment begins.</p><p>A semantic layer can help people ask better questions.<br>A knowledge layer can help systems understand the wider business context.<br>An AKG can help autonomous agents act in a controlled way.</p><p>Those are different levels of maturity.</p><p>The danger is pretending that a glossary, ontology, catalogue, metrics layer or graph database automatically provides the full stack.</p><p>It does not.</p><h1>5. Ontology and knowledge graph language is becoming buzzword language</h1><p>There is a new problem in the market: ontology and knowledge graph language is becoming buzzword language.</p><p>This is not only annoying. It is dangerous.</p><p>When ontology, knowledge graph, semantic layer, context layer and knowledge layer are used interchangeably, teams stop asking the hard architectural questions.</p><p>Is this model conceptual or operational?<br>Is it used by humans, machines or both?<br>Is it enforced at runtime?<br>Does it control access?<br>Does it guide retrieval?<br>Does it support agent memory?<br>Does it capture evidence?<br>Does it record decisions?<br>Does it evolve with business change?<br>Can ordinary engineering teams maintain it?</p><p>The problem is not ontology.</p><p>The problem is ontology used as a substitute for delivery, adoption and operational accountability.</p><p>Ontology is valuable. Conceptual discipline is valuable. Semantic precision is valuable. Standards matter. RDF has a place, and in some domains it is the right choice.</p><p>But having a place is not the same as owning the market.</p><p>Enterprise teams choose technology under delivery pressure. They care about integration friction, hiring reality, maintainability, governance effort, operational fit, supportability and production accountability.</p><p>A model that is formally elegant but expensive to maintain, hard to explain, slow to integrate and dependent on scarce expertise will struggle outside specialist environments.</p><p>Pragmatism is not anti-intellectual.</p><p>Pragmatism is what architecture looks like after it meets budgets, deadlines, legacy systems, support teams and production accountability.</p><p>The market is not rejecting ontology because it is too rigorous. It is rejecting approaches that are too detached from how real systems get built, funded, operated and evolved.</p><p>The same criticism applies to knowledge graph language.</p><p>Calling something a knowledge graph does not make it useful. Calling something a context graph does not make it contextual. Calling something a semantic layer does not mean the organisation has agreed on meaning.</p><p>The label is not the architecture.</p><h1>6. The LPG view: meaning lives in topology, not only in triples</h1><p>From an LPG practitioner&#8217;s point of view, meaning does not only live in formal statements. It also lives in graph structure.</p><p>Meaning lives in labels.<br>Meaning lives in relationship types.<br>Meaning lives in direction.<br>Meaning lives in properties.<br>Meaning lives in paths.<br>Meaning lives in constraints.<br>Meaning lives in identifiers.<br>Meaning lives in provenance.<br>Meaning lives in time.<br>Meaning lives in confidence.<br>Meaning lives in lineage.<br>Meaning lives in exceptions.</p><p>This is where LPG practice differs from many ontology-first conversations.</p><p>In an LPG, a relationship is not just a passive link. It can be an event, obligation, approval, dependency, ownership, evidence connection, policy application or operational state transition.</p><p>For example:</p><pre><code><code>(:Customer)-[:HAS_CONTRACT {validFrom, validTo, status}]-&gt;(:Contract)

(:Decision)-[:SUPPORTED_BY {confidence, sourceVersion, extractedAt}]-&gt;(:Evidence)

(:PolicyCheck)-[:BLOCKED {reason, checkedAt}]-&gt;(:ProposedAction)

(:AgentRun)-[:USED_TOOL {status, durationMs, result}]-&gt;(:Tool)</code></code></pre><p>Those relationship properties are not technical extras. They carry business meaning.</p><p>This is the practical value of LPG in semantic architecture. It allows the semantic model to represent working reality, not only conceptual reality.</p><p>A business does not only need to know that customers have contracts. It needs to know which contract, in which version, under which conditions, with which evidence, during which period, reviewed by whom and used in which decision.</p><p>That is applied semantics.</p><p>This is also why the semantic layer discussion should not be reduced to RDF versus LPG.</p><p>The better question is:</p><p><strong>Where does meaning need to live for this use case to work?</strong></p><p>Sometimes meaning needs to live in an ontology. Sometimes it needs to live in a governed metric. Sometimes it needs to live in a catalogue. Sometimes it needs to live in a graph path. Sometimes it needs to live directly on the relationship between two business objects.</p><p>A pragmatic semantic layer should be able to combine those forms of meaning without pretending they are all the same thing.</p><h1>7. The practical value of LPG in semantic architecture</h1><p>LPG is useful in semantic architecture because it is close to how business people describe work.</p><p>People naturally talk in entities and relationships:</p><ul><li><p>customer owns account</p></li><li><p>contract contains clause</p></li><li><p>policy applies to product</p></li><li><p>metric depends on source</p></li><li><p>case requires review</p></li><li><p>decision uses evidence</p></li><li><p>agent called tool</p></li><li><p>action changed status</p></li></ul><p>That language maps cleanly to nodes and relationships.</p><p>The value is not only modelling elegance. The value is operational.</p><p>LPGs make it practical to represent rich relationships with properties, trace paths across domains, attach evidence to claims, model time and validity, connect structured and unstructured sources, record agent actions, capture workflow state, support explainable recommendations, find indirect dependencies and make governance traversable.</p><p>This is why LPGs are strong candidates for the pragmatic semantic layer.</p><p>They give us a way to move from static meaning to working context.</p><p>A static definition says what a term means.<br><br>A graph path shows how the term is connected to data, rules, evidence and decisions.<br><br>A relationship property can show when that connection became valid, who certified it and which exception applies.</p><p>That is a big difference.</p><p>In agentic systems, this difference becomes even more important. An agent cannot rely only on a definition. It needs to know which path to follow, which state to inspect, which rule to apply and which evidence to bring back.</p><p>This is where LPG provides practical semantic value.</p><p>It does not only describe the domain. It can become the domain control surface.</p><p>By <strong>domain control surface</strong>, I mean the place where the system checks the current state of the domain before acting. It is where the agent can inspect the customer, contract, policy, evidence, workflow state, previous decision and allowed action before it does anything.</p><p>That does not mean every semantic layer should be built only as an LPG. It means LPG should be taken seriously as semantic infrastructure, not treated as a mere implementation detail beneath an ontology.</p><p>In LPG practice, the graph can itself be the semantic layer, or a major part of it.</p><p>The key is discipline.</p><p>Labels must mean something. Relationship types must be intentional. Properties must be governed. Naming must be consistent. Constraints must be applied where correctness matters. The model must be explainable to business users and maintainable by engineering teams.</p><p>Flexibility without discipline becomes graph spaghetti.</p><p>Discipline without delivery becomes ontology theatre.</p><p>The pragmatic path sits between them.</p><h1>8. Gartner&#8217;s MVO and MVG: start small, but make it valuable</h1><p>Gartner uses the terms <strong>Minimum Viable Ontology (MVO)</strong> and <strong>Minimum Viable Graph (MVG)</strong>.</p><p>I use the same acronyms, but I read them through a delivery lens:</p><p><strong>Minimum Valuable Ontology</strong> and <strong>Minimum Valuable Graph</strong>.</p><p>This is my practitioner interpretation, not a replacement for Gartner&#8217;s wording.</p><p>The difference is subtle, but important.</p><p>Viable means it can exist.<br>Valuable means it is worth using.</p><p>The practical idea is the same: do not begin by defining the whole enterprise. Define only as many concepts, relationships and instances as are needed to deliver a clear business capability.</p><p>This is a direct answer to one of the biggest failures in semantic programmes.</p><p>Many organisations try to define an enterprise-wide ontology, taxonomy or schema first. They spend months aligning vocabulary, debating abstractions and designing a model that is meant to satisfy everyone. By the time the model is ready, the business use case has moved, the funding has weakened, or stakeholders have lost patience.</p><p>The MVO and MVG approach reverses the direction.</p><p>Start with a targeted use case. Identify the minimum concepts required. Identify the minimum relationships required. Identify the minimum evidence and data required. Build the graph and ontology slice that delivers the capability. Test it with users. Expand only when value is proven.</p><p>For an LPG practitioner, this is natural.</p><p>A useful MVG might model customers, contracts, products, policies, evidence, tasks and decisions for one agentic workflow. It does not need every enterprise concept. It needs the concepts and instances that make that workflow reliable.</p><p>A useful MVO might define the controlled terms, relationships and constraints needed for that same workflow. It does not need to settle every philosophical question. It needs enough semantic agreement to prevent confusion and support reuse.</p><p>The MVO and MVG should not be treated as two separate waterfall phases. They should evolve together.</p><p>The MVO gives just enough shared meaning.<br>The MVG gives just enough connected instance data.<br>The use case tests whether both are useful.<br>The next iteration improves both.</p><p>This is where Gartner&#8217;s idea becomes very practical.</p><p>Use existing standards where they help. Reuse industry ontologies where they fit. Do not start from a blank page. Do not wait for the perfect enterprise model. Iterate from capability to capability.</p><p>The best first graph is not the biggest graph.</p><p>It is the first graph people trust enough to use.</p><p>And for autonomous agents, trust is not abstract. It means the graph helps the agent retrieve the right context, follow the right path, apply the right policy and produce an answer or action that can be inspected afterwards.</p><h1>9. What the market shift reflects</h1><p>The Gartner Data and Analytics Summit vendor landscape reflects a wider market shift. Different vendor categories are now converging on the same semantic problem.</p><p>Analytics platforms talk about trusted metrics and governed business logic.<br>Data platforms talk about semantic models close to data.<br>Catalogue and governance platforms talk about context, lineage, ownership and trust.<br>Graph platforms talk about connected knowledge and explainable paths.<br>Agentic AI platforms talk about context, action and control.</p><p>These are different entry points into the same business pressure.</p><p>Organisations want their data and knowledge to be usable by humans, systems and autonomous agents. They want business language to be consistent. They want access to be simpler. They want governance to be visible. They want outputs to be explainable. They want agents to act safely.</p><p>That is why so many categories now use semantic language.</p><p>But this also increases confusion.</p><p>A metrics layer is valuable, but it is not the whole semantic layer.<br>A catalogue is valuable, but it is not the whole knowledge layer.<br>A graph is valuable, but it is not automatically an AKG.<br>An ontology is valuable, but it is not automatically an operational control plane.<br>A context product is valuable only if it manages real context, not just related metadata.</p><p>The buyer&#8217;s job is not to ask:</p><p>&#8220;Which vendor has a semantic layer?&#8221;</p><p>The better question is:</p><p><strong>Which part of the semantic problem are we trying to solve?</strong></p><ul><li><p>If the problem is inconsistent metrics, the answer may be a governed analytics semantic layer.</p></li><li><p>If the problem is poor data discovery, the answer may be metadata and catalogue context.</p></li><li><p>If the problem is autonomous agent control, the answer must include state, policy, evidence, decision trace and relationship-native context.</p></li><li><p>If the problem is cross-domain reasoning, the answer probably needs a KG or AKG.</p></li><li><p>If the problem is formal alignment, the answer may need ontology.</p></li></ul><p>The market signal is clear: semantic architecture is becoming composite.</p><p>There will not be one universal semantic layer that magically solves all concerns. Most enterprises will need several semantic assets that work together.</p><p>The real architecture question is how to connect them.</p><h1>10. Meaning, access and control</h1><p>A useful semantic layer handles three concerns: meaning, access and control.</p><p><strong>Meaning</strong> is what things are called and how they relate.</p><p>This includes business terms, entities, metrics, relationships, definitions, synonyms, hierarchies, rules and assumptions. Without meaning, users and systems cannot agree on what they are talking about.</p><p><strong>Access</strong> is how people and systems use that meaning without knowing every physical detail.</p><p>This includes query interfaces, APIs, data products, graph traversal, dashboards, search, retrieval tools and agent access patterns. Without access, the semantic model remains a nice document.</p><p><strong>Control</strong> is how meaning and access are governed.</p><p>This includes ownership, certification, policy, quality, lineage, versioning, permissions, evidence, audit and change management. Without control, the semantic layer becomes another ungoverned abstraction.</p><p>Most failed semantic layer discussions overemphasise one concern and ignore the others.</p><p>If the focus is only access, the result is a nicer query layer.</p><p>This helps users get to data, but it does not guarantee that the meaning is agreed or that the answers are safe to use.</p><p>If the focus is only meaning, the result is documentation.</p><p>This may improve alignment, but it does not help if the definitions are not connected to systems, queries, tools and workflows.</p><p>If the focus is only control, the result is governance theatre.</p><p>This may create approval processes and stewardship records, but it does not help if the governed meaning is not actually used.</p><p>A pragmatic semantic layer needs all three.</p><p>For LPG teams, this is a major opportunity.</p><ul><li><p>The graph can represent meaning.</p></li><li><p>The graph can support access through paths and patterns.</p></li><li><p>The graph can expose control through policy, provenance, ownership, lineage and evidence.</p></li></ul><p>That is why LPG is not just a storage choice. It can be the structural backbone of the semantic layer.</p><h1>11. The semantic layer as a control layer for autonomous agents</h1><p>The biggest change in the age of autonomous agents is that the semantic layer must move into the control path.</p><p>This is the difference between a semantic layer that describes and a semantic layer that governs action.</p><p>A descriptive semantic layer says:</p><ul><li><p>Here is the definition of customer.</p></li><li><p>Here is the approved revenue metric.</p></li><li><p>Here is the table behind the report.</p></li><li><p>Here is the business owner.</p></li><li><p>Here is the lineage.</p></li></ul><p>A control-oriented semantic layer says:</p><ul><li><p>This is the customer in scope.</p></li><li><p>This is the valid contract at this point in time.</p></li><li><p>This is the policy that applies.</p></li><li><p>This is the certified metric for this decision.</p></li><li><p>This evidence is current.</p></li><li><p>This evidence is stale.</p></li><li><p>This tool is allowed.</p></li><li><p>This action is blocked.</p></li><li><p>This decision requires review.</p></li><li><p>This outcome must be recorded.</p></li><li><p>That is a much stronger role.</p></li></ul><p>For autonomous agents, the semantic layer should not sit at the side as a passive reference. It should help decide what the agent can retrieve, what it can use, what it can do, what it must explain and what it must escalate.</p><p>This is where AKGs become important.</p><p>An AKG is not simply a KG with a nicer name. It is a KG that participates in work.</p><p>It connects domain knowledge to operational objects:</p><ul><li><p>tasks</p></li><li><p>cases</p></li><li><p>agent runs</p></li><li><p>tool calls</p></li><li><p>policy checks</p></li><li><p>evidence</p></li><li><p>exceptions</p></li><li><p>human reviews</p></li><li><p>approvals</p></li><li><p>decisions</p></li><li><p>actions</p></li><li><p>outcomes</p></li></ul><p>This gives the agent a structured working memory.</p><p>It also gives the organisation an inspection layer.</p><p>After an agent has acted, the organisation should be able to ask:</p><ul><li><p>What did the agent know?</p></li><li><p>Which evidence did it use?</p></li><li><p>Which policy did it apply?</p></li><li><p>Which tool did it call?</p></li><li><p>Which decision path did it follow?</p></li><li><p>Which human approved the step?</p></li><li><p>What changed afterwards?</p></li></ul><p>Without that trace, autonomous agents become difficult to trust.</p><p>With that trace, the semantic layer becomes a control layer.</p><h2>12. A pragmatic semantic stack for agentic systems</h2><p>The pragmatic semantic layer is not a single platform. It is a stack of responsibilities.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!raAb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!raAb!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png 424w, /__u/substackcdn.com/image/fetch/$s_!raAb!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png 848w, /__u/substackcdn.com/image/fetch/$s_!raAb!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png 1272w, /__u/substackcdn.com/image/fetch/$s_!raAb!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!raAb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png" width="1456" height="1062" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1062,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:300704,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/198476180?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!raAb!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png 424w, /__u/substackcdn.com/image/fetch/$s_!raAb!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png 848w, /__u/substackcdn.com/image/fetch/$s_!raAb!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png 1272w, /__u/substackcdn.com/image/fetch/$s_!raAb!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5e06b06-e9f6-4140-ae90-b9922b2829ea_1920x1400.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3>Layer 1: semantic agreement</h3><p>This layer defines the core language of the domain. It includes business terms, core entity types, important relationships, metric definitions and controlled meanings.</p><p>Ontology can be valuable here, especially when the organisation needs formal alignment across teams, systems or external standards.</p><p>The mistake is trying to define everything before delivering anything.</p><h3>Layer 2: data mapping</h3><p>This layer connects meaning to implementation. It maps terms, entities and metrics to tables, columns, files, APIs, documents, events, data products, dashboards and graph nodes.</p><p>This is where many traditional semantic layer products are strong.</p><p>For autonomous agents, this layer matters because an agent must know where trusted data lives and how business terms resolve to technical assets.</p><h3>Layer 3: enterprise knowledge graph</h3><p>This layer connects the durable knowledge of the organisation. It brings together customers, suppliers, products, contracts, policies, assets, systems, people, documents, reports, risks, controls and data assets.</p><p>For an LPG practitioner, this is where business topology becomes visible.</p><p>The enterprise stops looking like disconnected tables and starts looking like a connected model of how the organisation works.</p><h3>Layer 4: applied knowledge graph</h3><p>This layer connects knowledge to work. It models tasks, cases, evidence, agent runs, tool calls, policy checks, approvals, decisions, exceptions, actions and outcomes.</p><p>This is the layer that makes the graph operational.</p><p>It is also the layer that makes the semantic layer useful for autonomous agents.</p><h3>Layer 5: agentic context</h3><p>This layer gives agents usable context. It combines enterprise knowledge, current conversation, workflow state and decision history.</p><p>The agent does not need everything. It needs the right subgraph for the current decision, with the right timestamps, permissions, evidence and policy boundaries.</p><h3>Layer 6: governance and control</h3><p>This layer makes the semantic system safe. It manages ownership, certification, access, policy, lineage, provenance, quality, review and audit.</p><p>In a graph architecture, governance should be represented as relationships that can be traversed and checked.</p><h3>Layer 7: consumption</h3><p>This layer exposes the semantic layer to users and systems. It may include BI tools, applications, APIs, search, agents, operational workflows and data products.</p><p>The stack should not be built all at once.</p><p>Start with an MVO and MVG around a real business problem. Then expand.</p><p>The goal is not to build the most complete semantic architecture on paper.</p><p>The goal is to build the smallest semantic architecture that changes the quality of work.</p><h2>13. Design principles for the pragmatic semantic layer</h2><h3>1. Start with organisational meaning, not tooling</h3><p>Do not start by asking which semantic layer product to buy.</p><p>Start by asking which meanings must be shared, which definitions must be governed and which decisions depend on them.</p><p>The best semantic layer is not the one with the most impressive architecture slide. It is the one people trust enough to reuse.</p><h3>2. Be honest about the boundary</h3><p>The graph, ontology, BI model, metrics store, catalogue and RDF layer are not automatically the semantic layer.</p><p>They may contribute to it. They may implement part of it. They may expose it. But the semantic layer is where agreed meaning becomes usable.</p><h3>3. Treat relationships as semantic assets</h3><p>In many domains, the relationship is where the business fact lives.</p><ul><li><p>Who approved what?</p></li><li><p>Which policy applies to which action?</p></li><li><p>Which evidence supports which decision?</p></li><li><p>Which source produced which value?</p></li><li><p>Which exception overrode which rule?</p></li></ul><p>An LPG makes these relationships explicit and useful.</p><h3>4. Make state visible</h3><p>Autonomous agents need to know where the work stands.</p><p>A case may be open, reviewed, blocked, approved, escalated or closed. A contract may be draft, active, expired or superseded. A recommendation may be proposed, accepted, rejected or overridden.</p><p>State should not be hidden in logs or prompts. It should be part of the graph.</p><h3>5. Attach evidence</h3><p>A semantic layer should not only answer what something means. It should show why the answer can be trusted.</p><p>Important claims should connect to evidence, sources, versions, extraction time, confidence and review status.</p><p>This matters because autonomous agents will be judged not only by the answers they produce, but by whether those answers can be inspected.</p><h3>6. Model time properly</h3><p>Meaning changes.</p><p>Policies change. Contracts change. Product hierarchies change. Metric definitions change. Customer status changes. Evidence becomes stale.</p><p>A pragmatic semantic layer must distinguish what is true now from what was true then.</p><p>For autonomous agents, this is not optional. Acting on outdated context is one of the fastest ways to create risk.</p><h3>7. Make governance traversable</h3><p>Governance should not only live in documents and committees.</p><p>It should be possible to traverse from data to owner, from metric to certification, from policy to affected data, from decision to evidence, from agent action to approval and from answer to source.</p><p>This is one of the strongest practical arguments for LPG.</p><h3>8. Use ontology where it helps</h3><p>Ontology is useful when shared conceptual discipline is needed.</p><p>Use it to align terms, define types, manage reference models, support interoperability and reduce ambiguity.</p><p>Do not use it as a reason to delay delivery for two years.</p><h3>9. Use LPG where operational context matters</h3><p>LPG is valuable when the work depends on rich relationships, properties, traversal, state, change and traceability.</p><p>That is why LPG is well suited to semantic layers that support applications, agents, investigations, compliance workflows, recommendations and decision intelligence.</p><h3>10. Measure reuse and trust</h3><p>The real test is not whether the semantic layer is elegant.</p><p>The test is whether people and systems reuse it.</p><ul><li><p>Do analysts trust the definitions?</p></li><li><p>Do engineers build against the model?</p></li><li><p>Do agents retrieve the right context?</p></li><li><p>Do governance teams rely on the lineage?</p></li><li><p>Do business users accept the answers?</p></li><li><p>Do decisions improve?</p></li></ul><p>A semantic layer that is not reused is not a layer. It is shelfware.</p><h2>14. How to start without creating an enterprise ontology programme</h2><p>The worst way to start is to declare a multi-year enterprise ontology programme before proving practical value.</p><p>The better way is to choose a real workflow where semantic confusion is already expensive.</p><p>Good starting points are usually places where people waste time reconciling meaning, checking evidence, asking experts, searching across systems, repeating routine analysis, or reviewing actions manually because the system cannot be trusted.</p><p>For example:</p><ul><li><p>A contract process where agents need clauses, obligations, playbooks, risk rules, approvals and evidence.</p></li><li><p>A compliance process where agents need controls, policies, systems, owners, evidence and review outcomes.</p></li><li><p>A finance process where agents need filings, figures, time periods, calculations, assumptions and decision trace.</p></li><li><p>A customer process where agents need products, entitlements, cases, previous interactions, policies and escalation rules.</p></li></ul><p>Start by modelling the work.</p><ul><li><p>What are the core entities?</p></li><li><p>What are the meaningful relationships?</p></li><li><p>Which terms need shared definitions?</p></li><li><p>Which data sources are trusted?</p></li><li><p>Which policies apply?</p></li><li><p>Which evidence matters?</p></li><li><p>Which actions are allowed?</p></li><li><p>Which actions require human approval?</p></li><li><p>Which decisions must be recorded?</p></li></ul><p>Then build the MVO and MVG together.</p><p>The MVO defines the minimum set of controlled meanings, relationships and constraints needed to make the workflow reliable. The MVG populates enough instance data to prove that the workflow works in practice.</p><p>They should evolve iteratively.</p><p>The ontology should be tested against the use case and the available graph. The graph should be populated only with the data needed to support the current capability. If the workflow exposes ambiguity, extend the MVO. If the workflow needs more connected evidence, extend the MVG.</p><p>Do not model the whole enterprise.</p><p>Model the smallest semantic and graph structure that makes the workflow better.</p><p>Then connect the graph to the workflow.</p><p>This is where many teams stop too early. They build a model, but they do not put it into use. A pragmatic semantic layer has to be used by people and systems. It must become part of how work happens.</p><p>After that, expand carefully.</p><p>Add more entities when the workflow needs them. Add more relationships when they improve retrieval or control. Add more ontology when ambiguity creates risk. Add more governance when reuse increases.</p><p>The goal is not semantic perfection.</p><p>The goal is trusted semantic progress.</p><h1>15. Closing manifesto</h1><p>We are trying to buy semantic layers before agreeing what semantics means in our organisations.</p><p>That is the root problem.</p><p>The market is full of useful products, but the buyer must still do the hard work of deciding what meaning, access and control should look like.</p><p>The Pragmatic Semantic Layer Manifesto is simple:</p><ul><li><p>A semantic layer is not an RDF layer.</p></li><li><p>A knowledge graph is not automatically an ontology.</p></li><li><p>An ontology is not automatically a runtime.</p></li><li><p>A catalogue is not automatically a knowledge layer.</p></li><li><p>A metrics layer is not automatically enterprise meaning.</p></li><li><p>A graph database is not automatically an AKG.</p></li><li><p>A context layer is not automatically context.</p></li><li><p>A vendor slide is not an operating model.</p></li><li><p>Semantics do not only exist in triples.</p></li></ul><p>In LPG practice, meaning can live in labels, relationship types, properties, paths, constraints, identifiers, provenance, time, confidence, lineage and exceptions.</p><p>Ontology is valuable, but ontology is not the whole architecture.</p><p>RDF has a place, but it is not the default answer to every enterprise semantic problem.</p><p>LPG has practical value because it turns meaning into connected, traversable, inspectable and operational structure.</p><p>Gartner&#8217;s terms are Minimum Viable Ontology and Minimum Viable Graph. My delivery interpretation is that they must also be minimum valuable: small enough to build, but useful enough to change the quality of work.</p><p>For autonomous agents, the semantic layer must become more than a map. It must become part of control.</p><p>It must tell the agent what something means, where it comes from, what it is connected to, what state it is in, which policy applies, which evidence supports it, which tool may act, which human must approve and which decision must be recorded.</p><p>That is the difference between semantic decoration and semantic infrastructure.</p><p>The future semantic layer will not be won by the purest ontology, the biggest catalogue, the cleverest prompt or the most impressive demo.</p><p>It will be won by the architecture that people trust enough to reuse and agents can rely on safely.</p><p>Model the core concepts.<br>Define the relationships.<br>Agree what is governed and what is local.<br>Make the model queryable.<br>Make it explainable.<br>Attach evidence.<br>Represent time.<br>Operationalise policy.<br>Start with an MVO and MVG.<br>Use LPG where context and decisions matter.<br>Use ontology where alignment matters.<br>Choose tooling after the semantics are understood.</p><p>Because the best semantic layer is not the one that claims the most.</p><p>It is the one that makes agreed meaning usable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!XuvC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!XuvC!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!XuvC!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!XuvC!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XuvC!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!XuvC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1842454,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/198476180?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!XuvC!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!XuvC!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!XuvC!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XuvC!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd32c5aee-9f18-479d-92f1-8e3f4df15767_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Applied Knowledge Graph as the Runtime Layer for Agentic AI ]]></title><description><![CDATA[An LPG practitioner&#8217;s view of how Applied Knowledge Graphs give agents state, memory, evidence, tool routing, policy, and decision trace]]></description><link>https://sergeyvasiliev.substack.com/p/the-applied-knowledge-graph-as-the</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/the-applied-knowledge-graph-as-the</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Tue, 28 Apr 2026 16:06:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Zsvc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of Contents</strong></p><ol><li><p>A plain definition of a Knowledge Graph</p></li><li><p>Knowledge Graph does not mean one graph standard</p></li><li><p>Why the Labelled Property Graph model is a strong foundation for Knowledge Graphs</p></li><li><p>What makes a Knowledge Graph applied</p></li><li><p>Why agentic systems need a runtime layer</p></li><li><p>The Applied Knowledge Graph as execution substrate</p></li><li><p>State: knowing where the work stands</p></li><li><p>Memory: making context durable and useful</p></li><li><p>Evidence: grounding actions in sources</p></li><li><p>Tool routing: choosing the right capability</p></li><li><p>Policy: turning rules into operational controls</p></li><li><p>Decision traceability: showing what happened and why</p></li><li><p>Health example: a clinical pathway agent</p></li><li><p>Legal example: a contract review agent</p></li><li><p>Benefits of the Applied Knowledge Graph</p></li><li><p>What this means for graph-based retrieval and generation</p></li><li><p>Closing view</p></li></ol><div><hr></div><h1>1. A plain definition of a Knowledge Graph</h1><p>A Knowledge Graph (KG) is a structured representation of information that captures relationships, entities, and attributes to provide a comprehensive and interconnected understanding of a subject.</p><p>That definition matters because it keeps us focused on the real point.</p><p>A KG is not just a database. It is not just a semantic model. It is not just a diagram of concepts. It is a connected model of the things that matter in a domain, how those things relate to each other, and what we know about them.</p><p>For an AI system, this is valuable because most professional work is not flat. It is relational.</p><p>A patient is connected to observations, diagnoses, medicines, allergies, clinicians, care pathways, and guidelines.</p><p>A contract is connected to parties, clauses, obligations, jurisdictions, playbooks, risks, approvals, and negotiation history. A KG gives these connections a structure that machines can query and humans can inspect.</p><p>For professionals working in graph, GraphRAG, AI, and agentic flow, this is the starting point. The graph is not only a way to store knowledge. It is a way to organise context for action.</p><h1>2. Knowledge Graph does not mean one graph standard</h1><p>One common mistake is to treat a KG and RDF as the same thing.</p><p><em>They are not the same.</em></p><p>RDF is one way to build a KG. It is important, mature, and useful in many settings, especially where interoperability, shared vocabularies, ontologies, and formal reasoning are central requirements.</p><p>But a KG is a broader idea. It is the structured, connected representation of information. That representation can be implemented using RDF, a Labelled Property Graph (LPG), or a combination of both.</p><p>From an LPG practitioner&#8217;s point of view, this distinction is important.</p><p>If we assume that KG means RDF only, we miss a practical and powerful design path for applied systems. Many operational KGs are built more naturally as LPGs because the model fits how enterprise and workflow data often appears in the real world.</p><p>People, documents, events, tasks, cases, policies, decisions, and tool calls all have rich attributes. Relationships also have attributes. Those attributes change over time. The model evolves as the use case becomes clearer. This is exactly where LPGs are strong.</p><h1>3. Why the Labelled Property Graph model is a strong foundation for Knowledge Graphs</h1><p>The LPG model is a strong foundation for KGs because it is flexible, direct, and well suited to operational systems.</p><p>In an LPG, nodes can have labels and properties. Relationships can have types and properties. This allows the model to represent both entities and the meaningful connections between them without forcing every detail into a more complex structure.</p><p>For example:</p><pre><code>(:Patient {nhsNumber, ageBand, riskStatus})
(:Medication {name, doseForm, activeIngredient})
(:Patient)-[:PRESCRIBED {startDate, dose, status}]-&gt;(:Medication)</code></pre><p>The relationship is not just a link. It carries facts that are essential to the work.</p><p>The same applies in legal work:</p><pre><code>(:Contract {contractId, valueBand, governingLaw})
(:Clause {clauseType, extractedText, riskLevel})
(:Contract)-[:CONTAINS {page, section, extractionConfidence}]-&gt;(:Clause)</code></pre><p>This is a natural fit for applied AI because agents need to work with context that is rich, changing, and connected.</p><p>LPGs are also practical because they support efficient traversal. In many graph systems, relationships are stored and indexed in a way that makes connected queries fast. That matters when an agent needs to move from a user request to the relevant entities, evidence, policies, prior decisions, and allowed tools.</p><p>The schema-free or schema-optional nature of LPGs is also useful. Applied AI systems rarely start with a perfect model. They evolve. New node types appear. New relationship types are added. New properties become important. LPGs make this incremental evolution easier.</p><p>There is also a standards point. LPGs are now aligned with the wider graph database ecosystem through the Graph Query Language (GQL), the ISO standard graph query language. This helps position LPG not as an informal alternative to semantic technology, but as a serious foundation for graph applications.</p><p>RDF has built-in reasoning strengths. That should be recognised. But reasoning is not exclusive to RDF. In LPG systems, reasoning can be realised through graph algorithms, rule engines, constraints, path queries, embeddings, inference pipelines, ontology alignment, and application logic. The form differs, but the practical outcome can still be achieved.</p><p>In many real-world systems, the best answer is not RDF or LPG. It is often RDF and LPG. LPG can provide high-performance operational querying and flexible modelling, while RDF can support interoperability, vocabularies, and semantic exchange where needed.</p><p>A practical KG can be LPG-native, RDF-native, or hybrid.</p><h1>4. What makes a Knowledge Graph applied</h1><p>An Applied Knowledge Graph (AKG) is a KG designed to support real work.</p><p>It does not only describe a domain. It participates in a process.</p><p>A general KG may represent medical concepts, legal terms, products, organisations, people, or documents. An AKG connects those concepts to live tasks, workflows, policies, evidence, decisions, and outcomes.</p><p>This is the key shift.</p><p>In an AKG, we still model things like:</p><pre><code>Patient
Condition
Medication
Guideline
Contract
Clause
Matter
Jurisdiction</code></pre><p>But we also model operational things like:</p><pre><code>Task
AgentRun
ToolCall
Evidence
PolicyCheck
Decision
Exception
HumanReview</code></pre><p>This turns the graph from a knowledge structure into an execution structure.</p><p>The AKG becomes a place where the agent can find the right context, understand the state of the work, select tools, check policy, record decisions, and show evidence.</p><p>That is why the AKG is so important for agentic AI.</p><h1>5. Why agentic systems need a runtime layer</h1><p>Agentic AI systems do more than generate answers.</p><p>They plan, call tools, inspect results, update state, retrieve evidence, ask for approval, and act across systems. Once an AI system starts doing these things, the architecture needs more than a prompt and a vector store.</p><p>A prompt can guide behaviour, but it is not a reliable runtime layer.</p><p>A vector store can retrieve text, but it does not naturally represent task state, policy logic, tool permissions, decision history, or the difference between a draft, a recommendation, and an approved action.</p><p>A log can record events, but it is usually linear and technical. It does not provide a connected model of why something happened.</p><p>Agentic AI needs somewhere to hold the working context of the process.</p><p>It needs a way to answer questions such as:</p><ul><li><p>What is the current state of this case?</p></li><li><p>What does the agent know, and how does it know it?</p></li><li><p>Which evidence supports this recommendation?</p></li><li><p>Which tools are allowed for this task?</p></li><li><p>Which policies apply?</p></li><li><p>Which human approved the final action?</p></li></ul><p>An AKG can provide this runtime layer.</p><h1>6. The Applied Knowledge Graph as execution substrate</h1><p>Calling the AKG an execution substrate may sound technical, but the idea is simple. The AKG becomes the operating layer that the agent uses while doing work.</p><p>It holds the domain model. It holds case-specific context. It holds workflow state. It holds policy. It holds evidence. It holds memory. It records the agent&#8217;s actions and decisions.</p><p>The language model still matters. It is used for interpretation, generation, summarisation, planning, classification, and interaction. But the AKG gives the model a governed environment to work in.</p><p>From an LPG practitioner&#8217;s point of view, this is a natural evolution.</p><p>We are used to modelling entities and relationships. Agentic AI asks us to model the work as well.</p><p>That means the AKG should not only contain:</p><pre><code>(Patient) -[HAS_CONDITION]-&gt; (Condition)</code></pre><p>or:</p><pre><code>(Contract) -[CONTAINS]-&gt; (Clause)</code></pre><p>It should also contain:</p><pre><code>(AgentRun) -[USED_TOOL]-&gt; (Tool)
(Decision) -[SUPPORTED_BY]-&gt; (Evidence)
(Task) -[REQUIRES_REVIEW_BY]-&gt; (Role)
(PolicyCheck) -[APPLIED_TO]-&gt; (ProposedAction)</code></pre><p>This is where the AKG becomes active. It does not merely describe the world. It helps manage what the agent does in the world.</p><h1>7. State: knowing where the work stands</h1><p>State is one of the most important parts of agentic AI.</p><p>In a simple chat interaction, state may sit inside the conversation history. In a professional workflow, that is not enough.</p><p>A health agent may need to know that a lab result has arrived, a guideline has been checked, a risk has been flagged, a clinician has reviewed the draft, and the patient has not yet been contacted.</p><p>A legal agent may need to know that a clause has been extracted, compared with the playbook, marked as high risk, sent to a partner for approval, and returned with amended fallback language.</p><p>This state should not be hidden inside a prompt. In an AKG, the state is explicit and queryable.</p><p>A task can be connected to the case, the user, the evidence, the tool calls, the policy checks, the draft outputs, and the current status.</p><p>For example:</p><pre><code>(ReviewTask) -[ABOUT]-&gt; (Clause)
(ReviewTask) -[HAS_STATUS]-&gt; (AwaitingPartnerApproval)
(ReviewTask) -[BASED_ON]-&gt; (RiskAssessment)
(RiskAssessment) -[SUPPORTED_BY]-&gt; (Evidence)</code></pre><p>This makes the system easier to inspect, continue, audit, and improve.</p><p>The agent can resume work without guessing. A human can inspect the case without reading a long transcript. Another system can query the state without calling the language model.</p><h1>8. Memory: making context durable and useful</h1><p>Agent memory is often treated as a prompt problem. More context is added to the next request and the agent is expected to behave better.</p><p>That is a weak form of memory.</p><p>Professional systems need memory that is selective, structured, current, and connected.</p><p>In health, memory might include a known allergy, a previous adverse reaction, a care preference, a recent medicine change, or a clinician&#8217;s note that a patient needs extra support.</p><p>These are not the same kind of information. They should not be treated as one flat summary.</p><p>In legal work, memory might include a client&#8217;s preferred governing law, standard fallback wording, previous negotiation outcomes, risk appetite, and positions that require partner approval.</p><p>An AKG gives memory a shape.</p><p>It can distinguish facts from assumptions. It can record who supplied information. It can show when something was last updated. It can mark information as superseded. It can connect memory to the cases, documents, decisions, and people it relates to.</p><p>This gives the agent a better way to use context.</p><p>It can retrieve the specific memory needed for the task, rather than carrying a large and vague history into every interaction.</p><h1>9. Evidence: grounding actions in sources</h1><p>GraphRAG already shows the value of connecting retrieval to graph structure. But in agentic AI, evidence has to do more than support an answer. It has to support action.</p><p>If an agent flags a clinical risk, recommends a review, drafts a legal response, or routes a case to a specialist, the system needs to show what evidence was used.</p><p>In an AKG, evidence is modelled directly.</p><p>A decision can be connected to a source document, guideline, clause, record, policy, or previous case. The connection can carry properties such as confidence, date accessed, extraction method, version, and relevance.</p><p>For example:</p><pre><code>(Decision) -[SUPPORTED_BY {confidence: 0.86}]-&gt; (Evidence)
(Evidence) -[EXTRACTED_FROM]-&gt; (GuidelineVersion)
(Evidence) -[REFERS_TO]-&gt; (LabResult)</code></pre><p>Or in legal work:</p><pre><code>(RiskAssessment) -[SUPPORTED_BY]-&gt; (ClauseText)
(ClauseText) -[EXTRACTED_FROM]-&gt; (ContractVersion)
(RiskAssessment) -[ASSESSED_AGAINST]-&gt; (PlaybookRule)</code></pre><p>This matters because many AI failures are grounding failures.</p><p>The agent may use an old document. It may rely on a weak extraction. It may apply a policy that does not fit the jurisdiction. It may answer with confidence but without a valid source.</p><p>The AKG gives teams a way to inspect grounding as part of the runtime, not after the fact.</p><h1>10. Tool routing: choosing the right capability</h1><p>Agents need tools.</p><p>They may need to query a database, search a document store, run a calculation, check a policy, call a terminology service, generate a draft, validate a form, or create a workflow task.</p><p>The challenge is not only calling tools. It is knowing which tool should be used, when, with what data, and under which constraints.</p><p>An AKG can model tool routing as part of the graph.</p><p>A tool can be connected to the task types it supports, the data it can access, the roles allowed to use it, the policies that restrict it, and the evidence it produces.</p><p>In health, a medicine safety agent may need to choose between a drug interaction checker, a formulary lookup, a patient record query, and a clinical guideline search.</p><p>In legal work, a contract agent may need to choose between a clause extraction tool, a precedent search, a playbook rule check, a jurisdiction lookup, and a redline generator.</p><p>The AKG can help the agent answer:</p><ul><li><p>Which tools are approved for this task?</p></li><li><p>Which tool has already been used?</p></li><li><p>Which tool result is current?</p></li><li><p>Which tool requires human approval before action?</p></li><li><p>Which tool is allowed to access this type of data?</p></li></ul><p>This makes tool use more governable.</p><p>Instead of tool routing being an invisible model choice, it becomes part of the system design.</p><h1>11. Policy: turning rules into operational controls</h1><p>Professional work is full of policy.</p><p>Some policy is clinical. Some is legal. Some is organisational. Some is client-specific. Some is regulatory. Some is ethical.</p><p>A prompt can tell an agent to follow policy, but that does not make policy operational.</p><p>An AKG can turn policy into connected knowledge that is available at runtime.</p><p>A policy can be broken into requirements, conditions, exceptions, approvals, roles, jurisdictions, thresholds, and review triggers.</p><p>In health, an agent may be allowed to draft a patient summary but not finalise a diagnosis. It may be allowed to recommend clinician review but not directly notify a patient about a serious result without approval.</p><p>In legal work, an agent may be allowed to flag risk and suggest fallback wording, but not accept a non-standard liability clause without partner approval. It may treat the same clause differently depending on deal value, governing law, data sensitivity, and client risk appetite.</p><p>In the AKG, policy is not just a document in a repository. It is part of the execution environment.</p><p>For example:</p><pre><code>(ProposedAction) -[CHECKED_AGAINST]-&gt; (PolicyRule)
(PolicyRule) -[REQUIRES_APPROVAL_FROM]-&gt; (Role)
(PolicyRule) -[APPLIES_WHEN]-&gt; (Condition)
(PolicyCheck) -[RESULTED_IN]-&gt; (BlockedAction)</code></pre><p>This does not mean policy becomes simple. It means policy becomes visible, testable, and connected to the agent&#8217;s actions.</p><h1>12. Decision traceability: showing what happened and why</h1><p>In professional settings, users do not only want the answer. They want to understand how the answer was reached.</p><p>They need to know what the agent saw, what it used, which tools it called, which policy checks were applied, and whether a human approved the result.</p><p>This is especially important when the agent is part of a wider workflow.</p><p>A graph is a strong structure for decision traceability because agent decisions are connected. They are not just lines in a log.</p><p>A decision may be connected to the original user request, the case or matter, the retrieved evidence, the tool calls, the policy checks, the model output, the human reviewer, and the final action.</p><p>These connections let teams ask practical questions.</p><ul><li><p>Which decisions used this outdated guideline?</p></li><li><p>Which contract reviews relied on this version of the playbook?</p></li><li><p>Which agent outputs were approved by a human?</p></li><li><p>Which high-risk actions were blocked by policy?</p></li><li><p>Which recommendations had weak evidence?</p></li></ul><p>This is one of the strongest benefits of the AKG. It gives organisations a way to trace agent behaviour across evidence, action, and governance.</p><h1>13. Health example: a clinical pathway agent</h1><p>Consider a clinical pathway agent that supports follow-up after abnormal blood results.</p><p>The agent is not replacing the clinician. It is helping organise the work.</p><p>The AKG contains nodes for the patient, observations, lab results, medicines, conditions, guidelines, pathway steps, clinicians, review tasks, alerts, decisions, and evidence.</p><p>When a new result arrives, the agent checks the patient context. It looks at recent observations, current medicines, known conditions, and the relevant pathway. It retrieves the applicable guideline section and checks whether the result crosses a threshold.</p><p>If action is needed, it creates a review task, drafts a short summary, and links the summary to the supporting evidence.</p><p>A simplified graph path might be:</p><pre><code>(Patient) -[HAS_OBSERVATION]-&gt; (LabResult) -[TRIGGERS]-&gt; (PathwayStep) -[GOVERNED_BY]-&gt; (GuidelineVersion)</code></pre><p>The agent action is also captured:</p><pre><code>(AgentRun) -[PRODUCED]-&gt; (DraftSummary) -[SUPPORTED_BY]-&gt; (Evidence) -[SOURCED_FROM]-&gt; (GuidelineVersion)</code></pre><p>The practical benefit is clear.</p><p>A clinician can see why the task was created, which result triggered it, which guideline was used, whether the patient context was complete, and whether escalation rules applied.</p><p>The AKG helps the agent act with context, but it also helps the human remain in control.</p><h1>14. Legal example: a contract review agent</h1><p>Now consider a contract review agent working on supplier agreements.</p><p>The agent extracts clauses, compares them with a playbook, identifies risk, suggests fallback language, and routes exceptions for review.</p><p>The AKG contains nodes for the contract, parties, clauses, obligations, jurisdictions, playbook rules, client preferences, risk assessments, fallback positions, review tasks, and decisions.</p><p>A limitation of liability clause may be connected to a playbook rule. That rule may depend on deal value, governing law, data sensitivity, and whether the supplier is business-critical.</p><p>For example:</p><pre><code>(Contract) -[CONTAINS]-&gt; (Clause)
(Clause) -[CLASSIFIED_AS]-&gt; (LimitationOfLiability)
(Clause) -[ASSESSED_AGAINST]-&gt; (PlaybookRule)
(PlaybookRule) -[REQUIRES_APPROVAL_WHEN]-&gt; (DealValueAboveThreshold)
(RiskAssessment) -[SUPPORTED_BY]-&gt; (ClauseText)</code></pre><p>The agent does not only say, &#8220;This clause is risky.&#8221;</p><p>It can explain that the clause conflicts with the client&#8217;s preferred position because the liability cap is below the required threshold for this kind of agreement. It can show the clause text, the relevant playbook rule, the deal context, and the suggested fallback wording.</p><p>It can then route the issue to the correct reviewer and record the outcome.</p><p>For legal teams, this creates value beyond speed. It supports consistency, review quality, reuse of institutional knowledge, and defensible decision-making.</p><h1>15. Benefits of the Applied Knowledge Graph</h1><p>The AKG provides several practical benefits for agentic AI.</p><ul><li><p>It gives agents structured context. Instead of relying only on prompt text, the agent can work with a connected model of people, cases, documents, rules, evidence, tasks, and decisions.</p></li><li><p>It makes state explicit. The system can show where the work stands, what has been done, what remains open, and what needs review.</p></li><li><p>It improves grounding. Outputs and actions can be linked to evidence, source documents, policy rules, and tool results.</p></li><li><p>It supports safer tool use. Tools can be selected based on task type, data access, role, policy, and previous use.</p></li><li><p>It makes memory more useful. The agent can retrieve relevant, structured, current memory rather than carrying large conversation histories.</p></li><li><p>It improves governance. Policy checks, approvals, blocked actions, exceptions, and human reviews can be modelled directly.</p></li><li><p>It supports traceability. Decisions can be followed back to the evidence, policy, context, and process that shaped them.</p></li><li><p>It also helps systems evolve. LPG models can grow incrementally as new tasks, entities, relationships, tools, and policies are added.</p></li></ul><p>These benefits are especially important in health and legal work, where accuracy, context, evidence, accountability, and human oversight are not optional.</p><h1>16. What this means for graph-based retrieval and generation</h1><p>GraphRAG is often described as a better way to retrieve context for generation.</p><p>That is true, but agentic AI pushes the idea further.</p><p>Traditional GraphRAG asks:</p><ul><li><p>What context should we retrieve to answer this question?</p></li><li><p>Agentic GraphRAG also asks:</p></li><li><p>What is the current state of the task?</p></li><li><p>What does the agent already know?</p></li><li><p>Which evidence applies?</p></li><li><p>Which tools are allowed?</p></li><li><p>Which policy checks are required?</p></li><li><p>What needs to be recorded for traceability?</p></li></ul><p>This changes the role of the graph.</p><p>The graph is no longer only a retrieval layer. The AKG becomes part of the runtime.</p><p>It helps before generation by selecting context. It helps during action by guiding tool use and policy checks. It helps after action by recording evidence, decisions, and outcomes.</p><p>For LPG practitioners, this is a natural next step. We already think in entities, relationships, paths, properties, and traversals. Agentic AI gives those modelling skills a new operational role.</p><p>The AKG becomes the structure through which the agent understands, acts, and explains.</p><h1>17. Closing view</h1><p>The strongest next move for KGs is to treat the applied form as the runtime layer for agentic AI.</p><p>A KG is a structured representation of entities, relationships, and attributes. But an AKG goes further. It connects knowledge to work.</p><p>It holds state. It gives memory structure. It grounds decisions in evidence. It helps route tools. It makes policy operational. It records what happened and why.</p><p>This is where the LPG model has real strength. It is flexible enough for evolving domains, expressive enough for rich relationships, fast enough for operational traversal, and practical enough for agent workflows.</p><p>RDF remains important. Semantic interoperability and formal reasoning remain important. But KG does not mean RDF only. LPGs can provide a strong foundation for applied graph systems, and hybrid approaches can combine LPG performance with RDF interoperability.</p><p>For health, legal, and other professional domains, the question is not whether agents can generate fluent output. They already can.</p><p>The harder question is whether agents can act with context, evidence, control, and traceability.</p><p>That is the role of the AKG.</p><p>It is not just a knowledge layer for AI. It is the operating layer for agentic work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Zsvc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Zsvc!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!Zsvc!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!Zsvc!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Zsvc!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Zsvc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2343371,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/195757400?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Zsvc!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!Zsvc!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!Zsvc!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Zsvc!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb43a29-b9bb-4d7e-bd51-41f88b40bd91_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Why Most GraphRAG Evaluations Are Wrong]]></title><description><![CDATA[Measuring retrieval coverage, path faithfulness, provenance completeness, cost, latency, and decision usefulness instead of polished answers]]></description><link>https://sergeyvasiliev.substack.com/p/why-most-graphrag-evaluations-are</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/why-most-graphrag-evaluations-are</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Fri, 17 Apr 2026 12:53:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LDvG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of Contents</strong></p><ol><li><p>Introduction</p></li><li><p>The Core Evaluation Mistake</p></li><li><p>GraphRAG Must Be Evaluated as a System</p></li><li><p>Retrieval Coverage</p></li><li><p>Path Faithfulness</p></li><li><p>Provenance Completeness</p></li><li><p>Cost</p></li><li><p>Latency</p></li><li><p>Decision Usefulness</p></li><li><p>Why Answer Quality Still Matters</p></li><li><p>The Benchmark Problem</p></li><li><p>What Better GraphRAG Evaluation Looks Like</p></li><li><p>Summary</p></li></ol><div><hr></div><h1>1. Introduction</h1><p>Retrieval-augmented generation (RAG) is now a common way to improve large language model outputs by supplying external context at query time. Graph Retrieval-Augmented Generation (GraphRAG) extends that idea by introducing structure. Instead of retrieving only isolated text chunks, it can retrieve entities, relationships, paths, and connected evidence.</p><p>That promise matters because some questions depend not just on facts, but on how facts connect. Multi-hop dependencies, lineage, policy context, and entity disambiguation are all cases where graph structure can help. In systems built on a Labelled Property Graph (LPG) or an Applied Knowledge Graph (AKG), that structural layer is often central to how retrieval is assembled and explained.</p><p>The problem is that GraphRAG is often evaluated too narrowly. Many teams still focus mainly on the final answer: whether it sounds relevant, complete, or convincing. But a graph-based retrieval pipeline is not only a text generation layer. It is a multi-stage system with extraction assumptions, modelling choices, traversal logic, ranking behaviour, provenance handling, cost, and latency.</p><p>If evaluation looks only at the answer, much of the system remains untested.</p><p>That creates a real risk. A weak GraphRAG pipeline can still produce a polished answer because a large language model can smooth over missing evidence and broken paths. A stronger system may produce a more cautious answer while being far more reliable in practice. In production settings, the second system is usually the one that matters.</p><p>This article argues that GraphRAG should be evaluated as a retrieval and decision system, not only as an answer generator. The key questions are not just whether the answer looked good, but whether the system retrieved the evidence it needed, followed the graph faithfully, preserved provenance, operated within acceptable cost and latency, and improved the user&#8217;s decision.</p><p>That is where serious evaluation begins.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!3XxM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!3XxM!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png 424w, /__u/substackcdn.com/image/fetch/$s_!3XxM!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png 848w, /__u/substackcdn.com/image/fetch/$s_!3XxM!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png 1272w, /__u/substackcdn.com/image/fetch/$s_!3XxM!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!3XxM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png" width="1227" height="1282" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1282,&quot;width&quot;:1227,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:840260,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/194507217?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!3XxM!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png 424w, /__u/substackcdn.com/image/fetch/$s_!3XxM!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png 848w, /__u/substackcdn.com/image/fetch/$s_!3XxM!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png 1272w, /__u/substackcdn.com/image/fetch/$s_!3XxM!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46b06c8a-41fc-4e2c-9b49-11b2f31125cc_1227x1282.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>2. The Core Evaluation Mistake</h1><p>The core mistake is simple. Teams collapse a multi-stage graph retrieval system into a single output judgement.</p><p>That usually happens in one of four ways. Human reviewers score the answer for relevance or helpfulness. A large language model acts as a judge and compares the answer to a reference response. A benchmark measures overlap between the answer and an expected text. Or a team runs a set of internal demos and decides that the graph improved quality because the outputs looked more complete.</p><p>Each of these methods can tell you <em>something</em>. None tells you enough.</p><p>The problem is not that answer quality is irrelevant. The problem is that answer quality is downstream of many other system behaviours, and a good-looking answer can hide poor retrieval. A model may compensate for missing nodes, missing edges, weak provenance, or incorrect paths simply by generating plausible language around what it has. The answer looks clean, but the mechanism underneath is brittle.</p><p>Consider a running example from supplier risk management.</p><p>A user asks:</p><blockquote><p>Which suppliers are affected by the new sanctions policy, and which live contracts depend on them?</p></blockquote><p>Now imagine two systems.</p><p><strong>System A</strong> retrieves the sanctions policy, the affected supplier entities, the contract records, their current status, and the dependency relationships linking suppliers to products and products to contracts. It misses one supporting note, but the graph path is largely correct. The answer is concise and slightly cautious.</p><p><strong>System B</strong> retrieves the policy text and several supplier mentions, but misses two key contract dependencies. The model fills in the missing logic from general context and produces a smoother answer with more confident language.</p><p>If a reviewer only reads the final response, System B may look better. It sounds more complete. It uses more polished phrasing. It offers a crisp conclusion.</p><p>But System A is the better GraphRAG system.</p><p>This is not a theoretical concern. It happens all the time. Large language models are strong at narrative repair. They can smooth over gaps in retrieval and still produce text that feels coherent. That makes answer-only evaluation actively misleading, because it rewards rhetorical fluency even when structural grounding is weak.</p><h2>Example: The danger of answer-only scoring</h2><p>Suppose the graph contains these facts:</p><ul><li><p>Supplier <code>NovaChem</code> supplies <code>Component-17</code></p></li><li><p><code>Component-17</code> is required by <code>Device-A</code></p></li><li><p><code>Device-A</code> is used in contracts <code>C-102</code> and <code>C-208</code></p></li><li><p><code>NovaChem</code> is flagged by policy <code>Sanctions-2026-04</code></p></li><li><p>Contract <code>C-208</code> expired last month</p></li></ul><p>A strong GraphRAG system should answer:</p><blockquote><p>NovaChem is affected by the new sanctions policy. The current active dependency is contract C-102 through Component-17 and Device-A. Contract C-208 is related historically but is no longer active.</p></blockquote><p>A weaker system might answer:</p><blockquote><p>NovaChem affects contracts C-102 and C-208 under the new sanctions policy.</p></blockquote><p>That second answer sounds fine until someone acts on it. It is short, direct, and wrong in a way that matters operationally. If evaluation scores only readability or apparent completeness, it can reward the wrong system.</p><p>The mistake becomes even more serious in domains where graph structure carries the real meaning. In GraphRAG, the answer is often less important than the path by which the system got there. If a claim depends on a supplier relationship, a policy version, a temporal constraint, and a contract status edge, those are not optional details. They are the core semantics of the problem.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!LIC2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!LIC2!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!LIC2!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!LIC2!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LIC2!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!LIC2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:918769,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/194507217?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!LIC2!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!LIC2!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!LIC2!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LIC2!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc32b4dc5-ee2d-44a1-b5a9-53446f5ddf6e_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most shallow evaluations cannot distinguish those cases. A useful evaluation framework must.</p><h1>3. GraphRAG Must Be Evaluated as a System</h1><p>A serious GraphRAG evaluation must treat the pipeline as a system, not as a single text output. That sounds obvious, but in practice, many teams do not do it. They evaluate the final answer and treat everything upstream as an implementation detail. In a graph-based architecture, those upstream stages are where most of the value, and most of the failure risk, actually lives.</p><p>A GraphRAG system usually includes at least these stages:</p><ol><li><p>Source ingestion</p></li><li><p>Entity extraction and normalisation</p></li><li><p>Relationship extraction or creation</p></li><li><p>Graph modelling and storage</p></li><li><p>Indexing and retrieval setup</p></li><li><p>Query interpretation</p></li><li><p>Graph traversal or neighbourhood expansion</p></li><li><p>Re-ranking and context assembly</p></li><li><p>Prompt construction</p></li><li><p>Large language model generation</p></li><li><p>Output presentation and explanation</p></li></ol><p>Each stage can fail independently. Each failure has a different consequence. Entity extraction may miss an organisation alias. Relationship extraction may create a weak or incorrect edge. Traversal may over-expand into irrelevant neighbourhoods. Re-ranking may down-rank the one critical source that should have been kept. Prompt assembly may drop the temporal qualifier that makes a fact valid only for a limited period. The model may then produce a confident answer that hides the defect.</p><p>That is why GraphRAG needs multi-layer evaluation.</p><p>At minimum, six dimensions should be measured directly:</p><ol><li><p><strong>Retrieval coverage</strong>: did the system retrieve the necessary evidence?</p></li><li><p><strong>Path faithfulness</strong>: did the answer follow supported graph paths?</p></li><li><p><strong>Provenance completeness</strong>: can the claims be traced to sources and transformations?</p></li><li><p><strong>Cost</strong>: what does the system consume to build, maintain, and run?</p></li><li><p><strong>Latency</strong>: can it respond at operational speed?</p></li><li><p><strong>Decision usefulness</strong>: did it improve the user&#8217;s action or judgement?</p></li></ol><p>These six dimensions are not arbitrary. Together they answer the practical question that matters in production: is the graph doing meaningful work, or is it an expensive stage prop around a language model?</p><h2>A system view changes how you measure success</h2><p>When GraphRAG is treated as a system, success criteria become much more concrete.</p><p>You no longer ask only whether the answer is relevant. You ask whether the necessary entities were present, whether the correct relationships were traversed, whether the temporal or policy qualifiers were preserved, whether the answer can be justified, and whether the additional graph logic paid for itself in time, money, and user value.</p><p>This changes the culture of evaluation. Instead of celebrating attractive demos, teams begin to inspect retrieval traces, compare required subgraphs to retrieved subgraphs, log edge-level support, and measure decision outcomes. That is a much stronger basis for engineering.</p><h2>Example: Two different evaluation cultures</h2><p>An answer-centric team says:</p><blockquote><p>Our GraphRAG assistant scored 4.6 out of 5 for helpfulness in a user review.</p></blockquote><p>A system-centric team says:</p><blockquote><p>For policy impact queries, the system retrieved 92 per cent of required entities, 88 per cent of required relationships, and 95 per cent of required source documents. Claim-level provenance was complete for 90 per cent of material assertions. Median latency was 2.1 seconds, with the 95th percentile at 4.9 seconds. Analysts reached the correct decision 18 per cent faster and reversed 27 per cent fewer cases on review.</p></blockquote><p>Only one of those statements tells you whether the graph is working.</p><h3>Diagram 3: The GraphRAG evaluation stack</h3><pre><code>Layer 6  Decision usefulness
Layer 5  Cost and latency
Layer 4  Provenance completeness
Layer 3  Path faithfulness
Layer 2  Retrieval coverage
Layer 1  Graph and source quality

Final answer quality sits across all layers, but does not replace them.</code></pre><p>This stack is helpful because it shows dependency. Weak source quality undermines coverage. Weak coverage undermines faithfulness. Weak faithfulness undermines provenance. Weak provenance limits decision trust. Cost and latency determine whether any of it is deployable. The final answer sits on top of all of that. It is not the foundation.</p><h1>4. Retrieval Coverage</h1><p>Retrieval coverage is the first major metric, and one of the least well measured.</p><p>In GraphRAG, retrieval coverage is not simply about whether the system returned something relevant. It is about whether it retrieved the entities, relationships, documents, and qualifiers required to answer the question correctly. This is a stricter standard than ordinary information retrieval because graph questions often depend on connected evidence rather than isolated facts.</p><p>A system can have high surface relevance and still have poor coverage.</p><p>Take this question:</p><blockquote><p>Which suppliers became non-compliant after the 2025 policy revision, and which active customer commitments are exposed through those suppliers?</p></blockquote><p>This is not a chunk retrieval problem in the ordinary sense. A correct answer may require:</p><p>The policy revision event</p><ol><li><p>The version or effective date of the policy</p></li><li><p>Supplier entities mapped to the right canonical identifiers</p></li><li><p>Compliance status changes after the revision date</p></li><li><p>Product or component dependencies</p></li><li><p>Customer commitments or contracts that are currently active</p></li><li><p>Temporal validity on those dependencies</p></li></ol><p>If the system retrieves supplier names and the revised policy but misses the edge that links the supplier to currently active commitments, the coverage is incomplete. If it retrieves the dependency path but misses the date logic that says the policy took effect after the supplier event, coverage is incomplete. If it retrieves a contract that was active last quarter but not today, coverage is incomplete.</p><p>This is why GraphRAG coverage must be defined against <em>required evidence</em>, not just <em>retrieved evidence</em>.</p><h2>Types of retrieval coverage that matter</h2><p>Coverage in GraphRAG usually has several components:</p><p><strong>Entity coverage</strong><br>Did the system retrieve the right people, organisations, products, policies, cases, locations, or other entities?</p><p><strong>Relationship coverage</strong><br>Did it retrieve the links that make those entities meaningful in context, such as dependency, ownership, membership, amendment, approval, or exception?</p><p><strong>Document coverage</strong><br>Did it retrieve the source materials from which those entities and relationships are supported?</p><p><strong>Constraint coverage</strong><br>Did it retrieve the qualifiers that govern meaning, such as time, jurisdiction, status, policy version, confidence, or scope?</p><p><strong>Subgraph coverage</strong><br>Did it retrieve the connected portion of the graph required to answer the question, rather than only isolated nodes?</p><p>These distinctions matter because a graph answer can fail even when the right nodes are present. If the linking edges are missing, or the temporal qualifiers are absent, the answer may still be wrong.</p><h2>Example: Coverage failure hidden by a plausible answer</h2><p>Suppose the graph includes the following:</p><ul><li><p><code>Policy-47</code> revised supplier controls on 15 January 2026</p></li><li><p><code>Supplier-Orbit</code> failed a compliance review on 20 January 2026</p></li><li><p><code>Supplier-Orbit</code> supplies <code>Module-K</code></p></li><li><p><code>Module-K</code> is used by <code>Service-Bundle-9</code></p></li><li><p><code>Service-Bundle-9</code> underpins contracts <code>A91</code> and <code>A95</code></p></li><li><p><code>A95</code> was terminated on 1 February 2026</p></li></ul><p>Now imagine that retrieval returns everything except the termination fact for <code>A95</code>.</p><p>The model may answer:</p><blockquote><p>Supplier-Orbit affects contracts A91 and A95 under Policy-47.</p></blockquote><p>That answer is structurally incomplete. It is not enough to say it is &#8220;mostly right&#8221;. A decision-maker may escalate the wrong contract, trigger unnecessary work, or lose trust in the system when they later discover the error.</p><h2>How to measure retrieval coverage properly</h2><p>A useful coverage evaluation starts with a representative set of tasks. For each task, you define the minimum evidence needed for a correct answer. That evidence may be represented as a gold subgraph, a gold set of entities and edges, or a labelled collection of required source passages and graph objects.</p><p>For each query, you then compare what the system retrieved against what it should have retrieved.</p><p>A practical scoring template might include:</p><ul><li><p>required entities retrieved / total required entities</p></li><li><p>required relationships retrieved / total required relationships</p></li><li><p>required source documents retrieved / total required documents</p></li><li><p>required temporal or policy qualifiers retrieved / total required qualifiers</p></li><li><p>irrelevant expansion size, meaning how much extra material was retrieved beyond what was needed</p></li></ul><p>This last point matters. Over-retrieval is not harmless. A system that retrieves everything may appear to have strong coverage while actually reducing answer quality through noise, prompt bloat, and latency. Coverage must therefore be balanced with precision and context discipline.</p><h3>Diagram 4: Gold subgraph versus retrieved subgraph</h3><pre><code>Gold subgraph needed for the question:

[Policy-47] -&gt; affects -&gt; [Supplier-Orbit]
[Supplier-Orbit] -&gt; supplies -&gt; [Module-K]
[Module-K] -&gt; used_by -&gt; [Service-Bundle-9]
[Service-Bundle-9] -&gt; underpins -&gt; [A91]
[Service-Bundle-9] -&gt; underpins -&gt; [A95]
[A95] -&gt; status -&gt; [Terminated]

Retrieved subgraph:

[Policy-47] -&gt; affects -&gt; [Supplier-Orbit]
[Supplier-Orbit] -&gt; supplies -&gt; [Module-K]
[Module-K] -&gt; used_by -&gt; [Service-Bundle-9]
[Service-Bundle-9] -&gt; underpins -&gt; [A91]
[Service-Bundle-9] -&gt; underpins -&gt; [A95]

Missing edge:
[A95] -&gt; status -&gt; [Terminated]</code></pre><p>That missing edge is not a minor defect. It changes the operational answer.</p><h2>Why coverage is especially important in Applied Knowledge Graph systems</h2><p>In an Applied Knowledge Graph, the graph is expected to support actual work. It is not only a conceptual map. It is part of the runtime architecture for decisions, workflows, and evidence assembly. That makes retrieval coverage especially important because the user is not reading the graph directly. They are relying on the GraphRAG layer to assemble the right connected context on their behalf.</p><p>If coverage is poor, the problem is not merely that the answer is incomplete. The problem is that the system is not doing the applied part of the job.</p><h1>5. Path Faithfulness</h1><p>Coverage answers one question: did the system retrieve the right pieces? Path faithfulness answers the next: did it use those pieces correctly?</p><p>This is where GraphRAG should clearly distinguish itself from plain chunk-based retrieval. In GraphRAG, the graph is supposed to constrain reasoning. It introduces a structure that says which entities are related, how they are related, and along which routes the system is allowed to assemble an explanation. If the final answer ignores that structure and improvises links that are not present, then the graph is not grounding the result. It is merely decorating it.</p><p>Path faithfulness means that the claims in the answer can be supported by the nodes, edges, and traversed paths retrieved for that query.</p><p>This is stronger than general factual correctness. An answer might contain a true statement drawn from background knowledge, but if that statement is not supported by the retrieved graph for the case at hand, it is still not faithful to the GraphRAG mechanism.</p><h2>Example: Correct-sounding but unfaithful reasoning</h2><p>Assume the retrieved graph contains:</p><ul><li><p><code>Device-X</code> depends on <code>Battery-Pack-2</code></p></li><li><p><code>Battery-Pack-2</code> is supplied by <code>Voltis</code></p></li><li><p><code>Voltis</code> failed a safety audit in March</p></li><li><p><code>Device-X</code> is active in the United Kingdom</p></li></ul><p>The system is asked:</p><blockquote><p>Which active products in the United Kingdom are exposed to suppliers that failed recent safety audits?</p></blockquote><p>A faithful answer is:</p><blockquote><p>Device-X is exposed through Battery-Pack-2 because Voltis, the supplier of that component, failed a recent safety audit.</p></blockquote><p>An unfaithful answer might be:</p><blockquote><p>Device-X and Device-Y are exposed because Voltis supplies critical battery infrastructure across the product line.</p></blockquote><p>That may sound plausible, especially if Device-Y exists elsewhere in the knowledge base, but if the retrieved graph for this query did not connect Device-Y through a valid path, the answer is unfaithful. It has gone beyond the graph and inferred a broader relationship than the retrieved evidence supports.</p><h2>Why unfaithful paths happen</h2><p>Path faithfulness breaks for several reasons.</p><p><strong>The model fills gaps</strong><br>The large language model may bridge missing edges with general world knowledge or patterns it has seen before.</p><p><strong>Traversal over-expands</strong><br>The system may retrieve a large neighbourhood around a relevant node, giving the model many nearby but not actually connected facts.</p><p><strong>Ranking obscures path logic</strong><br>A re-ranking stage may mix evidence from different branches of the graph without preserving which branch supports which claim.</p><p><strong>Prompt design blurs support</strong><br>If the prompt presents graph findings as a flat list rather than as structured paths, the model may recombine them incorrectly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!aDp1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!aDp1!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png 424w, /__u/substackcdn.com/image/fetch/$s_!aDp1!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png 848w, /__u/substackcdn.com/image/fetch/$s_!aDp1!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png 1272w, /__u/substackcdn.com/image/fetch/$s_!aDp1!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!aDp1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png" width="1402" height="1122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1122,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:854349,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/194507217?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!aDp1!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png 424w, /__u/substackcdn.com/image/fetch/$s_!aDp1!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png 848w, /__u/substackcdn.com/image/fetch/$s_!aDp1!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png 1272w, /__u/substackcdn.com/image/fetch/$s_!aDp1!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca71a4a-45e1-48e7-a061-b4aad9316a40_1402x1122.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3></h3><p>The second answer may be fluent, but the graph does not support it.</p><h2>How to evaluate path faithfulness</h2><p>A robust evaluation checks whether each material claim in the answer can be mapped to a supported path in the retrieved subgraph.</p><p>That requires a claim decomposition step. For instance, this answer:</p><blockquote><p>Contracts A91 and B17 are at risk because Supplier-Orbit became non-compliant after Policy-47, and both contracts depend on Module-K.</p></blockquote><p>can be decomposed into claims such as:</p><ol><li><p>Supplier-Orbit became non-compliant after Policy-47</p></li><li><p>Contract A91 depends on Module-K</p></li><li><p>Contract B17 depends on Module-K</p></li><li><p>The dependency path from Supplier-Orbit to each contract implies exposure</p></li></ol><p>Each claim should then be checked against the retrieved graph. This can be done manually on small evaluation sets or semi-automatically if the system stores path traces, traversal logs, or edge-level evidence identifiers.</p><p>A useful faithfulness score might consider:</p><ul><li><p>percentage of claims backed by explicit paths</p></li><li><p>percentage of claims backed only by node co-occurrence</p></li><li><p>percentage of unsupported claims</p></li><li><p>average path length per supported claim</p></li><li><p>number of claims relying on inferred but unrecorded steps</p></li></ul><p>The last item matters. If the system applies inference rules, that is fine, but the inference must be explicit and inspectable. Hidden inference is just guessing with better branding.</p><h2>Path faithfulness is central to trust</h2><p>In many production environments, users do not only want an answer. They want to know <em>why that answer follows</em>. Graph structure is powerful because it can provide that why. It can show that a conclusion came from a dependency chain, a chain of ownership, a policy amendment path, or a sequence of approvals.</p><p>If the answer is not faithful to those paths, GraphRAG loses one of its strongest advantages.</p><p>This is especially important in an LPG-based Applied Knowledge Graph, where relationships often carry explicit business meaning. The edge is not merely a navigational convenience. It represents something operational, such as supports, depends_on, approved_by, replaced_by, governed_by, or valid_until. If the final answer does not respect those semantics, it is not just loose. It is structurally wrong.</p><h1>6. Provenance Completeness</h1><p>If coverage is about retrieving the right evidence, and faithfulness is about using that evidence correctly, provenance completeness is about being able to prove where the answer came from.</p><p>Many GraphRAG systems make broad claims about explainability because they use a graph. That is not enough. A graph can still have poor provenance. Nodes may exist without clear source spans. Edges may be created by extraction pipelines whose evidence is not preserved. Re-ranking decisions may not be logged. Summaries may compress multiple sources into a single statement without showing which source contributed which part.</p><p>In those cases, the graph may look explainable, but the explanation is hollow.</p><p>Provenance completeness means that material claims in the answer can be traced back through the retrieval chain to source documents, source spans, extracted entities, extracted or asserted relationships, and any transformation steps applied along the way.</p><p>This has several layers.</p><p><strong>Source provenance</strong><br>Which documents, records, events, or databases support the claim?</p><p><strong>Extraction provenance</strong><br>How was the entity or relationship created? Was it directly asserted from a system of record, or extracted from unstructured text?</p><p><strong>Transformation provenance</strong><br>What normalisation, aggregation, summarisation, or inference steps were applied?</p><p><strong>Selection provenance</strong><br>Why was this evidence selected rather than other evidence?</p><h2>Example: A graph node with weak provenance</h2><p>Suppose the graph contains:</p><ul><li><p><code>Supplier-Orbit</code></p></li><li><p><code>non_compliant_with -&gt; Policy-47</code></p></li></ul><p>That edge may look useful, but where did it come from?</p><p>A complete provenance trail might show:</p><ul><li><p>Source document: <code>audit_report_2026_01_20.pdf</code></p></li><li><p>Source span: paragraph 14</p></li><li><p>Extraction rule: compliance_event extractor v3.4</p></li><li><p>Normalisation: <code>Orbit Ltd</code> mapped to canonical entity <code>Supplier-Orbit</code></p></li><li><p>Policy mapping: <code>new supplier controls</code> resolved to <code>Policy-47</code></p></li><li><p>Confidence: 0.91</p></li><li><p>Human review: approved</p></li></ul><p>A weak provenance trail might show only:</p><ul><li><p>Source: audit report<br></p></li></ul><p>Those are not equivalent. In a production environment, the first is usable and auditable. The second is merely suggestive.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!rUwM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!rUwM!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!rUwM!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!rUwM!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rUwM!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!rUwM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:923262,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/194507217?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!rUwM!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!rUwM!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!rUwM!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rUwM!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe4b9d9d-2d1f-4cba-9c0e-67d06fa3c392_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That is what explainability should look like. Anything less is partial.</p><h2>Why provenance matters beyond compliance</h2><p>It is easy to say provenance matters for audit and regulation, which is true. But its value is broader.</p><p>Provenance helps debugging. When the answer is wrong, provenance tells you whether the issue was in the source, the extraction pipeline, the graph model, the traversal, or the prompt. Without provenance, everything looks like a vague model problem.</p><p>Provenance helps user trust. People are far more willing to rely on a system if they can inspect the path back to evidence and understand why the answer appeared.</p><p>Provenance helps maintenance. As graphs evolve, provenance makes it easier to detect stale relationships, outdated extraction logic, and brittle assumptions.</p><p>Provenance also helps adjudicate conflict. If two sources disagree, provenance allows the system to show recency, authority, and source quality rather than merely presenting a blended summary.</p><h2>How to measure provenance completeness</h2><p>A practical approach is claim-level provenance scoring. For each material claim in an answer, ask:</p><ol><li><p>Is there at least one source document or system record?</p></li><li><p>Is the supporting entity or relationship linked to that source?</p></li><li><p>Can the retrieval path be reconstructed?</p></li><li><p>Are transformation steps visible?</p></li><li><p>Is temporal or version information preserved where relevant?</p></li></ol><p>A claim with all five elements has strong provenance. A claim with only the source document has weak provenance. A claim with no traceable evidence is ungrounded.</p><p>This can be summarised as percentages across an evaluation set:</p><ul><li><p>claims with full provenance</p></li><li><p>claims with partial provenance</p></li><li><p>claims with missing provenance</p></li><li><p>edges with source support</p></li><li><p>entities with source-span support</p></li></ul><p>In an Applied Knowledge Graph, provenance should be treated as an operational primitive, not as decorative metadata. It is part of how the system earns the right to be trusted.</p><h1>7. Cost</h1><p>Cost is one of the most neglected dimensions in GraphRAG evaluation, which is remarkable because it is often where projects quietly fail.</p><p>Graphs are not free. Entity extraction is not free. Relationship extraction, entity resolution, normalisation, indexing, graph maintenance, provenance storage, traversal, re-ranking, and context packaging all carry cost. If the graph is updated continuously, those costs are recurring rather than one-off. If the system also uses embeddings, hybrid retrieval, or multiple model calls, the cost profile can become much larger than teams expected.</p><p>Yet many GraphRAG evaluations discuss answer quality as if the graph came at zero cost.</p><p>That is not a minor omission. Cost determines whether a GraphRAG design is economically rational.</p><h2>Build-time versus run-time cost</h2><p>GraphRAG cost should be divided into at least two broad classes.</p><p><strong>Build-time cost</strong> includes:</p><ul><li><p>source ingestion and cleaning</p></li><li><p>entity and relationship extraction</p></li><li><p>entity resolution and deduplication</p></li><li><p>schema evolution or graph model maintenance</p></li><li><p>indexing and embedding generation</p></li><li><p>provenance capture and storage</p></li></ul><p><strong>Run-time cost</strong> includes:</p><ul><li><p>graph query execution</p></li><li><p>traversal and neighbourhood expansion</p></li><li><p>filtering and re-ranking</p></li><li><p>context assembly</p></li><li><p>large language model inference</p></li><li><p>explanation and provenance packaging</p></li></ul><p>A system may have moderate run-time cost but extreme build-time cost if the graph is expensive to maintain. Another system may have low build cost but very high run-time cost because traversal and packaging are inefficient. Evaluation should surface both.</p><h2>GraphRAG must justify its structural premium</h2><p>GraphRAG often introduces an architectural premium. That premium may be worth paying if the graph truly improves retrieval, explanation, and decision support. In high-value workflows, even a relatively expensive system can be justified if it reduces regulatory exposure, speeds case review, or lowers error rates in a measurable way.</p><p>But that value must be shown.</p><p>An Applied Knowledge Graph is supposed to be applied. That means it must earn its place in the operating model. If the graph increases cost substantially but provides only marginal gains over simpler retrieval methods, the evaluation should make that visible.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!9VM9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!9VM9!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!9VM9!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!9VM9!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!9VM9!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!9VM9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:992903,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/194507217?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!9VM9!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!9VM9!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!9VM9!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!9VM9!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5420b57-bcd8-41ee-a351-8315448482b1_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3></h3><p>A sensible evaluation asks which of those stages dominate, whether they scale linearly or non-linearly, and whether they correspond to user value.</p><h2>What to measure</h2><p>A useful GraphRAG cost evaluation may include:</p><ul><li><p>cost per ingested document</p></li><li><p>cost per resolved entity</p></li><li><p>cost per relationship extracted</p></li><li><p>storage cost for graph plus provenance</p></li><li><p>cost per user query</p></li><li><p>average number of graph operations per query</p></li><li><p>model cost per query</p></li><li><p>total monthly cost by workload type</p></li></ul><p>For comparison purposes, it is also useful to measure the equivalent cost of a simpler baseline, such as vector-only retrieval or keyword plus vector search. GraphRAG should not be protected from comparison merely because it sounds more architecturally ambitious.</p><h2>Cost should be linked to benefit</h2><p>A common mistake is to measure cost in isolation. That can lead to unhelpful conclusions, because a costly system may still be worthwhile in the right domain. The key is cost relative to gain.</p><p>For example:</p><ul><li><p>If GraphRAG cuts analyst review time by 25 per cent and reduces escalations, its higher cost may be justified.</p></li><li><p>If GraphRAG improves answer phrasing but does not improve decision quality, the same cost may not be justified.</p></li><li><p>If graph maintenance cost rises sharply as the domain expands, but decision benefit does not, the architecture may need redesign.<br></p></li></ul><p>Cost is therefore not only a financial metric. It is part of architectural truthfulness. It tells you whether the graph is earning its keep.</p><h1>8. Latency</h1><p>Latency is often pushed aside as an implementation detail, but in GraphRAG it is a first-order property of the system. A beautifully grounded answer that arrives too late for the workflow is not a high-quality answer. It is a missed opportunity.</p><p>GraphRAG can introduce several sources of delay that plain retrieval pipelines do not have to the same degree: graph lookup, neighbourhood expansion, path scoring, provenance packaging, and sometimes multiple model calls to compress or synthesise graph evidence. If these stages are not measured carefully, a system can appear successful in tests while failing in actual use.</p><h2>Latency is contextual</h2><p>Different workflows have different latency tolerances.</p><p>A real-time customer support tool may need to respond in a couple of seconds. A fraud investigation assistant may tolerate more delay if the answer is materially better. A legal review workflow may accept several seconds for stronger evidence and provenance. A background report generator can tolerate even more.</p><p>That means latency targets must be tied to the use case, not discussed in the abstract. The question is not &#8220;Is this fast?&#8221; but &#8220;Is this fast enough for the operational context?&#8221;</p><h2>Example: Same accuracy, different deployability</h2><p>Consider two GraphRAG designs for internal contract risk review.</p><p><strong>Design A</strong> returns answers in 1.8 seconds on average and 4.2 seconds at the 95th percentile.<br><br><strong>Design B</strong> returns slightly richer answers in 3.9 seconds on average and 11.5 seconds at the 95th percentile.</p><p>If the tool is used during live calls with account teams, Design B may be unacceptable despite better answer detail. If the tool is used for offline risk preparation, Design B may be acceptable. Latency evaluation must therefore include operational context, not just raw timings.</p><h2>Why average latency is not enough</h2><p>Teams often report only the mean or median response time. That is rarely enough. Users experience the slow tail, not just the average. A system with acceptable median latency but poor high-percentile latency can feel unreliable, especially under load.</p><p>That is why high-percentile measures matter. If the 95th percentile latency is too high, the system may still be unfit for real use even if the median looks good.</p><p>A useful latency profile should include:</p><ul><li><p>median latency</p></li><li><p>90th percentile latency</p></li><li><p>95th percentile latency</p></li><li><p>tail behaviour under concurrent load</p></li><li><p>stage-by-stage timing</p></li></ul><p>The stage-by-stage view is particularly important because it tells you where optimisation effort should go. Is the delay in graph traversal? In re-ranking? In provenance assembly? In prompt size inflation? In the model call itself? Without breakdown, latency becomes a generic complaint rather than an engineering signal.</p><h3>Diagram 8: Latency decomposition</h3><pre><code>Query received
   |
   +-&gt; graph lookup ............. 120 ms
   +-&gt; neighbourhood expansion .. 450 ms
   +-&gt; re-ranking ............... 180 ms
   +-&gt; provenance packaging ..... 260 ms
   +-&gt; prompt assembly .......... 90 ms
   +-&gt; LLM generation ........... 1400 ms
   |
Total ........................... 2500 ms</code></pre><p>A diagram like this is far more useful than saying &#8220;response time was 2.5 seconds&#8221;.</p><h2>Latency and graph design</h2><p>Latency is not only a runtime tuning issue. It is also influenced by graph design choices.</p><p>A graph with overly dense, weakly typed relationships may cause traversal explosion. A graph with poor entity normalisation may require extra search and merge steps at query time. A graph that stores provenance in a way that is expensive to reconstruct may slow explanation packaging. A graph that mixes operational and archival relationships without careful filtering may retrieve too much and force expensive downstream pruning.</p><p>This is one reason why an LPG is often helpful in enterprise GraphRAG. Explicit relationship types, attributes, status flags, and temporal properties can make query-time filtering more direct and more operationally aligned. But the model only helps if the evaluation actually measures latency consequences.</p><h2>Latency must be evaluated with workload realism</h2><p>Demo queries are often too clean. Real workloads include:</p><ul><li><p>ambiguous names</p></li><li><p>broad questions that trigger large expansions</p></li><li><p>spikes in concurrent use</p></li><li><p>stale cache conditions</p></li><li><p>difficult policy or lineage queries that need more path analysis</p></li></ul><p>A credible latency evaluation should include realistic query mixes and realistic load patterns. It should also measure the trade-off between stronger grounding and response time, because that trade-off is often where product decisions need to be made.</p><p>Latency is therefore not a side metric. It is part of system quality. It determines whether GraphRAG can operate where it claims to add value.</p><h1>9. Decision Usefulness</h1><p>Decision usefulness is the most important metric and the one most often ignored.</p><p>GraphRAG is rarely deployed simply to produce nicer prose. In enterprise settings, it is usually deployed because someone needs to make a better decision, faster, with stronger evidence. If evaluation stops at answer quality, it may completely miss whether the system improved the actual work.</p><p>This is a crucial distinction. A long, polished answer may not help a user act. A shorter answer with the right dependency path, the right warning, and the right provenance may be much more useful.</p><h2>What decision usefulness means</h2><p>Decision usefulness asks whether the system improved the quality, speed, confidence, or consistency of the user&#8217;s judgement or action.</p><p>That might mean:</p><ul><li><p>fewer false escalations in supplier risk review</p></li><li><p>faster resolution of compliance questions</p></li><li><p>better consistency across analysts reviewing the same case</p></li><li><p>lower rate of decision reversal on second review</p></li><li><p>better handling of edge cases that plain retrieval misses</p></li><li><p>stronger confidence because evidence is inspectable</p></li></ul><p>These outcomes are closer to the real purpose of the system than readability scores.</p><h3>Example: A useful answer versus an impressive answer</h3><p>A procurement analyst asks:</p><blockquote><p>Do we need to freeze customer onboarding for accounts dependent on Supplier-Orbit?</p></blockquote><p>Answer A says:</p><blockquote><p>Supplier-Orbit is associated with recent compliance concerns. Affected accounts may include several high-value contracts across current service bundles. Further investigation is recommended.</p></blockquote><p>Answer B says:</p><blockquote><p>No immediate freeze is required for all accounts. The exposure is limited to contracts A91 and A93 through Module-K. Contract A95 appears in historical dependency records but is terminated. The compliance issue is linked to Policy-47, effective 15 January 2026. Review only active bundles using Module-K.</p></blockquote><p>Answer B is more useful even if it is less stylistically elegant. It narrows the action, shows why, and points to the relevant evidence and constraint. That is what decision support should do.</p><h2>Why answer-centric metrics miss usefulness</h2><p>Readability, fluency, and generic relevance do not necessarily capture whether the answer supports action. A fluent answer may still leave the user unsure what to do. It may overstate risk, understate uncertainty, or fail to highlight the key qualifying relationship that changes the operational decision.</p><p>This is particularly important in GraphRAG because the graph is often introduced precisely to improve structural judgement. It is supposed to expose dependencies, exceptions, lineage, and context that ordinary retrieval misses. If evaluation never measures whether those structural advantages changed the decision, it misses the whole point of adding the graph.</p><h2>How to measure decision usefulness</h2><p>Decision usefulness should be measured against the domain, not through generic text scoring. Useful measures may include:</p><ul><li><p>time to justified decision</p></li><li><p>decision accuracy against expert review</p></li><li><p>rate of false positives or false negatives</p></li><li><p>rate of escalation or rework</p></li><li><p>reviewer agreement across users</p></li><li><p>confidence with evidence inspection</p></li><li><p>decision reversal rate after secondary review<br></p></li></ul><p>These can be assessed in offline evaluation or controlled user studies. Even a small but well-designed study can reveal more than a thousand answer ratings if it measures real task performance.</p><h3>Diagram 9: From answer quality to decision value</h3><pre><code>Low-value evaluation:
Question -&gt; Answer -&gt; &#8220;Looks helpful&#8221;

High-value evaluation:
Question -&gt; Retrieved evidence -&gt; Supported answer -&gt; User action -&gt; Outcome</code></pre><p>The right-hand side is more difficult to measure, but it is where business value lives.</p><h2>Decision usefulness is where GraphRAG should win</h2><p>GraphRAG is strongest when the decision depends on structure. That includes:</p><ul><li><p>identifying impact through multi-hop dependencies</p></li><li><p>tracing which policy version governs a case</p></li><li><p>explaining why a record falls within or outside a rule</p></li><li><p>resolving which entity a document actually refers to</p></li><li><p>showing how evidence from several systems connects</p></li></ul><p>These are not cosmetic benefits. They are operational benefits. Evaluation should therefore ask whether GraphRAG improved those decisions relative to simpler approaches.</p><p>If not, the architecture may still be interesting, but it is not yet justified.</p><h1>10. Why Answer Quality Still Matters</h1><p>None of this means that final answer quality is unimportant. It still matters. Users need answers that are clear, concise, correct, and usable. An answer that is perfectly grounded but unreadable is not a success. Likewise, a system that retrieves the right graph paths but produces confusing explanations has an adoption problem.</p><p>The point is not to remove answer quality from evaluation. The point is to place it in the correct position.</p><p>Answer quality is one layer in a broader evaluation framework. It is the visible surface of the system, but it should not be mistaken for the system itself. A strong GraphRAG evaluation therefore keeps answer quality, but treats it as downstream of retrieval integrity, provenance, performance, and decision value.</p><h2>A better order of evaluation</h2><p>A sensible evaluation sequence looks like this:</p><ol><li><p>Did the system retrieve the required evidence?</p></li><li><p>Did it follow supported graph paths?</p></li><li><p>Are material claims traceable to provenance?</p></li><li><p>What did the system cost to build and run?</p></li><li><p>How quickly did it respond under realistic conditions?</p></li><li><p>Did it improve the user&#8217;s decision?</p></li><li><p>Only then, how clear and useful was the answer text?</p></li></ol><p>This order matters because it reflects how the system actually works. If steps 1 to 6 are weak, step 7 can still look good because the large language model is capable of producing polished output from imperfect input. That is exactly why answer quality must not dominate evaluation.</p><h2>Answer quality is still useful for product fit</h2><p>There is a place for human judgement of answer clarity, tone, structure, and usefulness. It matters for adoption. Users prefer systems that communicate well. A technically strong GraphRAG pipeline can still fail in practice if the answer is too verbose, too hedge-heavy, too difficult to inspect, or too vague about action.</p><p>That is why answer quality should remain part of the scorecard. It should simply be understood for what it is: a user-facing quality layer, not proof that the graph worked.</p><h1>11. The Benchmark Problem</h1><p>A major reason GraphRAG evaluation remains weak is that many available benchmarks are poorly aligned with the value proposition of graph-based retrieval.</p><p>A lot of public benchmarks focus on short factual questions with narrow answer targets. That makes scoring convenient. It also makes the graph less necessary. If a question can be answered from one or two well-matched chunks, then GraphRAG has little room to demonstrate its advantage. The benchmark may end up testing general retrieval quality rather than graph utility.</p><p>This leads to two problems.</p><p>First, GraphRAG can appear unimpressive because the benchmark does not require structure.<br><br>Second, weak GraphRAG can appear successful because the benchmark rewards polished answers instead of structural grounding.</p><h2>What kinds of questions actually test GraphRAG</h2><p>GraphRAG becomes valuable when the task depends on one or more of the following:</p><ul><li><p>multi-hop relationships</p></li><li><p>entity disambiguation</p></li><li><p>lineage or impact analysis</p></li><li><p>temporal validity</p></li><li><p>policy exceptions and overrides</p></li><li><p>source reconciliation across systems</p></li><li><p>decision justification through connected evidence</p></li></ul><p>A benchmark that does not include these characteristics is not really testing the graph.</p><h2>Failure modes that benchmarks should capture</h2><p>A useful GraphRAG benchmark should also capture the ways graph-based systems fail. For example:</p><ul><li><p>missing entities from extraction</p></li><li><p>incorrect entity resolution</p></li><li><p>spurious relationships</p></li><li><p>path over-expansion</p></li><li><p>temporal qualifier loss</p></li><li><p>provenance gaps</p></li><li><p>ranking collisions between relevant branches</p></li></ul><p>These failure modes are central to GraphRAG quality, yet many benchmarks ignore them entirely because they score only final answers.</p><h3>Diagram 10: Benchmark alignment</h3><pre><code>Factoid benchmark:
Question -&gt; one chunk -&gt; answer
Graph adds little value

Structural benchmark:
Question -&gt; entities + relationships + qualifiers + path -&gt; answer
Graph has room to prove value</code></pre><p>Without structurally demanding tasks, evaluation can become a marketing exercise rather than a real test.</p><h2>Benchmark design should reflect the intended use</h2><p>If your GraphRAG system is meant to support procurement, compliance, fraud, legal review, or operational analysis, then the benchmark should reflect those tasks. It should include ambiguity, dependency, conflicting sources, changing status, and user questions that require path-sensitive reasoning.</p><p>Otherwise, you may end up optimising for a public leaderboard while learning very little about production readiness.</p><h1>12. What Better GraphRAG Evaluation Looks Like</h1><p>A better evaluation framework is not mysterious. It is simply more disciplined and more aligned to how graph-based retrieval systems actually work.</p><p>A practical approach can be organised into a sequence.</p><h2>Step 1: Define the operational task</h2><p>Start with the actual job. What is the user trying to decide or do? Not &#8220;answer questions about documents&#8221; in the abstract, but something concrete such as:</p><ul><li><p>identify exposed live contracts after a policy change</p></li><li><p>explain why a supplier is classified as high risk</p></li><li><p>trace which customers depend on a failed component</p></li><li><p>determine which regulation version applies to a case</p></li></ul><p>This matters because the evaluation must reflect the intended decision environment.</p><h2>Step 2: Specify the required evidence</h2><p>For each representative query, define what evidence is required for a correct answer. This may be expressed as:</p><ul><li><p>a gold subgraph</p></li><li><p>a set of required entities and relationships</p></li><li><p>a set of required source records</p></li><li><p>required temporal or policy qualifiers</p></li></ul><p>This step is often skipped because it takes effort. Without it, however, coverage cannot be measured meaningfully.</p><h2>Step 3: Measure retrieval coverage</h2><p>Check whether the system retrieved the required entities, edges, sources, and qualifiers. Measure both missing evidence and irrelevant expansion. A system that retrieves too little fails on recall. A system that retrieves too much may create noise, cost, and latency.</p><h2>Step 4: Measure path faithfulness</h2><p>Break the answer into material claims and verify which claims are supported by explicit graph paths. Distinguish between:</p><ul><li><p>directly supported claims</p></li><li><p>claims supported only by weak co-occurrence</p></li><li><p>unsupported claims</p></li><li><p>claims that rely on unlogged inference</p></li></ul><p>This reveals whether the graph is constraining reasoning or merely ornamenting it.</p><h2>Step 5: Measure provenance completeness</h2><p>For each material claim, verify source support, extraction support, transformation history, and any relevant temporal or version information. Provenance must be checked at claim level, not only at whole-answer level.</p><h2>Step 6: Record cost and latency</h2><p>Measure both build-time and run-time cost. Record median and high-percentile latency under realistic workloads. Break timings down by stage so the results are useful to engineers and architects rather than just to programme managers.</p><h2>Step 7: Measure decision usefulness</h2><p>Run user tasks or offline simulations to see whether the system improved action. Did it reduce review time? Lower decision error? Improve consistency? Reduce reversals? Increase confidence with inspectable evidence?</p><h2>Step 8: Score answer quality last</h2><p>Now evaluate clarity, completeness, tone, and usefulness of the answer itself. This is still valuable, but it comes after retrieval integrity, provenance, performance, and decision value have been established.</p><h2>Example: A compact GraphRAG evaluation scorecard</h2><pre><code>Use case: Supplier risk impact analysis

Coverage
- required entities retrieved: 18/20
- required relationships retrieved: 14/16
- required source documents retrieved: 9/9
- required temporal qualifiers retrieved: 6/8

Faithfulness
- material claims: 12
- claims with explicit path support: 10
- claims with weak support: 1
- unsupported claims: 1

Provenance
- claims with full provenance: 9/12
- claims with partial provenance: 2/12
- claims with missing provenance: 1/12

Performance
- median latency: 2.4 seconds
- 95th percentile latency: 5.1 seconds
- average cost per query: &#163;0.19

Decision usefulness
- analyst task completion time improved by 21 per cent
- false escalation rate reduced by 17 per cent
- reviewer agreement improved by 11 per cent

Answer quality
- average user rating: 4.2/5</code></pre><p>A scorecard like this is far more revealing than a generic statement that users &#8220;liked the results&#8221;.</p><h2>Better evaluation also improves design</h2><p>One of the hidden benefits of this framework is that it supports better architecture. If coverage is weak, you know to inspect extraction and retrieval. If faithfulness is weak, you know to inspect traversal and prompting. If provenance is weak, you know to improve evidence capture. If latency is weak, you know where to optimise. If decision usefulness is weak despite strong technical scores, you may have chosen the wrong task or the wrong product experience.</p><p>This is why serious evaluation is not bureaucracy. It is design feedback.</p><h1>13. Summary</h1><p>Most GraphRAG evaluations are wrong because they reward systems for sounding right rather than being structurally right.</p><p>That mistake is easy to make. Final answers are visible, easy to score, and convenient to compare. Retrieval coverage, path faithfulness, provenance completeness, cost, latency, and decision usefulness are harder to measure. They require more careful task design and more engineering discipline.</p><p>But GraphRAG makes structural claims. It claims that graphs improve retrieval, support connected evidence, enable explanation, and help people make better decisions. If those are the claims, then those are the things the evaluation must test.</p><p>A serious GraphRAG evaluation therefore asks:</p><ul><li><p>did the system retrieve the evidence it needed?</p></li><li><p>did it follow graph paths faithfully?</p></li><li><p>can the answer be traced to sources and transformations?</p></li><li><p>what did it cost?</p></li><li><p>how quickly did it respond?</p></li><li><p>did it improve the user&#8217;s decision?</p></li></ul><p>Only after those questions are answered should we ask how polished the prose looked.</p><p>This matters even more in systems built on a Labelled Property Graph or an Applied Knowledge Graph, where relationships are expected to carry operational meaning. In those systems, the graph is not a visual accessory around a large language model. It is part of the runtime logic. If evaluation ignores that logic, it is not evaluating GraphRAG at all.</p><p>The way forward is not complicated, but it is stricter. Define the task. Specify required evidence. Measure coverage. Check faithfulness. Trace provenance. Record cost and latency. Test decision value. Then score the answer itself.</p><p>That is how GraphRAG should be judged.</p><p>Otherwise, we will keep rewarding elegant responses built on weak retrieval and incomplete support, and we will learn very little about whether the graph actually helped. That is not a GraphRAG success story. It is just another language model demo with a graph-shaped prop.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!LDvG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!LDvG!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!LDvG!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!LDvG!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LDvG!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!LDvG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2625260,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/194507217?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!LDvG!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!LDvG!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!LDvG!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LDvG!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feade90a3-2174-481d-886d-82d1a5b94c7f_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[From filings to decisions: why LPG and Applied Knowledge Graphs fit financial document intelligence]]></title><description><![CDATA[Table of contents]]></description><link>https://sergeyvasiliev.substack.com/p/from-filings-to-decisions-why-lpg</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/from-filings-to-decisions-why-lpg</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Fri, 03 Apr 2026 10:36:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lBQW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of contents</strong></p><ol><li><p>Introduction</p></li><li><p>Why financial documents are graph-shaped problems</p></li><li><p>Why LPG is the right operational model for this workload</p></li><li><p>Applied Knowledge Graph in finance: the missing middle layer</p></li><li><p>A reference architecture for financial document intelligence</p></li><li><p>GraphRAG for finance: where it works and where it breaks</p></li><li><p>Why Graph Data Science matters after graph construction</p></li><li><p>A practical LPG schema for filings, notes, facts, controls and obligations</p></li><li><p>Code examples</p></li><li><p>What to measure in production</p></li><li><p>Common failure modes</p></li><li><p>Closing view</p></li></ol><div><hr></div><h1>1. Introduction</h1><p>Most discussion about GraphRAG still starts from retrieval. In financial document processing, that is often the wrong starting point.</p><p>The hard part is rarely retrieving another chunk. The hard part is preserving identity, time, dependency, control, provenance, and numerical context across filings, footnotes, tables, ownership structures, policies, and regulations. Structured reporting formats such as eXtensible Business Reporting Language, or XBRL, and Inline XBRL already expose a machine-readable layer, but the real value appears only when those facts are connected to narrative disclosures, entities, obligations, and decisions in a graph that supports traversal and computation.</p><p>From the perspective of a Labelled Property Graph (LPG), practitioner, this is where the centre of gravity shifts. The question is not whether a graph can represent financial reporting semantics. It can. The question is which graph model best supports runtime decision support, multi-hop investigation, graph-native analytics, and graph-grounded artificial intelligence in systems that need to work under operational constraints.</p><h1>2. Why financial documents are graph-shaped problems</h1><p>Financial reports are not just long documents. They are relational systems disguised as documents.</p><p>A Form 10-K annual report, or an equivalent statutory report, contains issuers, subsidiaries, segments, instruments, covenants, jurisdictions, auditors, risks, definitions, footnotes, tables, dimensions, periods, and cross-references. Inline XBRL gives tagged facts with periods, units, and taxonomy concepts, but it does not by itself answer operational questions such as which obligations apply to which entity under which conditions, how an exposure propagates across a control chain, or what evidence supports a conclusion about a risk disclosure.</p><p>That means the important questions are usually path questions, neighbourhood questions, and subgraph questions. A consolidation question is a traversal problem. A covenant applicability question is a dependency problem. A control-to-obligation mapping question is a provenance problem. A risk concentration question is a network problem. A cross-period comparison question is a temporal graph problem.</p><p>Vector retrieval can help with entry points, but on its own it is usually not a strong operating model for those tasks. In finance, meaning often emerges from relationships rather than from isolated fragments of text.</p><h1>3. Why LPG is the right operational model for this workload</h1><p>A Resource Description Framework (RDF), stack is excellent when formal semantics, interoperability, and ontology-driven validation dominate the architecture. That matters in finance and should not be dismissed.</p><p>But once the centre of gravity moves from knowledge representation to operational intelligence, LPG often has distinct advantages.</p><p>In LPG, adjacency is native, properties live directly on nodes and relationships, and variable-length traversals are natural. For financial document intelligence, those strengths show up quickly.</p><p>Temporal ownership and control chains are easier to execute as relationship-rich traversals than as an ontology-first exercise. Evidence paths are first-class, so it is natural to move from entity to filing section to text unit to table cell to fact. Graph-native analytics can run on the same operational structure with minimal impedance mismatch. GraphRAG local retrieval aligns naturally with neighbourhood expansion. Most importantly, decision systems care about runtime behaviour. In finance, the graph is not just a store of meaning. It is the substrate for live questions: what applies, what changed, what is connected, what is missing, what is anomalous, and what should happen next.</p><p>That is why the architecture should be framed this way: ontology and taxonomy provide semantic discipline where needed, but LPG is often the workhorse for an operational Applied Knowledge Graph (AKG), in document-heavy financial workflows.</p><h1>4. Applied Knowledge Graph in finance: the missing middle layer</h1><p>A lot of financial artificial intelligence work still jumps from document parsing straight to retrieval-augmented generation. That misses the layer that matters most: the Applied Knowledge Graph.</p><p>By AKG here, I mean a graph designed not just to represent facts, but to support a bounded set of business decisions and investigations. It sits between source documents and graph-enabled applications. It carries provenance, confidence, temporal validity, canonical identity, and operationally meaningful relationships.</p><p>In finance, the AKG is the layer that links authoritative facts, narrative claims and disclosures, legal entities and identifiers, obligations, controls and evidence, periods, events and state changes, and graph features used for ranking, anomaly detection, or retrieval.</p><p>That AKG layer is what allows GraphRAG to become more than document retrieval. It becomes graph-grounded reasoning over a structured operational substrate.</p><h1>5. A reference architecture for financial document intelligence</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!aQsv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!aQsv!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!aQsv!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!aQsv!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!aQsv!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!aQsv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:998698,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/193056495?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!aQsv!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!aQsv!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!aQsv!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!aQsv!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca118f0-90c7-40c3-a60d-6093a38a2608_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>This architecture reflects the shape of the problem.</p><p>On ingestion, use structured filings wherever possible. For the United States reporting, the Securities and Exchange Commission, or SEC, exposes filings through the Electronic Data Gathering, Analysis, and Retrieval system, or EDGAR. In Europe, annual financial reporting is standardised through the European Single Electronic Format, or ESEF. On document conversion, table quality matters disproportionately. For graph construction, finance-specific extraction requires closed-schema control, table-aware chunking, strong provenance, and careful entity normalisation. On retrieval, the common query modes are Local Search, Global Search, and DRIFT Search, together with evidence expansion across both high-level communities and local text units.</p><h1>6. GraphRAG for finance: where it works and where it breaks</h1><p>GraphRAG is useful in finance, but only if you are clear about the task.</p><p>It works well for cross-reference-heavy questions, entity-centred investigations, and corpus-level thematic synthesis. Local Search is strong when the question is about a known entity, concept, contract, or event. Global Search is strong when the question asks for dominant themes or patterns across many filings. DRIFT Search is useful for workflows that need expansion across both high-level communities and local evidence.</p><p>It breaks when people expect it to compensate for poor source structure.</p><p>If the table parser fractures the statement, GraphRAG inherits the fracture. If entity resolution confuses issuer and subsidiary, GraphRAG amplifies the confusion. If periods are attached incorrectly, GraphRAG distorts time. If the schema drifts into uncontrolled labels, GraphRAG becomes noisy. If provenance is not preserved at text-unit level, trust in the outputs falls.</p><p>That is why finance should treat GraphRAG as a query layer over AKG, not as a substitute for AKG.</p><p>A good rule is simple. Use GraphRAG after you have a graph worth retrieving from.</p><h1>7. Why Graph Data Science matters after graph construction</h1><p>This is where many GraphRAG discussions still underplay the graph.</p><p>Once the AKG exists, Graph Data Science (GDS), becomes more than an optional extra. It becomes the bridge between graph structure and operational scoring.</p><p>For financial documents and reports, GDS is useful in several ways. Centrality can highlight entities or obligations that disproportionately influence downstream reporting or exposure. Community detection can surface structural clusters in counterparties, obligations, risks, or disclosure topics beyond text-only grouping. Similarity and embedding methods can help rank neighbourhood relevance, detect duplicate entities, or identify concept drift. Anomaly detection can surface unusual disclosure connectivity patterns, suspicious control gaps, or unexpected changes in corporate structure.</p><p>For an LPG practitioner, the practical point is simple: do not stop at retrieval. Run graph algorithms on the same operational graph and feed the results back into ranking, monitoring, and analyst workflows.</p><h1>8. A practical LPG schema for filings, notes, facts, controls and obligations</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!WtCp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!WtCp!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!WtCp!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!WtCp!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!WtCp!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!WtCp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:859084,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/193056495?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!WtCp!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!WtCp!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!WtCp!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!WtCp!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce1e3b61-9c06-47b1-a405-1ba701361396_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>This model is intentionally operational.</p><p><code>FACT</code> is not just an attribute on a node. It is a first-class object with provenance, period, unit, dimensionality, and lineage back to the filing.</p><p><code>TEXT_UNIT</code> is not a disposable chunking. It is the provenance spine of the whole system.</p><p><code>OWNS</code>, <code>ISSUES</code>, <code>FACT_OF</code>, <code>EVIDENCED_BY</code>, and <code>AFFECTS</code> are high-value relationships because they are the basis for both traversal and analytics.</p><p>That is the LPG advantage in practice. Relationships are not metadata around the model. They are the model.</p><h1>9. Code examples</h1><h2>9.1 Cypher for consolidation scope and revenue roll-up</h2><pre><code>MATCH (parent:LegalEntity {cik: $cik})
MATCH p = (parent)-[r:OWNS*1..6]-&gt;(sub:LegalEntity)
WHERE ALL(rel IN r WHERE rel.pct &gt;= 0.5 AND rel.validFrom &lt;= date($asOf))
WITH DISTINCT sub
MATCH (sub)&lt;-[:FACT_OF]-(f:Fact)-[:HAS_CONCEPT]-&gt;(:Concept {code: &#8220;Revenue&#8221;})
MATCH (f)-[:HAS_PERIOD]-&gt;(per:Period {kind: &#8220;annual&#8221;})
RETURN sub.name AS subsidiary,
       per.endDate AS period_end,
       f.value AS revenue,
       f.unit AS unit
ORDER BY revenue DESC</code></pre><p>This is the sort of query LPG handles very naturally: recursive ownership, fact retrieval, and time constraint in one traversal-oriented pattern.</p><h2>9.2 Cypher for obligation-to-evidence traversal</h2><pre><code>MATCH (o:Obligation {id: $obligationId})-[:MITIGATED_BY]-&gt;(c:Control)
MATCH (c)-[:EVIDENCED_BY]-&gt;(tu:TextUnit)&lt;-[:CHUNKED_INTO]-(s:Section)&lt;-[:CONTAINS]-(f:Filing)
RETURN o.name AS obligation,
       c.name AS control,
       f.form AS filing_form,
       s.title AS section,
       tu.text AS evidence
ORDER BY f.filedAt DESC</code></pre><p>This is a better fit than vector-only retrieval because the answer is inherently path-based.</p><h2>9.3 A GraphRAG workflow that respects financial structure</h2><pre><code>1. Parse Inline XBRL and preserve tagged facts as authoritative objects
2. Convert document layout with table-aware chunking
3. Resolve entities to external and internal identifiers
4. Populate LPG with provenance and validity intervals
5. Run GDS for centrality, communities, and anomaly signals
6. Build GraphRAG artefacts over graph plus text units
7. Route query:
   - fact-first for numeric questions
   - Local Search for entity-centred investigations
   - Global Search for corpus-wide themes
   - DRIFT Search for audit or compliance exploration</code></pre><p>This sequencing matters. It matches the structure of financial reporting instead of pretending retrieval is the primary design decision.</p><h1>10. What to measure in production</h1><p>A finance-grade system should be evaluated as a pipeline, not a demo.</p><p>Table extraction should be measured for structural fidelity. Retrieval should be measured for context precision and recall. Generation should be measured for faithfulness and hallucination risk. Finance-specific question answering should also be benchmarked against tasks that require mixed table-plus-text reasoning.</p><p>The more important point, though, is architectural. If your evaluation only measures answer quality, you will not know which layer failed. In practice, financial AKG systems need separate checks for parsing fidelity, graph quality, schema compliance, temporal correctness, retrieval coverage, and answer faithfulness.</p><h1>11. Common failure modes</h1><p>The biggest failure mode is confusing semantic richness with operational readiness.</p><p>A graph can look sophisticated long before it becomes useful. A large model with many labels and relationships may still fail to support reliable traversal, stable identity, explainable evidence paths, or repeatable decision workflows. In financial document intelligence, the test is not whether the graph looks expressive. The test is whether it works under real investigative pressure.</p><p>A second failure mode is treating table extraction as a commodity step. In financial reporting, table errors are graph errors. Broken headers, fractured rows, and lost footnote references lead directly to broken facts, broken evidence chains, and broken retrieval.</p><p>A third failure mode is flattening time. Financial meaning is period-sensitive, event-sensitive, and validity-sensitive. If ownership, controls, facts, or obligations are modelled as if they were timeless, the graph becomes easy to query but hard to trust.</p><p>A fourth failure mode is weak entity resolution. If the same issuer, subsidiary, instrument, or business unit appears under multiple unresolved identities, the graph fragments. Traversals become incomplete, analytics become unreliable, and GraphRAG assembles context from only part of the real picture.</p><p>A fifth failure mode is poor provenance design. In finance, a correct answer without traceable evidence is still weak. If facts and relationships cannot be traced back to filing sections, text units, tables, or extraction steps, trust collapses quickly.</p><p>A sixth failure mode is uncontrolled schema drift. As more pipelines and use cases are added, labels and relationships can multiply without discipline. The graph becomes noisier, queries become harder to maintain, and retrieval quality declines.</p><p>A seventh failure mode is expecting GraphRAG to repair poor graph design. It cannot. GraphRAG amplifies graph quality, good or bad. If the AKG is weak, GraphRAG simply makes the weakness harder to inspect because the answer still sounds fluent.</p><p>An eighth failure mode is stopping at retrieval and leaving graph analytics out of the loop. If the graph only helps users find evidence, but never computes centrality, concentration, similarity, or anomaly signals, then much of the graph&#8217;s operational value is left unused.</p><h1>12. Closing view</h1><p>For financial document intelligence, the most productive framing is not graph versus retrieval-augmented generation, and not even knowledge graph versus GraphRAG.</p><p>It is this:</p><p><strong>authoritative structured facts + applied LPG knowledge graph + graph data science + graph-grounded retrieval</strong></p><p>That stack is far better suited to financial reports than a chunk-first approach because it respects what the material actually is: a dense network of facts, entities, controls, obligations, events, and dependencies spread across time.</p><p>Ontology and taxonomy remain essential where semantic discipline and interoperability matter. But when the goal is to build systems that investigate, traverse, rank, detect, and support decisions over financial reporting, LPG is a strong operational backbone. That is not a philosophical preference. It is an architectural judgement shaped by the workload.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!lBQW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!lBQW!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!lBQW!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!lBQW!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!lBQW!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!lBQW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1983119,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/193056495?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!lBQW!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!lBQW!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!lBQW!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!lBQW!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F626d5f18-b532-47f3-a61f-223b3ac5ee1d_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Temporal Semantics in GraphRAG for Legal Documents]]></title><description><![CDATA[Achieving Point-in-Time Accuracy with Labelled Property Graphs and Applied Knowledge Graphs]]></description><link>https://sergeyvasiliev.substack.com/p/temporal-semantics-in-graphrag-for</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/temporal-semantics-in-graphrag-for</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Fri, 20 Mar 2026 11:13:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TyRU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of Contents</strong></p><ol><li><p>Introduction</p></li><li><p>The Nature of Time in Legal Documents</p></li><li><p>Why Naive GraphRAG Fails Without Temporal Context</p></li><li><p>Temporal Modelling in Labelled Property Graphs (LPG)</p></li><li><p>Applied Knowledge Graph (AKG) Design for Legal Time</p></li><li><p>Querying for Point-in-Time Accuracy in GraphRAG</p></li><li><p>Integrating Temporal Reasoning into Large Language Model Pipelines</p></li><li><p>Implementation Patterns and Practical Trade-offs</p></li><li><p>RDF-based Knowledge Graphs versus LPG-based Applied Knowledge Graphs</p></li><li><p>Why the Term &#8220;Context Graph&#8221; is Misleading</p></li><li><p>Conclusion</p></li></ol><div><hr></div><h1>1. Introduction</h1><p>Legal documents are fundamentally temporal, and each clause, amendment, and reference carries a time dimension that is critical for legal reasoning. Contracts evolve over time, obligations expire, and regulations are amended retroactively. Despite this, many GraphRAG implementations treat legal knowledge bases as static, ignoring temporal constraints. This can result in outputs that are linguistically plausible but factually inaccurate.</p><p>For example, asking, &#8220;Was Clause 14 of Contract X valid in March 2021?&#8221; requires a system that can determine which clauses existed and were effective at that exact point in time. Without explicit temporal modelling, retrieved content may reflect outdated or future clauses, rendering the answer legally unsound.</p><p>Labelled Property Graphs (LPGs) offer the ability to attach properties&#8212;including temporal attributes&#8212;to nodes and relationships. Applied Knowledge Graphs (AKGs) further operationalise this structure by embedding rules, constraints, and retrieval logic to ensure point-in-time determinism. When integrated with GraphRAG, these structures provide temporally accurate, legally defensible context for LLMs.</p><p>Temporal modelling must account for three primary aspects: <strong>validity intervals</strong>, defining when a clause or contract is effective; <strong>transaction times</strong>, capturing when a record was stored; and <strong>event times</strong>, marking when legal actions such as amendments occurred. Explicit representation of these times transforms a graph from a passive archive into a powerful operational tool for legal queries.</p><h1>2. The Nature of Time in Legal Documents</h1><p>Legal documents are more than static text; they are instruments whose applicability evolves across multiple temporal dimensions. Each clause, amendment, or reference can involve <strong>valid time</strong>, <strong>transaction time</strong>, and <strong>event time</strong>.</p><ul><li><p><strong>Valid Time</strong> reflects the period during which a legal statement is effective. For instance, a confidentiality clause may commence on the signing date and expire on contract termination.</p></li><li><p><strong>Transaction Time</strong> records when a change is stored or registered, which is critical for auditing, compliance, and provenance.</p></li><li><p><strong>Event Time</strong> corresponds to when a legal action, such as signing an amendment, actually occurs. Event time may differ from valid time, especially in retroactive amendments.</p></li></ul><p>For illustration, consider a contract scenario:</p><blockquote><p>Contract Signed: 1 January 2020 (Event Time)<br>Clause Effective: 1 March 2020 (Valid Time)<br>Amendment Passed: 1 June 2021 (Event Time)<br>Amendment Retroactive Validity: 1 April 2021 (Valid Time)</p></blockquote><p>Here, the validity of the clause at a query date may not align with either the original signing date or the amendment date, highlighting the need for precise temporal modelling. Overlapping validity periods and retroactive changes add further complexity. Legal structures contain hierarchical timelines: contract-level, clause-level, and relationship-level. Queries that ignore these hierarchies risk returning semantically correct but temporally invalid information.</p><p>In GraphRAG, temporal modelling ensures that point-in-time queries return deterministic, auditable results. This enables compliance-grade answers and prevents the generation of misleading LLM outputs.</p><h1>3. Why Naive GraphRAG Fails Without Temporal Context</h1><p>GraphRAG pipelines typically combine semantic vector similarity with graph traversal. While sufficient for domains with static knowledge, this approach fails in legal reasoning. Without temporal filtering, retrieved clauses may originate from periods that are inconsistent with the query, producing outputs that are plausible but incorrect.</p><p>For example, querying, &#8220;Which clauses governed liability for Contract X in April 2021?&#8221; may return:</p><ul><li><p>Original clauses from 2020</p></li><li><p>Amendments from 2022</p></li><li><p>Commentary from 2023</p></li></ul><p>An LLM synthesising this data might produce a hybrid answer that combines clauses across periods, which is legally invalid. The failure here is not semantic but temporal: traversal alone cannot enforce valid-time constraints. Therefore, naive GraphRAG lacks determinism and compliance guarantees.</p><h1>4. Temporal Modelling in Labelled Property Graphs (LPG)</h1><p>Labelled Property Graphs provide flexibility to model temporality explicitly. Nodes and relationships can carry <strong>valid_from</strong> and <strong>valid_to</strong> properties, allowing traversal queries to filter entities active at a specific time.</p><p><strong>Example Clause Node:</strong></p><p><code>CREATE (c:Clause {id: &#8216;C14&#8217;, valid_from: date(&#8217;2020-03-01&#8217;), valid_to: date(&#8217;2021-06-01&#8217;)})</code></p><p><strong>Versioned Clause Modelling:</strong></p><p><code>CREATE (clause:Clause {id: &#8216;C14&#8217;})<br>CREATE (v1:ClauseVersion {version: 1, valid_from: date(&#8217;2020-03-01&#8217;), valid_to: date(&#8217;2021-06-01&#8217;)})<br>CREATE (clause)-[:HAS_VERSION]-&gt;(v1)<br>CREATE (event:AmendmentEvent {date: date(&#8217;2021-06-01&#8217;), description: &#8216;Amendment to C14&#8217;})<br>CREATE (v1)-[:AMENDED_BY]-&gt;(event)</code></p><p>Event-based modelling allows the system to represent amendments and other legal events as nodes connected to clause versions, capturing both <strong>sequence</strong> and <strong>causality</strong>.</p><p><strong>Querying clauses valid on a specific date:</strong></p><p><code>MATCH (v:ClauseVersion)<br>WHERE v.valid_from &lt;= date(&#8217;2021-04-01&#8217;) AND (v.valid_to IS NULL OR v.valid_to &gt; date(&#8217;2021-04-01&#8217;))<br>RETURN v</code></p><p>This query guarantees deterministic point-in-time retrieval. Immutability, explicit intervals, versioning, and consistency are crucial: amendments should not overwrite nodes but create new versions, ensuring historical integrity.</p><h1>5. Applied Knowledge Graph (AKG) Design for Legal Time</h1><p>Applied Knowledge Graphs operationalise the temporal structure of LPGs. They prioritise <strong>decision-readiness</strong> over mere semantic storage. Contract, clause, and party entities are versioned, and relationships carry validity intervals, enabling queries that reflect the system&#8217;s state at any point in time.</p><p>Each contract node may have multiple ContractVersion nodes, each linked to ClauseVersion nodes. ClauseVersion nodes connect to textual representations or document paragraphs. This design ensures that GraphRAG pipelines retrieve both structured and textual information that is temporally consistent.</p><p><strong>AKG example with text linkage:</strong></p><p><code>CREATE (contract:Contract {id:&#8217;CX&#8217;})<br>CREATE (cver:ContractVersion {version:&#8217;V1&#8217;, valid_from: date(&#8217;2020-01-01&#8217;), valid_to: date(&#8217;2021-06-01&#8217;)})<br>CREATE (contract)-[:HAS_VERSION]-&gt;(cver)<br>CREATE (clause:Clause {id:&#8217;C14&#8217;})<br>CREATE (clver:ClauseVersion {valid_from: date(&#8217;2020-03-01&#8217;), valid_to: date(&#8217;2021-06-01&#8217;)})<br>CREATE (clause)-[:HAS_VERSION]-&gt;(clver)<br>CREATE (clver)-[:LINKED_TEXT]-&gt;(:TextChunk {doc_id:&#8217;doc123&#8217;, paragraph:14})</code></p><p>This structure allows deterministic retrieval for GraphRAG, ensures auditable history, and supports compliance-grade decision-making.</p><h1>6. Querying for Point-in-Time Accuracy in GraphRAG</h1><p>Point-in-time querying ensures the <strong>retrieved subgraph represents the world as it existed at a specific date</strong>.</p><p><strong>Steps</strong></p><ol><li><p>Extract time parameter from user query</p></li><li><p>Filter nodes and relationships by validity intervals</p></li><li><p>Resolve conflicts between overlapping versions</p></li><li><p>Collect linked textual content for GraphRAG</p></li></ol><p><strong>Example Workflow</strong></p><ul><li><p><strong>Query:</strong> &#8220;What clauses were valid for Contract X in April 2021?&#8221;</p></li><li><p><strong>Graph Query:</strong> Filter ClauseVersions with <br><code>valid_from &lt;= &#8216;2021-04-01&#8217; AND (valid_to IS NULL OR valid_to &gt; &#8216;2021-04-01&#8217;)</code></p></li><li><p><strong>GraphRAG Retrieval:</strong> Collect linked text chunks</p></li><li><p><strong>LLM Input:</strong> Only temporally valid clauses</p></li></ul><p><strong>Optimisations</strong></p><ul><li><p><strong>Materialised snapshots:</strong> Precompute frequently queried time points</p></li><li><p><strong>Temporal indices:</strong> Ensure queries scale with large legal corpora</p></li><li><p><strong>Conflict resolution rules:</strong> Determine precedence when multiple versions overlap</p></li></ul><p>Correct point-in-time retrieval reduces ambiguity, prevents misleading LLM outputs, and ensures <strong>compliance-grade answers</strong>.</p><h1>7. Integrating Temporal Reasoning into Large Language Model Pipelines</h1><p>Large Language Models (LLMs) cannot reliably infer temporal validity. Integration must <strong>externalise temporal reasoning</strong> to the graph retrieval layer.</p><p><strong>Integration Steps</strong></p><ol><li><p><strong>Temporal intent extraction:</strong> Identify relevant dates or periods from query</p></li><li><p><strong>Graph filtering:</strong> Retrieve only temporally valid nodes/relationships</p></li><li><p><strong>Context construction:</strong> Build LLM input using deterministic, temporally scoped subgraph</p></li><li><p><strong>Prompt design:</strong> Explicitly reference time, e.g., &#8220;Based on Contract X as of 1 April 2021&#8230;&#8221;</p></li></ol><p><strong>Additional Techniques</strong></p><ul><li><p>Include <strong>version IDs</strong> and <strong>validity intervals</strong> in LLM context</p></li><li><p>Provide <strong>amendment metadata</strong> to improve traceability</p></li><li><p>Optionally enforce <strong>symbolic rules</strong> to guide retrieval and LLM reasoning</p></li></ul><p>This hybrid approach allows LLMs to focus on <strong>synthesis</strong>, not temporal inference, which is unreliable in purely generative models.</p><h1>8. Implementation Patterns and Practical Trade-offs</h1><p>RDF is widely used for semantic knowledge graphs. It provides formal logic foundations and standardised modelling. Temporal modelling in RDF often relies on:</p><ul><li><p><strong>Reification of triples</strong> with attached temporal properties</p></li><li><p><strong>Named graphs</strong> to scope validity</p></li><li><p><strong>OWL-Time ontology</strong> for interval representation</p></li></ul><p><strong>Limitations for Legal GraphRAG</strong></p><ul><li><p>Queries are more complex and less performant than LPG</p></li><li><p>Graph traversal and temporal filtering require reasoning engines or SPARQL rules</p></li><li><p>Readability and maintainability are reduced for operational teams</p></li></ul><p><strong>Advantages of LPG-based AKG</strong></p><ul><li><p>Temporal attributes attached directly to nodes/edges</p></li><li><p>Point-in-time queries are concise and efficient</p></li><li><p>GraphRAG integration is simpler and more predictable</p></li></ul><p><strong>Example:</strong></p><p><code>(:ClauseVersion {valid_from: date1, valid_to: date2})</code></p><p>LPG-based AKGs better align with <strong>enterprise operational needs</strong>, ensuring deterministic retrieval and minimal latency, critical for legal compliance systems.</p><h1>9. RDF-based Knowledge Graphs versus LPG-based Applied Knowledge Graphs</h1><p>RDF provides a formally defined model for representing knowledge as triples, consisting of subject, predicate, and object. This model is well suited for semantic interoperability, ontology-driven systems, and environments where logical inference and standardisation are primary concerns. In theory, RDF is capable of representing temporal information, but it does not natively support properties on relationships or statements. This limitation becomes particularly relevant when modelling temporal validity in legal documents.</p><p>To represent temporal aspects in RDF, additional modelling constructs must be introduced. One common approach is reification, where a statement is transformed into a resource that can then be annotated with temporal properties. Another approach is the use of named graphs, where a set of triples is grouped and associated with metadata such as validity intervals. A more formal approach involves ontologies such as OWL-Time, which define temporal entities and relationships.</p><p>A simplified example of RDF reification for a clause validity statement might look as follows:</p><p><code>:stmt1 rdf:type rdf:Statement .<br>:stmt1 rdf:subject :c14 .<br>:stmt1 rdf:predicate ex:isValid .<br>:stmt1 rdf:object true .<br>:stmt1 ex:validFrom &#8220;2020-03-01&#8221;^^xsd:date .<br>:stmt1 ex:validTo &#8220;2021-06-01&#8221;^^xsd:date .</code></p><p>While this is technically correct, it introduces structural overhead. A single business fact now requires multiple triples and an intermediate node. When scaled across thousands of clauses, amendments, and relationships, this leads to a graph that is significantly more complex to query and maintain.</p><p>Named graphs provide an alternative:</p><p><code>GRAPH :validity_2020_2021 {<br> :c14 ex:isValid true .<br>}<br>:validity_2020_2021 ex:validFrom &#8220;2020-03-01&#8221;^^xsd:date .<br>:validity_2020_2021 ex:validTo &#8220;2021-06-01&#8221;^^xsd:date .</code></p><p>However, this approach shifts complexity to query construction. SPARQL queries must explicitly reference graph scopes and temporal metadata, which complicates both development and optimisation.</p><p>In contrast, Labelled Property Graphs allow temporal attributes to be attached directly to nodes and relationships. This provides a more direct mapping between the business concept and its representation.</p><p>Equivalent LPG representation:</p><p><code>(:ClauseVersion {<br> id: &#8216;C14_v1&#8217;,<br> valid_from: date(&#8217;2020-03-01&#8217;),<br> valid_to: date(&#8217;2021-06-01&#8217;)<br>})</code></p><p>This difference is not merely syntactic. It has several practical consequences for enterprise GraphRAG systems.</p><p>First, query complexity is significantly reduced. In LPG, temporal filtering can be expressed as a simple predicate on properties. In RDF, the same query often requires joins across multiple triples, graph scopes, or reified statements.</p><p>Second, performance characteristics differ. LPG engines are optimised for traversal with property filtering, which aligns well with point-in-time queries. RDF systems often rely on SPARQL query planning and optional reasoning layers, which can introduce latency, especially in large graphs.</p><p>Third, maintainability becomes a critical factor. Engineering teams working with LPG models can reason about the graph structure more intuitively because it aligns closely with domain concepts such as &#8220;clause version&#8221; or &#8220;valid interval&#8221;. RDF models, while semantically rich, often require a deeper understanding of ontologies and modelling patterns, which can slow down development in operational environments.</p><p>From a GraphRAG perspective, the most important distinction is deterministic retrieval. LPG-based Applied Knowledge Graphs allow temporal constraints to be embedded directly in traversal queries that feed the retrieval pipeline. This ensures that the subgraph provided to the Large Language Model (LLM) is already temporally consistent.</p><p>In RDF-based systems, achieving the same level of determinism often requires additional reasoning steps or carefully constructed SPARQL queries. This introduces variability in execution time and increases the risk of incomplete or inconsistent retrievals if queries are not precisely defined.</p><p>It is important to emphasise that RDF is not unsuitable for temporal modelling. It is capable, but the cost of expressiveness is complexity. For use cases where formal semantics and interoperability are the primary goals, RDF remains a strong choice. However, in enterprise GraphRAG scenarios focused on performance, determinism, and operational simplicity, LPG-based Applied Knowledge Graphs provide a more pragmatic foundation.</p><h1>10. Why the Term &#8220;Context Graph&#8221; is Misleading</h1><p>The term &#8220;Context Graph&#8221; has gained popularity in discussions around GraphRAG and Large Language Models. It is often used to describe a graph that provides additional information to support generation. While the term is intuitively appealing, it lacks precise technical meaning and introduces ambiguity when applied to temporal legal reasoning.</p><p>The core problem is that &#8220;context&#8221; is not a well-defined construct in graph modelling. It is typically used as a catch-all term that combines several distinct concerns, including structural relationships, relevance to a query, temporal validity, and provenance of information. Treating these as a single concept obscures the actual requirements for building reliable systems.</p><p>In legal GraphRAG, the distinction between context and state is critical. Context is often interpreted as a collection of related information that may help answer a question. State, on the other hand, is a precise and consistent representation of the system at a specific point in time.</p><p>A &#8220;context graph&#8221; in practice often includes:</p><ul><li><p>Historical versions of clauses</p></li><li><p>Current active clauses</p></li><li><p>Future amendments</p></li><li><p>Commentary or annotations</p></li></ul><p>If such a graph is provided to an LLM without temporal filtering, the model receives conflicting signals. For example, a clause that was valid in 2020 and another that replaced it in 2022 may both appear relevant from a semantic perspective. The LLM may then produce an answer that blends these versions, resulting in a response that is coherent but incorrect.</p><p>This is not a limitation of the LLM alone. It is a failure of the retrieval layer to provide a consistent input. The LLM operates on the assumption that the provided context is internally consistent. When that assumption is violated, the output cannot be trusted.</p><p>To illustrate the issue, consider the difference between two retrieval strategies.</p><p>A context-driven approach might execute a query such as:</p><p><code>MATCH (c:Clause)-[:HAS_VERSION]-&gt;(v)<br>WHERE c.id = &#8216;C14&#8217;<br>RETURN v</code></p><p>This query retrieves all versions of a clause, regardless of their temporal validity. The result is a &#8220;context graph&#8221; containing multiple, potentially conflicting states.</p><p>A state-driven approach introduces temporal constraints:</p><p><code>MATCH (c:Clause)-[:HAS_VERSION]-&gt;(v)<br>WHERE c.id = &#8216;C14&#8217;<br> AND v.valid_from &lt;= date(&#8217;2021-04-01&#8217;)<br> AND (v.valid_to IS NULL OR v.valid_to &gt; date(&#8217;2021-04-01&#8217;))<br>RETURN v</code></p><p>This query constructs a point-in-time subgraph, representing the state of the clause at a specific date. The result is deterministic and free of temporal conflicts.</p><p>The difference between these two approaches is fundamental. The first relies on the LLM to interpret context and resolve inconsistencies, which it is not designed to do reliably. The second ensures that the input to the LLM is already consistent, allowing the model to focus on synthesis rather than validation.</p><p>Another issue with the term &#8220;Context Graph&#8221; is that it encourages under-modelling. Teams may assume that building a loosely connected graph of related entities is sufficient, without investing in proper temporal modelling, versioning, or validity constraints. This leads to systems that appear to work in simple scenarios but fail under real-world conditions where temporal precision is required.</p><p>In enterprise legal applications, this is not acceptable. Queries must be auditable, reproducible, and legally defensible. This requires:</p><ul><li><p>Explicit modelling of temporal validity</p></li><li><p>Deterministic filtering of nodes and relationships</p></li><li><p>Clear separation between historical, current, and future states</p></li></ul><p>A more accurate description of what GraphRAG requires is not a &#8220;context graph&#8221; but a temporally scoped subgraph derived from an Applied Knowledge Graph. This subgraph represents the exact state of the system relevant to the query and serves as the input to the LLM.</p><p>Only after this deterministic state is constructed does it become meaningful to refer to the result as context. At that point, context is not a loosely defined collection of information, but a precisely defined dataset that satisfies temporal and structural constraints.</p><p>In summary, the term &#8220;Context Graph&#8221; is misleading because it hides the complexity of temporal reasoning and shifts responsibility to the wrong component. Reliable legal GraphRAG systems are built not on vague notions of context, but on explicit modelling of state, enforced through deterministic retrieval.</p><h1>11. Conclusion</h1><p>The central requirement in legal GraphRAG is not relevance, but correctness at a specific point in time. Every query implicitly or explicitly asks for the state of the legal domain at a given date. If temporal semantics are not enforced, the system will return outputs that are linguistically coherent but legally incorrect.</p><p>The key idea is straightforward. GraphRAG must not retrieve &#8220;relevant context&#8221; in a general sense. It must construct a temporally consistent subgraph, representing only the clauses, relationships, and documents that were valid at the requested time. This subgraph is the only acceptable input for a Large Language Model (LLM).</p><p>From this perspective, the role of the graph is to guarantee correctness, while the role of the LLM is limited to synthesis and explanation. Any attempt to shift temporal reasoning into the LLM leads to ambiguity and unreliable outputs.</p><p>The comparison between RDF-based Knowledge Graphs and Labelled Property Graph based Applied Knowledge Graphs reinforces this. RDF can model temporal semantics, but often at the cost of complexity, query overhead, and reduced operational clarity. LPG-based AKGs provide a more direct and efficient way to encode validity intervals and execute point-in-time queries, which is critical for GraphRAG pipelines in enterprise environments.</p><p>The same principle applies to the notion of a &#8220;Context Graph&#8221;. This term is misleading because it suggests that collecting related information is sufficient. In legal use cases, it is not. What matters is not context, but state. A graph that includes multiple temporal versions without filtering is not useful input, it is a source of error.</p><p>The correct pattern is therefore:</p><ul><li><p>Encode temporal validity explicitly in the graph</p></li><li><p>Enforce time constraints during retrieval</p></li><li><p>Construct a deterministic, point-in-time subgraph</p></li><li><p>Use this subgraph as the sole input to the LLM</p></li></ul><p>When this pattern is applied, GraphRAG produces outputs that are temporally accurate, auditable, and suitable for legal and compliance use. Without it, the system remains a semantic search tool with no guarantees of correctness.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!TyRU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!TyRU!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!TyRU!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!TyRU!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!TyRU!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!TyRU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1715366,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/191569492?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!TyRU!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!TyRU!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!TyRU!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!TyRU!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118bb78-7725-4b0a-89e3-c2e89da8d686_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[The RDF Assumption That Meaning Lives in Ontology Is Breaking in the LLM Era]]></title><description><![CDATA[Table of Contents]]></description><link>https://sergeyvasiliev.substack.com/p/the-rdf-assumption-that-meaning-lives</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/the-rdf-assumption-that-meaning-lives</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Mon, 16 Mar 2026 13:26:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xTyV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Table of Contents</h2><ol><li><p>Introduction</p></li><li><p>The Semantic Web Assumption About Meaning</p></li><li><p>How Ontologies Encode Semantics in RDF Systems</p></li><li><p>Why LLM Systems Do Not Execute Ontological Semantics</p></li><li><p>Graphs in AI Pipelines: Context Instead of Logical Closure</p></li><li><p>Labelled Property Graphs as Operational Semantic Substrates</p></li><li><p>The Rise of the Applied Knowledge Graph</p></li><li><p>Why Ontology-Heavy Systems Struggle in Artificial Intelligence Architectures</p></li><li><p>Graph Summarisation Instead of Logical Inference</p></li><li><p>The Architectural Shift in Enterprise Graph Systems</p></li><li><p>Questions from RDF Practitioners</p></li><li><p>Conclusion</p></li></ol><div><hr></div><h1>1. Introduction</h1><p>For more than two decades the architecture of the Semantic Web has been built around a powerful and elegant idea. If knowledge can be expressed through formal ontologies, machines will be able to derive meaning through logical reasoning. In this vision a knowledge graph functions as a logical knowledge base. Ontologies define the conceptual structure of the domain and reasoning engines derive additional knowledge from those definitions.</p><p>This paradigm shaped the ecosystem around the Resource Description Framework (RDF). RDF provides the structural data model for representing information as triples. RDF Schema (RDFS) and the Web Ontology Language (OWL) extend that model with constructs for expressing semantic relationships. Reasoners analyse the ontology and derive new facts that logically follow from the model.</p><p>The emergence of modern artificial intelligence systems, particularly large language models (LLMs), introduces a different computational paradigm. These systems do not reason through symbolic logic. Instead, they interpret patterns and relationships through probabilistic models trained on large corpora of text and code.</p><p>As a consequence the role of knowledge graphs in data architectures is changing. In many AI systems graphs function less as logical inference engines and more as structured contextual memory. Their primary value lies in organising relationships so that downstream systems, including LLMs, can interpret them.</p><p>This shift has important implications for how knowledge graphs are designed and deployed. In practice the Labelled Property Graph (LPG) model and the emerging architecture of the Applied Knowledge Graph (AKG) align naturally with modern AI pipelines. Their emphasis on relationships, flexible modelling and operational querying supports the dynamic environments in which contemporary AI systems operate.</p><p>The argument presented here is not that RDF is obsolete. Rather, it is that the assumptions about where meaning resides in a knowledge system are evolving in the era of LLM-driven architectures.</p><h1>2. The Semantic Web Assumption About Meaning</h1><p>The original vision of the Semantic Web rests on a foundational assumption: meaning can be encoded explicitly in formal ontologies. If the conceptual structure of a domain is described precisely enough, machines can derive new knowledge from existing information through logical reasoning.</p><p>This idea originates in symbolic artificial intelligence. In symbolic systems knowledge is represented as logical statements and inference engines manipulate those statements according to formal rules.</p><p>In the RDF ecosystem, ontologies express domain knowledge through classes, relationships and constraints. Hierarchical relationships between classes allow reasoning engines to infer implicit knowledge.</p><p>For example:</p><pre><code>:Animal rdf:type owl:Class .
:Mammal rdf:type owl:Class .
:Dog rdf:type owl:Class .

:Mammal rdfs:subClassOf :Animal .
:Dog rdfs:subClassOf :Mammal .</code></pre><p>If a knowledge graph contains the statement:</p><pre><code>:Fido rdf:type :Dog .</code></pre><p>a reasoner can derive the following implicit facts:</p><pre><code>:Fido rdf:type :Mammal .
:Fido rdf:type :Animal .</code></pre><p>The ontology therefore defines the conceptual structure of the domain, and the reasoning engine derives new knowledge that logically follows from that structure.</p><p>This model works well in domains where conceptual structures are stable and precisely defined. Biomedical ontologies, taxonomies of organisms and regulatory classifications often benefit from formal reasoning.</p><p>However the same approach becomes more challenging in dynamic enterprise environments where data sources change frequently and new relationships appear continuously.</p><h1>3. How Ontologies Encode Semantics in RDF Systems</h1><p>Ontologies encode semantics through several structural mechanisms that together form the conceptual framework of a domain.</p><p>The most fundamental mechanism is the class hierarchy. Classes represent conceptual categories and subclass relationships define how those categories relate to one another.</p><pre><code>:Vehicle rdf:type owl:Class .
:Car rdf:type owl:Class .
:ElectricCar rdf:type owl:Class .

:Car rdfs:subClassOf :Vehicle .
:ElectricCar rdfs:subClassOf :Car .</code></pre><p>Properties describe the relationships that can exist between entities.</p><pre><code>:manufacturedBy rdf:type owl:ObjectProperty .
:manufacturedBy rdfs:domain :Vehicle .
:manufacturedBy rdfs:range :Company .</code></pre><p>Logical restrictions allow ontologies to specify more precise semantic conditions.</p><pre><code>:ElectricCar rdfs:subClassOf [
  rdf:type owl:Restriction ;
  owl:onProperty :energySource ;
  owl:hasValue :Electricity
] .</code></pre><p>A reasoning engine analyses these constructs and derives implicit knowledge that follows logically from the ontology.</p><p>This approach offers strong guarantees about consistency and formal semantics. However it also introduces modelling overhead. Ontologies must be carefully designed, governed and maintained. Changes in the conceptual model can propagate across the system and require recomputation of inferred knowledge.</p><h1>4. Why LLM Systems Do Not Execute Ontological Semantics</h1><p>Large language models operate according to a fundamentally different computational paradigm than ontology reasoning systems. Ontology reasoners belong to the tradition of symbolic artificial intelligence, where knowledge is represented through formal logical axioms and conclusions are derived through deterministic inference rules. Large language models belong to the paradigm of statistical machine learning, where meaning emerges from patterns in large datasets rather than from explicit symbolic rules.</p><p>Ontology reasoning operates through strict logical evaluation. Given a set of axioms and facts, the system determines whether a statement logically follows.</p><p>Consider the following ontology fragment:</p><pre><code>:Person rdf:type owl:Class .
:Employee rdf:type owl:Class .

:Employee rdfs:subClassOf :Person .

:Alice rdf:type :Employee .</code></pre><p>A reasoning engine deterministically derives the statement:</p><pre><code>:Alice rdf:type :Person .</code></pre><p>The conclusion follows directly from the ontology.</p><p>An LLM answering a question about Alice may produce the same answer, but for a different reason. It does not execute the subclass rule. Instead it recognises a common linguistic pattern: employees are people. The answer emerges from statistical associations learned during training rather than from formal logical inference.</p><p>In modern AI architectures knowledge graphs therefore serve a different role. Rather than acting as logical theorem provers, they function as structured context providers.</p><p>A typical AI pipeline may operate as follows:</p><ol><li><p>A user question is received.</p></li><li><p>Relevant entities are identified.</p></li><li><p>Graph queries retrieve connected relationships.</p></li><li><p>The retrieved information becomes context for the prompt.</p></li><li><p>The LLM interprets that context and generates an answer.</p></li></ol><p>In this architecture the graph provides structured information while the language model performs semantic interpretation.</p><p>Many OWL constructs are effectively invisible to LLMs unless they are translated into textual explanations. For example the following OWL restriction expresses a formal rule:</p><pre><code>:ElectricCar rdfs:subClassOf [
  rdf:type owl:Restriction ;
  owl:onProperty :energySource ;
  owl:hasValue :Electricity
] .</code></pre><p>A reasoner can infer that every electric car uses electricity as an energy source. A language model will not automatically execute this rule unless the relevant context is explicitly included in the prompt.</p><p>For AI systems the practical consequence is that the graph primarily provides structure. The interpretation of meaning often occurs within the language model.</p><h1>5. Graphs in AI Pipelines: Context Instead of Logical Closure</h1><p>Traditional Semantic Web architectures aim to compute logical closure. If a fact can be derived from the ontology and the stored triples, the reasoning engine should eventually infer it.</p><p>AI pipelines rarely pursue this objective. Instead they focus on retrieving the most relevant contextual information for a particular question.</p><p>A typical query retrieves a local neighbourhood within the graph rather than computing all possible inferences.</p><pre><code>MATCH (drug:Drug)-[:TREATS]-&gt;(disease:Disease)
MATCH (drug)-[:HAS_SIDE_EFFECT]-&gt;(effect)
WHERE disease.name = &#8220;Hypertension&#8221;
RETURN drug, disease, effect</code></pre><p>The result is a contextual subgraph describing drugs, diseases and side effects.</p><p>This structure becomes input for the language model, which interprets the relationships and generates a response.</p><p>The graph therefore functions as structured memory while the LLM performs semantic interpretation.</p><h1>6. Labelled Property Graphs as Operational Semantic Substrates</h1><p>The Labelled Property Graph model represents knowledge through nodes, relationships, labels and properties.</p><p>Nodes represent entities. Relationships connect those entities. Labels classify nodes, and properties attach attributes to nodes or relationships.</p><pre><code>CREATE (p:Person {name: &#8220;Alice&#8221;})
CREATE (c:Company {name: &#8220;Neo Systems&#8221;})
CREATE (p)-[:WORKS_FOR {since: 2021}]-&gt;(c)</code></pre><p>The semantics of the graph emerge from the structure of these relationships.</p><p>Labels act as lightweight semantic anchors. They provide enough information for graph queries and AI models to interpret entities without requiring a fully formalised ontology.</p><p>This model is particularly well suited for operational environments where the data model evolves over time. New relationship types can be introduced without redesigning a global ontology.</p><h1>7. The Rise of the Applied Knowledge Graph</h1><p>The concept of the Applied Knowledge Graph (AKG) reflects a shift from purely semantic modelling toward operational problem solving. Instead of attempting to represent an entire domain through formal ontologies, an Applied Knowledge Graph focuses on representing relationships that directly support analytics, decision making and artificial intelligence workflows.</p><p>Traditional knowledge graph initiatives often begin with ontology design. Domain experts define classes, properties and conceptual hierarchies before operational data is integrated. The result may be conceptually elegant but difficult to evolve when new requirements appear.</p><p>AKG reverse this sequence. They begin with operational questions.</p><ul><li><p>Which suppliers are connected to which factories?</p></li><li><p>Which customers interact with which products?</p></li><li><p>Which transactions link financial entities?</p></li></ul><p>Relationships, therefore, become the primary modelling construct.</p><p>Consider a logistics network:</p><pre><code>CREATE (s:Supplier {name:&#8221;Global Steel&#8221;})
CREATE (p:Product {name:&#8221;Industrial Beam&#8221;})
CREATE (f:Factory {name:&#8221;Rotterdam Plant&#8221;})

CREATE (s)-[:SUPPLIES]-&gt;(p)
CREATE (p)-[:PRODUCED_AT]-&gt;(f)</code></pre><p>This structure immediately supports supply chain analysis. Analysts can trace the path from supplier to product to factory.</p><p>If geopolitical risk becomes relevant the graph can evolve incrementally.</p><pre><code>CREATE (s)-[:LOCATED_IN]-&gt;(:Region {name:&#8221;Eastern Europe&#8221;, riskLevel:&#8221;High&#8221;})</code></pre><p>Now analysts can identify factories exposed to geopolitical risk through their suppliers.</p><p>Similar patterns appear in fraud detection, recommendation systems and customer analytics. Across these domains the graph grows organically as new relationships become relevant.</p><p>This operational orientation explains why property graph technology dominates many real-world deployments of knowledge graphs.</p><h1>8. Why Ontology-Heavy Systems Struggle in Artificial Intelligence Architectures</h1><p>Ontology-centric architectures assume that the conceptual structure of a domain can be stabilised through careful modelling. Classes and properties are defined once and reused across the system.</p><p>AI environments rarely behave this way. Data pipelines continuously introduce new sources of information. AI agents may generate new relationship types that were not anticipated when the ontology was designed. Under these conditions ontology governance can become a constraint on system evolution. Each conceptual change may require ontology updates, validation and recomputation of inferred knowledge. This process can slow down experimentation and integration in rapidly evolving AI environments.</p><p>By contrast AI pipelines emphasise rapid retrieval of contextual information. Graph queries must execute quickly so that relevant context can be assembled for downstream models.</p><p>Property graph databases are optimised for relationship traversal and pattern matching. These capabilities align naturally with AI workloads that rely on exploring connections between entities.</p><h1>9. Graph Summarisation Instead of Logical Inference</h1><p>Graph summarisation is becoming an important technique in modern AI-driven graph systems. Rather than computing every possible logical inference, the system constructs a concise representation of the relevant region of the graph.</p><p>Large enterprise graphs may contain millions or billions of entities. Full logical reasoning over such structures is rarely necessary for answering a specific question.</p><p>Graph summarisation focuses on extracting a meaningful subgraph that captures the essential relationships surrounding an entity or event.</p><p>Consider a corporate analysis scenario:</p><pre><code>MATCH (c:Company {name:&#8221;Atlas Holdings&#8221;})
OPTIONAL MATCH (c)-[:OWNS]-&gt;(subsidiary)
OPTIONAL MATCH (c)-[:HAS_SUPPLIER]-&gt;(supplier)
OPTIONAL MATCH (c)-[:OPERATES_IN]-&gt;(region)
RETURN c, collect(subsidiary), collect(supplier), collect(region)</code></pre><p>This query produces a structural summary of the company&#8217;s network.</p><p>Graph algorithms can enrich this summary further by identifying communities, influential nodes or important paths.</p><p>Once the summary is assembled it becomes context for an AI model. The language model interprets the relationships and generates explanations.</p><p>In many modern AI architectures this workflow becomes the practical alternative to heavy logical reasoning.</p><h2>9.1 Example: Ontology Reasoning vs Context Graph Reasoning</h2><p>The difference between ontology reasoning and contextual graph reasoning becomes clearer through practical examples.</p><p>Consider a regulatory risk scenario. An organisation must identify companies whose supply chains depend on suppliers located in politically unstable regions.</p><p>An ontology-driven approach might encode rules describing supplier relationships, geographic hierarchies and risk classifications. A reasoning engine would evaluate these rules to derive indirect relationships.</p><p>A property graph approach can often express the same analysis through a structural query.</p><pre><code>MATCH (supplier:Supplier)-[:LOCATED_IN]-&gt;(region:Region)
MATCH (company:Company)-[:DEPENDS_ON]-&gt;(supplier)
WHERE region.riskLevel = &#8220;High&#8221;
RETURN company, supplier, region</code></pre><p>The result is a contextual subgraph describing the relationship between companies, suppliers and regions.</p><p>A language model can interpret this structure and generate a narrative explanation describing the supply chain risk.</p><p>A similar approach appears in financial investigations. Transaction graphs allow analysts to identify suspicious patterns such as circular money flows.</p><pre><code>MATCH (a1:Account)-[:TRANSFERRED_TO]-&gt;(a2)
MATCH (a2)-[:TRANSFERRED_TO]-&gt;(a3)
MATCH (a3)-[:TRANSFERRED_TO]-&gt;(a1)
RETURN a1, a2, a3</code></pre><p>The graph identifies structural patterns while the AI system interprets them.</p><h1>10. The Architectural Shift in Enterprise Graph Systems</h1><p>Modern enterprise graph architectures increasingly follow a layered design.</p><p>At the foundation lies the graph database. In many operational deployments this layer uses the Labelled Property Graph model because it supports efficient relationship traversal and flexible schema evolution.</p><p>Above the database sits the graph processing layer, which includes algorithms for community detection, centrality analysis and path finding.</p><p>The next layer retrieves and summarises contextual subgraphs relevant to a particular question.</p><p>Finally an artificial intelligence layer interprets the retrieved structure and produces explanations or insights.</p><p>In this architecture semantics emerge from the interaction between graph structure and AI interpretation rather than being derived exclusively from formal ontologies.</p><h1>11. Questions from RDF Practitioners</h1><h2>Where does meaning come from if there is no ontology?</h2><p>In operational graph systems meaning often emerges from the structure of relationships rather than from explicit axioms.</p><pre><code>CREATE (p:Product {name:&#8221;Battery Pack&#8221;})
CREATE (c:Component {name:&#8221;Lithium Cell&#8221;})
CREATE (p)-[:CONTAINS]-&gt;(c)</code></pre><p>Even without a formal ontology the relationship expresses a clear dependency between entities.</p><p>Language models interpret such relationships easily because they resemble natural language expressions.</p><h2>How is interoperability preserved?</h2><p>Many systems combine RDF identifiers with property graph structures.</p><pre><code>CREATE (:Product {uri:&#8221;http://example.com/product/123&#8221;})</code></pre><p>The graph retains global identifiers while supporting operational queries.</p><h2>What about logical consistency?</h2><p>Operational systems often enforce constraints through data pipelines and validation rules.</p><p>For example:</p><pre><code>MATCH (p:Product)-[:BELONGS_TO]-&gt;(c:Category)
RETURN p, count(c)</code></pre><p>Validation rules ensure each product belongs to one category.</p><h2>Are RDF knowledge graphs becoming obsolete?</h2><p>No. RDF continues to play an important role in data integration, vocabulary definition and linked data publication.</p><p>However operational analytics and AI systems increasingly rely on graph models optimised for traversal and contextual retrieval.</p><h1>12. Conclusion</h1><p>The Semantic Web introduced the idea that machines could understand meaning through formal ontologies and logical reasoning. This vision produced a rich ecosystem of semantic technologies.</p><p>The rise of artificial intelligence systems, particularly large language models, introduces a different architectural paradigm.</p><p>In many modern systems graphs act as structured context for AI models rather than as engines of formal inference.</p><p>The Labelled Property Graph model and the architecture of the Applied Knowledge Graph align naturally with this approach. They emphasise relationships, flexible modelling and operational querying.</p><p>Meaning in these systems emerges from the interaction between graph structure and AI interpretation.</p><p>For practitioners, this represents not the end of semantic technologies but the evolution of knowledge graphs into foundational infrastructure for intelligent systems.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!xTyV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!xTyV!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!xTyV!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!xTyV!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!xTyV!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!xTyV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2625144,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/191123332?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!xTyV!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!xTyV!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!xTyV!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!xTyV!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8531c44-eb96-4678-8a33-f8b8ec57ac1a_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Labelled Property Graphs, GraphRAG and Text2Query]]></title><description><![CDATA[Why Natural Language Interfaces to Graphs Often Fail and What Graph Architecture Has to Do With It]]></description><link>https://sergeyvasiliev.substack.com/p/labelled-property-graphs-graphrag</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/labelled-property-graphs-graphrag</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Fri, 06 Mar 2026 10:23:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tA2D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of Contents</strong></p><ol><li><p>Introduction and Problem Context</p></li><li><p>Historical Background of Graph Query Interfaces</p></li><li><p>GraphRAG and Natural Language Knowledge Access</p></li><li><p>Graph Models and Text2Query Behaviour: RDF vs Labelled Property Graph</p></li><li><p>Failure Modes of Text2Query Pipelines</p></li><li><p>Query Planning Versus Query Generation</p></li><li><p>Why Most GraphRAG Implementations Misuse Text2Query</p></li><li><p>Applied Knowledge Graph as the Structural Foundation</p></li><li><p>Summary</p></li></ol><div><hr></div><h1>1. Introduction and Problem Context</h1><p>The rapid development of large language models has renewed interest in natural language interfaces for structured data systems. Instead of forcing users to write formal queries, modern systems aim to allow interaction using conversational or descriptive language.</p><p>In graph-based information systems this paradigm is usually implemented through Text2Query pipelines. A user expresses a question in natural language and the system interprets the request, converts it into a graph query and executes that query against a graph database. The results are then used to generate a final answer.</p><p>Graph Retrieval Augmented Generation architectures extend classical retrieval augmented generation by using graph traversal as the retrieval mechanism. Instead of retrieving document fragments from vector stores, these systems retrieve structured knowledge neighbourhoods.</p><p>Despite the intuitive simplicity of this approach, production deployment remains challenging.</p><p>The main difficulty is not syntax generation. Modern language models can usually generate syntactically valid queries. The core problem lies in semantic alignment between human intent and graph traversal logic.</p><p>Natural language rarely specifies exact traversal constraints. Users typically express relationships between entities without describing implementation-level details such as hop counts, relationship directionality or aggregation rules.</p><p>A successful system must therefore bridge the gap between descriptive language and deterministic graph execution.</p><p>A key enabler of such systems is the use of an Applied Knowledge Graph. An Applied Knowledge Graph is a graph model designed specifically for operational reasoning rather than passive storage of connected entities. In this architecture, taxonomy structure, relationship semantics and property schema design are treated as first-class engineering concerns.</p><p>Systems built on Applied Knowledge Graph principles tend to demonstrate more reliable Text2Query behaviour because the graph topology itself encodes reasoning constraints.</p><h1>2. Historical Background of Graph Query Interfaces</h1><p>Early attempts to build natural language interfaces for databases focused primarily on relational systems.</p><p>These systems attempted to translate English questions into SQL queries. The difficulty of the task became evident because it required solving multiple complex problems simultaneously.</p><p>First, the system had to understand the meaning of the question.</p><p>Second, it had to map linguistic expressions to database schema elements.</p><p>Third, it had to construct a valid query execution plan.</p><p>Each of these tasks is difficult in isolation. Combining them into a single pipeline produced unstable behaviour, which is why natural language database interfaces remained largely experimental.</p><p>Graph databases changed the modelling paradigm by explicitly representing relationships between entities.</p><p>Two major modelling approaches emerged.</p><p>The Resource Description Framework (RDF) represents knowledge as subject, predicate and object triples. This model is particularly useful for semantic web applications and ontology reasoning.</p><p>The Labelled Property Graph (LPG) model represents knowledge using nodes, relationships and local properties attached directly to graph elements.</p><p>From a Text2Query engineering perspective, the LPG model often provides a more practical interface for language model integration because traversal paths are explicit.</p><p>ISO Graph Query Language (GQL) is emerging as a standardised query language for LPG databases. Although vendor implementations are still evolving, the pattern matching semantics of GQL are well suited for language model query synthesis.</p><h1>3. GraphRAG and Natural Language Knowledge Access</h1><p>GraphRAG extends retrieval augmented generation by integrating graph traversal into the retrieval stage.</p><p>Traditional retrieval augmented generation focuses on document similarity search. GraphRAG instead retrieves structured knowledge fragments by exploring relationships between entities.</p><p>The architecture can be described as a multi stage pipeline.</p><ul><li><p>First, the system interprets the user question.</p></li><li><p>Second, it determines the semantic intent of the request.</p></li><li><p>Third, it plans how the graph should be traversed to obtain relevant knowledge.</p></li><li><p>Fourth, the graph database executes the traversal.</p></li><li><p>Finally, the retrieved structured context is used by the language model to generate the final answer.</p></li></ul><p>One important engineering principle is that GraphRAG systems should not attempt to generate complex traversal queries for every question.</p><p>In many cases neighbourhood retrieval is sufficient. For example, if a question concerns a specific entity, retrieving its surrounding relationships may already provide enough context.</p><p>Dynamic traversal synthesis should be reserved for analytical queries that require multi-hop reasoning across the graph.</p><h1>4. Graph Models and Text2Query Behaviour: RDF vs Labelled Property Graph</h1><p>Natural language questions tend to describe relationship paths rather than isolated entities.</p><p>Consider the question:</p><p>Which projects depend on systems maintained by teams located in Germany?</p><p>The implicit conceptual path is:</p><p><code>Project &#8594; System &#8594; Team &#8594; Country</code></p><p>In a LPG, this path can be represented directly using pattern-matching traversal syntax.</p><p>Example GQL pattern:</p><pre><code>MATCH
  (p:Project)-[:DEPENDS_ON]-&gt;(s:System)
  -[:MAINTAINED_BY]-&gt;(t:Team)
  -[:LOCATED_IN]-&gt;(c:Country)
WHERE c.name = &#8216;Germany&#8217;
RETURN p.name</code></pre><p>This structure mirrors the narrative structure of the question itself.</p><p>Node properties such as names, categories and identifiers are stored locally on graph elements. This simplifies mapping linguistic references to graph schema attributes.</p><p>Relationship properties are also important in operational knowledge modelling.</p><p>For example, delivery delay metrics, confidence scores or temporal validity indicators can be stored directly on relationships.</p><pre><code>MATCH
  (s:Supplier)-[d:DELIVERED]-&gt;(p:Product)
WHERE p.category = &#8216;Battery&#8217;
  AND d.delay_days &gt; 5
RETURN s.name, d.delay_days
ORDER BY d.delay_days DESC</code></pre><p>In RDF-based models, similar structures often require reification patterns or intermediate nodes. These modelling patterns increase query synthesis complexity because language models must reconstruct auxiliary structural elements.</p><h1>5. Failure Modes of Text2Query Pipelines</h1><p>Several characteristic failure patterns appear in production Text2Query systems.</p><ul><li><p>The first is hallucinated schema construction. Language models may generate node labels, relationship names or property keys that do not exist in the graph schema. This problem is particularly common when schema grounding is weak or absent.</p></li><li><p>The second is traversal uncertainty. Natural language questions rarely specify how far graph traversal should continue. The system must therefore decide traversal depth and pruning strategy.</p></li><li><p>The third failure pattern is misuse of graph traversal for simple filtering tasks. Some implementations reduce graph retrieval to property text matching. This effectively turns the graph database into a keyword search index and removes the advantages of graph topology.</p></li><li><p>The fourth issue is operational governance. Automatically generated queries can be expensive to execute or may expose data that should remain restricted. Production systems therefore, require execution safety layers.</p></li></ul><p>These safety layers should include query complexity estimation, traversal depth limitation, policy enforcement checks and sandboxed execution environments.</p><h1>6. Query Planning Versus Query Generation</h1><p>Query planning and query generation are fundamentally different computational tasks.</p><p>Query generation focuses primarily on constructing syntactically correct query strings. This task is mostly a language modelling problem.</p><p>Query planning is more complex. It requires semantic reasoning about how information is distributed across the graph and how traversal should be performed to obtain meaningful results.</p><p>Planning must answer several questions before query construction begins.</p><p>The system must determine the starting entity or entities relevant to the user request. For example, if a user asks about suppliers, the planner must identify which supplier nodes are relevant.</p><p>The planner must also determine which relationships should be traversed. In an enterprise graph there may be multiple relationship types connecting entities. Selecting the correct relationship path is essential for obtaining meaningful results.</p><p>Traversal horizon is another important planning parameter. Some questions require only one hop traversal, while others require multi-hop reasoning across multiple entity types.</p><p>Aggregation semantics must also be planned. Questions such as &#8220;largest supplier&#8221; or &#8220;most delayed delivery&#8221; require the system to determine which metric defines the comparison.</p><p>Temporal constraints are also common. Expressions such as &#8220;recent&#8221;, &#8220;last quarter&#8221; or &#8220;historically&#8221; must be mapped to explicit temporal filters.</p><p>Modern GraphRAG architectures increasingly resemble planning systems rather than pure query translators.</p><p>Language models are used to interpret intent and help synthesise reasoning context, but deterministic planning layers are responsible for traversal strategy construction.</p><h1>7. Why Most GraphRAG Implementations Misuse Text2Query</h1><p>Many GraphRAG systems treat Text2Query as the primary retrieval mechanism.</p><p>This design assumption is often incorrect.</p><p>In production knowledge systems, retrieval should be primarily driven by structural graph exploration rather than dynamic query synthesis alone.</p><p>The most common mistake is attempting to solve interpretation, planning and query construction inside a single model inference step.</p><p>This approach increases hallucination probability because the model must simultaneously perform semantic understanding, schema mapping and traversal logic construction.</p><p>Another frequent problem is excessive reliance on prompt schema injection. Some implementations attempt to solve grounding by inserting entire graph schemas into prompts.</p><p>This approach is inefficient for large enterprise graphs because schema size can be significant. More importantly, it introduces noise into the prompt context and increases the probability that the model will generate relationships that do not exist.</p><p>A third common problem is treating graph databases as semantic search indices rather than structural reasoning systems.</p><p>If traversal logic is ignored and only property text matching is performed, the graph database behaves similarly to a document store.</p><p>In such cases the engineering value of graph topology is lost.</p><h1>8. Applied Knowledge Graph as the Structural Foundation</h1><p>The reliability of GraphRAG and Text2Query systems depends primarily on knowledge modelling quality.</p><p>An Applied Knowledge Graph is a graph structure designed to support operational reasoning. Knowledge modelling discipline is therefore more important than model size or embedding dimensionality.</p><p>AKG design requires several principles.</p><ul><li><p>First, taxonomy structure must be stable. Node labels should represent meaningful domain categories that do not change frequently.</p></li><li><p>Second, relationship semantics must be explicitly defined. Relationship names should describe operational meaning rather than being artefacts of extraction pipelines.</p></li><li><p>Third, property schema design must be controlled. Properties should follow consistent naming conventions and data typing rules.</p></li><li><p>Fourth, traversal paths should reflect real world reasoning patterns. Graph topology should encode domain logic rather than simply storing extracted connections.</p></li></ul><p>Many knowledge graphs built through automated document extraction fail to meet these criteria. Although such graphs may contain entities and relationships, they often lack operational semantics.</p><p>Without operational semantics traversal queries cannot reliably capture domain reasoning.</p><h1>9. Summary</h1><ul><li><p>Natural language interaction with graph databases is becoming increasingly important as LLM are integrated into enterprise knowledge (EKG) platforms.</p></li><li><p>Reliable Text2Query and GraphRAG behaviour is primarily a knowledge modelling problem rather than a purely machine learning problem.</p></li><li><p>The labelled property graph (LPG) model provides a practical foundation for conversational graph interaction because its traversal patterns align closely with narrative relationship descriptions.</p></li><li><p>ISO GQL pattern matching semantics further support language model query synthesis.</p></li><li><p>Applied Knowledge Graph (AKG) design is a key enabler of production grade GraphRAG systems. Future enterprise knowledge architectures will likely combine three components.</p></li><li><p>Structured AKGs will serve as the reasoning backbone.</p></li><li><p>Language models will focus on intent interpretation and answer synthesis.</p></li><li><p>Controlled planning layers will be responsible for traversal construction and execution governance.</p></li><li><p>The long term objective is not conversational query generation alone but reliable operational reasoning over structured enterprise knowledge.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!tA2D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!tA2D!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!tA2D!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!tA2D!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!tA2D!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!tA2D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2295220,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/190088458?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!tA2D!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!tA2D!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!tA2D!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!tA2D!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5718c6b-83d2-4058-ac10-26de40d5d0b0_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[RDF Is a Knowledge Representation Model. LPG Is a Decision Infrastructure.]]></title><description><![CDATA[Table of Contents]]></description><link>https://sergeyvasiliev.substack.com/p/rdf-is-a-knowledge-representation</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/rdf-is-a-knowledge-representation</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Mon, 02 Mar 2026 12:59:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8g3y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of Contents</strong></p><ol><li><p>Introduction</p></li><li><p>The Category Mistake in the LPG versus RDF Debate</p></li><li><p>What RDF Actually Optimises For</p></li><li><p>What LPG Actually Optimises For</p></li><li><p>Knowledge Representation versus Decision Infrastructure</p></li><li><p>GraphRAG as a Stress Test</p></li><li><p>Applied Knowledge Graph Revisited</p></li><li><p>Where RDF Excels</p></li><li><p>Where LPG Dominates</p></li><li><p>Architectural Consequences</p></li><li><p>Conclusion</p></li></ol><div><hr></div><h1><strong>1. Introduction</strong></h1><p>The debate between a Labelled Property Graph (LPG) and RDF has been ongoing for more than a decade. It is often framed as a question of which model is more expressive, more semantic, or more suitable for a Knowledge Graph. That framing misses a more important distinction.</p><p>RDF, standardised by the World Wide Web Consortium, is fundamentally a knowledge representation framework. It defines how facts are expressed and how those facts can be interpreted through formal semantics. A LPG, by contrast, is a structural model optimised for computation over relationships.</p><p>In the current landscape of AI systems, this difference is no longer theoretical. When graphs power retrieval pipelines, digital twins, decision support systems, or contextual reasoning engines, their runtime behaviour matters more than their declarative purity. The question shifts from how knowledge is represented to how decisions are enabled.</p><p>This article argues that RDF and LPG operate at different architectural layers. One formalises meaning. The other operationalises context.</p><h1><strong>2. The Category Mistake in the LPG versus RDF Debate</strong></h1><p>Most discussions comparing LPG and RDF assume they compete for the same architectural role. This assumption is rarely examined and almost never justified.</p><p>RDF defines a formal data model grounded in model theory. It specifies how statements can be interpreted and how entailments may be derived. LPG defines a structural graph model in which nodes and relationships are explicit and property bearing. It specifies how connected data is organised and traversed.</p><p>These are fundamentally different design problems.</p><p>When LPG is criticised for lacking formal semantics, it is being evaluated against criteria it was not designed to satisfy. When RDF is criticised for operational complexity in traversal heavy workloads, it is being evaluated as though it were intended to be a high-performance relationship processing engine.</p><p>The category error lies in collapsing three distinct layers:</p><ul><li><p>Semantic layer: how meaning is defined and aligned.</p></li><li><p>Structural layer: how entities and relationships are physically organised.</p></li><li><p>Operational layer: how the system behaves under analytical and decision workloads.</p></li></ul><p>RDF tightly integrates semantic and structural concerns around triple representation. LPG separates structural representation from formal semantic commitments and instead optimises for operational graph behaviour.</p><p>The result is predictable. RDF excels when the central concern is shared meaning and logical entailment. LPG excels when the central concern is relational computation and contextual evaluation.</p><p>Debating which is &#8220;better&#8221; without specifying the layer under discussion leads to conceptual noise. The real question is which architectural layer is dominant in the system being built.</p><h1><strong>3. What RDF Actually Optimises For</strong></h1><p>RDF represents information as subject, predicate, object triples. This atomic structure ensures that every statement is individually addressable and semantically precise. It supports globally unique identifiers through IRIs, enabling cross system reference and integration.</p><p>Through RDFS and OWL, RDF allows inference rules to derive new facts from existing ones. This makes it powerful for domains where logical consistency and ontological rigour are essential. Healthcare terminologies, regulatory reporting, and cross organisational data exchange are typical examples.</p><p>The trade off is structural fragmentation. A simple real world relationship may require multiple triples. If that relationship has attributes such as time validity, confidence, or provenance, reification or additional modelling constructs are required. Querying complex patterns often involves multiple joins across triples that reconstruct adjacency at runtime.</p><p>RDF excels at expressing meaning in a machine interpretable way. It was designed for distributed semantic integration across the web. It was not designed primarily as a high velocity decision engine.</p><h2><strong>3.1 Code Examples</strong></h2><p><strong>Example Domain</strong></p><p>Assume a simple domain:</p><ul><li><p>Alice works for Acme Ltd</p></li><li><p>Her role is Risk Analyst</p></li><li><p>The employment is valid from 2022-01-01</p></li><li><p>Confidence score is 0.92</p></li></ul><h3><strong>3.1.1 Basic RDF Triple Representation</strong></h3><p>In RDF Turtle syntax:</p><p><code>@prefix ex: &lt;http://example.org/&gt; .<br>@prefix xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt; .<br><br>ex:Alice ex:worksFor ex:AcmeLtd .<br>ex:Alice ex:hasRole ex:RiskAnalyst </code>.</p><p>This expresses atomic facts. It is semantically precise. Each statement is independently addressable.</p><h3><strong>3.1.2 Adding Relationship Attributes in RDF (Reification Pattern)</strong></h3><p>Now we need:</p><ul><li><p>Validity period</p></li><li><p>Confidence score</p></li></ul><p>RDF does not allow properties directly on predicates. Therefore we introduce a resource to represent the employment relation.</p><p><code>ex:Employment123<br> a ex:Employment ;<br> ex:employee ex:Alice ;<br> ex:employer ex:AcmeLtd ;<br> ex:role ex:RiskAnalyst ;<br> ex:validFrom &#8220;2022-01-01&#8221;^^xsd:date ;<br> ex:confidence &#8220;0.92&#8221;^^xsd:decimal .</code></p><p>The original simple triple:</p><p><code>ex:Alice ex:worksFor ex:AcmeLtd .</code></p><p>is now replaced or complemented by an intermediate node.</p><p>This is semantically clean. The employment becomes a first-class resource. It can be reasoned about, classified, or extended.</p><p>However, structurally:</p><ul><li><p>Adjacency between Alice and AcmeLtd is indirect.</p></li><li><p>Queries must traverse via Employment123.</p></li><li><p>The model grows in triple count.</p></li></ul><p><strong>3.1.3 Querying in SPARQL</strong></p><p>To retrieve Alice&#8217;s employer with validity and confidence:</p><p><code>SELECT ?employer ?validFrom ?confidence<br>WHERE {<br> ?employment a ex:Employment ;<br> ex:employee ex:Alice ;<br> ex:employer ?employer ;<br> ex:validFrom ?validFrom ;<br> ex:confidence ?confidence .<br>}</code></p><p>This is expressive and standardised. It supports reasoning if RDFS or OWL rules are applied.</p><p>The optimisation target here is semantic correctness and interoperable statement modelling.</p><h1><strong>4. What LPG Actually Optimises For</strong></h1><p>A LPG models nodes and relationships as first class objects. Both can carry properties. Nodes can have multiple labels. Relationships are directed and explicitly connect two nodes.</p><p>This modelling choice introduces several optimisation characteristics.</p><ul><li><p>First, explicit adjacency. Connections are materialised directly in the graph structure. Traversing from one node to its neighbours does not require reconstructing relationships from atomic statements. Multi hop navigation is therefore structurally aligned with storage.</p></li><li><p>Second, relationship property locality. In many real world domains, the relationship is as important as the entity. Time validity, weight, status, provenance, probability, and confidence are properties of relationships. In LPG, these attributes are native to the edge. This supports modelling of dynamic, weighted, and temporal networks without indirection.</p></li><li><p>Third, identity stability. Nodes are distinct entities with persistent identity. This simplifies entity resolution, deduplication, and incremental updates. It also aligns with how AI systems anchor references during contextual retrieval.</p></li><li><p>Fourth, schema flexibility with controlled structure. Labels provide lightweight typing without enforcing rigid ontology structures. This enables iterative evolution of the model while preserving structural clarity. Engineers can evolve domains without destabilising the entire graph.</p></li><li><p>Fifth, alignment with graph algorithms. Most graph data science techniques assume nodes and edges with weights or attributes. Centrality, community detection, similarity scoring, and path finding operate directly on the structural representation. LPG aligns naturally with these assumptions.</p></li><li><p>Sixth, mutation efficiency. Decision systems frequently update state. Transactions, risk scores, event outcomes, and relationship statuses change over time. LPG structures support incremental updates at node and edge level without reconstructing declarative statement sets.</p></li><li><p>Seventh, subgraph materialisation efficiency. Many operational systems require extraction of bounded contextual neighbourhoods. LPG&#8217;s structure makes subgraph extraction conceptually and computationally straightforward.</p></li></ul><p>These optimisations do not imply superiority in all contexts. They reflect a different optimisation target: relational computation under evolving state conditions. That target corresponds closely to decision infrastructure requirements.</p><h2><strong>4.1 Code Examples</strong></h2><p><strong>Example Domain</strong></p><p>Assume a simple domain:</p><blockquote><ul><li><p>Alice works for Acme Ltd</p></li><li><p>Her role is Risk Analyst</p></li><li><p>The employment is valid from 2022-01-01</p></li><li><p>Confidence score is 0.92</p></li></ul></blockquote><h3><strong>4.1.1 Basic LPG Representation (Cypher)</strong></h3><p>In a property graph model:</p><p><code>CREATE (a:Person {name: &#8220;Alice&#8221;})<br>CREATE (c:Company {name: &#8220;Acme Ltd&#8221;})<br>CREATE (a)-[:WORKS_FOR]-&gt;(c)</code></p><p>The relationship is explicit and directly connects the two nodes.</p><h3><strong>4.1.2 Adding Relationship Properties</strong></h3><p>Now include role, validity, and confidence directly on the edge:</p><p><code>MATCH (a:Person {name: &#8220;Alice&#8221;})<br>MATCH (c:Company {name: &#8220;Acme Ltd&#8221;})<br>CREATE (a)-[:WORKS_FOR {<br> role: &#8220;Risk Analyst&#8221;,<br> validFrom: date(&#8221;2022-01-01&#8221;),<br> confidence: 0.92<br>}]-&gt;(c)</code></p><p>No intermediate node is required.</p><p>The relationship remains:</p><ul><li><p>Direct</p></li><li><p>Navigable</p></li><li><p>Attribute rich</p></li></ul><p>Adjacency is preserved as a first-class structural property.</p><h3><strong>4.1.3 Querying in Cypher</strong></h3><p>To retrieve employer and edge attributes:</p><p><code>MATCH (a:Person {name: &#8220;Alice&#8221;})-[r:WORKS_FOR]-&gt;(c:Company)<br>RETURN <br> c.name AS employer,<br> r.role AS role,<br> r.validFrom AS validFrom,<br> r.confidence AS confidence</code></p><p>This pattern aligns directly with how the graph is stored:</p><ul><li><p>Node &#8594; relationship &#8594; node</p></li><li><p>Relationship carries metadata natively</p></li></ul><h3><strong>4.1.4 Multi Hop Traversal Example</strong></h3><p>Suppose we want to find companies connected through shared employees.</p><p><code>MATCH <br> (p:Person)-[:WORKS_FOR]-&gt;(c1:Company),<br> (p)-[:WORKS_FOR]-&gt;(c2:Company)<br>WHERE c1 &lt;&gt; c2<br>RETURN DISTINCT c1.name, c2.name</code></p><p>Traversal logic mirrors conceptual adjacency.</p><h1><strong>5. Knowledge Representation versus Decision Infrastructure</strong></h1><p>Knowledge representation is concerned with formal meaning. It asks how facts can be encoded so that machines interpret them consistently. It focuses on ontology design, logical consistency, entailment rules, and semantic interoperability.</p><p>Decision infrastructure is concerned with system behaviour under evaluation pressure. It asks how context is assembled, how constraints are checked, how relationships are weighted, and how outcomes are produced.</p><p>The distinction becomes clearer when examining real systems.</p><p>A regulatory knowledge base prioritises definitional clarity and logical validation. It may tolerate slower traversal if semantic correctness is paramount.</p><p>A fraud detection engine must traverse transaction networks rapidly, compute centrality, evaluate temporal patterns, and update risk scores in near real time. Logical completeness is less important than contextual responsiveness.</p><p>An AI assistant grounded in enterprise data must extract relevant neighbourhoods quickly, filter by temporal validity, and assemble coherent context windows for prompt construction. The graph functions as a contextual accelerator.</p><p>These are infrastructure requirements.</p><p>Decision infrastructure must handle:</p><ul><li><p>Continuous mutation of state</p></li><li><p>Temporal modelling of validity and change</p></li><li><p>High frequency traversal across dense neighbourhoods</p></li><li><p>Integration with analytical and machine learning workflows</p></li><li><p>Operational latency constraints</p></li></ul><p>Knowledge representation does not disappear in such systems. It remains essential for conceptual clarity. However, it becomes one component within a broader operational architecture.</p><p>RDF formalises how meaning is expressed and reasoned about. LPG frequently underpins how relational context is computed and evaluated.</p><p>Confusing these concerns leads to over engineered semantic systems that struggle operationally, or high performance graph systems with unmanaged conceptual drift. Recognising the distinction enables deliberate architectural layering rather than ideological positioning.</p><h1><strong>6. GraphRAG as a Stress Test</strong></h1><p>GraphRAG pipelines combine large language models with structured graph retrieval. In such architectures, the graph is not a passive store of facts. It becomes a dynamic context provider that shapes what the model sees, how it reasons, and ultimately what it outputs.</p><p>A typical GraphRAG flow includes entity extraction, entity resolution, neighbourhood expansion, path evaluation, filtering by relationship attributes, optional graph algorithm execution, and finally structured context assembly for prompt construction. Each of these steps exercises the underlying graph model differently.</p><p>The key requirement is not logical entailment in the classical sense. It is contextual density. The system must quickly assemble a coherent subgraph that captures relevant entities, their relationships, their attributes, and often their temporal state. This subgraph is not a theoretical construct. It is an operational object that directly influences downstream AI behaviour.</p><p>In a triple based system, adjacency is implicit. It must be reconstructed by joining triples on shared identifiers. If relationships carry attributes such as confidence scores, weights, time ranges, or provenance, these must be expressed through additional triples or reification patterns. Query complexity grows, and the mental model for engineers becomes less direct.</p><p>In a property graph, adjacency is explicit and physically aligned with storage. Relationship properties are native. Weighted edges, temporal validity, and contextual attributes are directly attached to the edge. Subgraph extraction corresponds closely to the physical structure of the graph. This reduces impedance between conceptual query and runtime execution.</p><p>GraphRAG therefore acts as a stress test. It exposes whether a graph model behaves naturally under iterative traversal, attribute filtering, and path based scoring. It reveals whether the graph is merely a representational layer or a true computational substrate.</p><p>It is not that RDF cannot support GraphRAG. It clearly can. The question is where the optimisation pressure sits. RDF optimises for semantic precision and interoperability. GraphRAG optimises for contextual retrieval and decision support under time constraints. The difference becomes visible under load, not in theoretical comparison.</p><p>When the graph is part of an AI control loop, runtime characteristics are no longer secondary. They define system viability.</p><h1><strong>7. Applied Knowledge Graph Revisited</strong></h1><p>The term Applied Knowledge Graph (AKG) suggests a transition from abstract modelling to practical use. However, the phrase often obscures more than it clarifies.</p><p>A Knowledge Graph, in the classical sense, emphasises semantic modelling, ontology alignment, and formal representation of meaning. When the term Applied is added, it implies that the graph now supports operational decisions, analytics, or AI systems.</p><p>The problem is that application is not a property of the data model. It is a property of the architecture in which the model participates.</p><p>A graph becomes applied when it sits inside a decision loop. It influences credit scoring, fraud detection, recommendation ranking, risk evaluation, or regulatory reporting. In these systems, the graph must handle state changes, temporal validity, incremental updates, and often streaming inputs. It must integrate with machine learning pipelines and support iterative experimentation.</p><p>This is where the distinction between representation and infrastructure becomes critical.</p><p>RDF based architectures can certainly underpin applied systems. In domains where formal ontologies are non negotiable, this may be the correct choice. However, such systems often introduce auxiliary layers for caching, analytics, or traversal heavy workloads. The representation layer remains semantically rigorous, but operational concerns are handled elsewhere.</p><p>LPG based architectures often collapse this separation. The same graph that stores the domain model also powers traversal, scoring, community detection, and contextual retrieval. The structural alignment between data model and computational needs reduces architectural friction.</p><p>Calling something an AKG does not resolve this structural difference. It simply labels a usage context.</p><p>A more precise framing is this: RDF formalises knowledge for interoperability and reasoning. LPG frequently functions as the operational backbone of decision systems. Both can participate in applied architectures, but they enter from different design assumptions.</p><p>Understanding this distinction prevents conceptual inflation. It also clarifies why certain systems scale naturally under decision pressure while others require compensating layers. The debate is not about which model is more intelligent. It is about which model aligns structurally with the demands of real time, AI driven, decision centric systems.</p><h1><strong>8. Where RDF Excels</strong></h1><p>RDF remains the most robust standard for semantic interoperability. Its global identifier model enables integration across organisations and domains. Ontologies allow shared understanding of concepts and relationships.</p><p>In environments where regulatory compliance, cross-border data exchange, or standards alignment are central, RDF provides unmatched formal grounding. It supports logical validation and inferencing in a principled way.</p><p>For publishing linked data at web scale, RDF is the natural foundation. Its design assumptions were shaped by precisely that challenge.</p><p>In these contexts, LPG does not replace RDF. It solves a different problem.</p><h1><strong>9. Where LPG Dominates</strong></h1><p>LPG dominates when the graph is an active computational substrate. Fraud detection, recommendation systems, supply chain optimisation, and digital twins require high-performance traversal and mutation.</p><p>Graph data science workflows operate directly on nodes and relationships with properties. Relationship weighting, path scoring, and community detection are native operations in property graph engines.</p><p>In AI systems built around GraphRAG, the graph functions as a contextual accelerator. It must deliver dense, coherent subgraphs quickly. The property graph model aligns directly with this need.</p><p>In such scenarios, semantic elegance without computational efficiency becomes insufficient. The infrastructure must sustain load, mutation, and analysis simultaneously.</p><h1><strong>10. Architectural Consequences</strong></h1><p>If RDF is a knowledge representation model and LPG is a decision infrastructure, then architecture must reflect that separation explicitly. Treating them as interchangeable leads to systems that are either semantically over engineered or operationally constrained.</p><p><strong>The first consequence is layered responsibility.</strong></p><p>A mature graph architecture distinguishes between:</p><ul><li><p>A semantic alignment layer</p></li><li><p>A structural and operational graph layer</p></li><li><p>An analytical and AI execution layer</p></li></ul><p>In this model, RDF naturally occupies the semantic alignment layer. It defines canonical vocabularies, ontologies, and cross-domain mappings. It ensures that the concept of Customer, Policy, Risk Event, or Legal Obligation carries a stable meaning across organisational boundaries.</p><p>LPG naturally occupies the operational graph layer. It materialises entities and relationships in a way that supports traversal, filtering, scoring, and mutation under runtime conditions. It encodes topology in a form directly usable by decision systems.</p><p>Above that, analytics and AI components consume the operational graph. Graph algorithms, feature extraction pipelines, and GraphRAG orchestration rely on the structural characteristics of the LPG layer.</p><p><strong>The second consequence is</strong> <strong>clear optimisation boundaries</strong>.</p><p>If RDF is used as the primary operational store in traversal heavy systems, architects must compensate for structural indirection with caching layers, denormalised projections, or auxiliary graph engines. This increases complexity and introduces additional synchronisation challenges.</p><p>If LPG is used without semantic governance, conceptual drift can occur. Labels may proliferate without formal alignment. Domain meaning becomes implicit in engineering conventions rather than explicitly managed in ontologies.</p><p>Recognising the different optimisation targets allows architects to avoid forcing one model to satisfy incompatible constraints.</p><p><strong>The third consequence concerns</strong> <strong>evolution and change management</strong>.</p><p>Semantic models evolve through ontology versioning and governance processes. Changes are deliberate and controlled. Operational graph models evolve through product iteration, new features, and shifting decision logic. Changes are frequent and often incremental.</p><p>By separating semantic representation from operational structure, organisations can allow rapid evolution in the decision layer while preserving stability in the semantic layer. This reduces friction between governance and engineering velocity.</p><p><strong>The fourth consequence is</strong> <strong>AI system design clarity</strong>.</p><p>In AI grounded systems, especially those using GraphRAG, the graph is part of the control loop. It selects context, constrains generation, and sometimes provides structured evidence for outputs.</p><p>If the graph is treated purely as a semantic store, engineers may underestimate the performance requirements of contextual retrieval. If it is treated purely as a high performance graph without semantic discipline, AI outputs may reflect inconsistent or poorly aligned domain meaning.</p><p>A layered architecture makes responsibilities explicit:</p><ul><li><p>RDF or equivalent semantic frameworks ensure conceptual integrity.</p></li><li><p>LPG ensures computational integrity.</p></li><li><p>AI components orchestrate contextual reasoning using the operational graph.</p></li></ul><p><strong>The fifth consequence is</strong> <strong>organisational alignment</strong>.</p><p>Semantic web specialists, ontology engineers, and standards bodies often focus on RDF centric concerns. Data engineers, graph data scientists, and AI engineers focus on traversal, scoring, and performance.</p><p>When the architecture clarifies that these are complementary layers rather than competing ideologies, collaboration improves. Each discipline understands where its optimisation effort belongs.</p><p><strong>Finally, there is a strategic consequence.</strong></p><p>As enterprises move towards decision intelligence systems, digital twins, and AI augmented workflows, the graph increasingly becomes a real time evaluation engine. In such systems, infrastructure properties dominate design discussions. Latency, scalability, mutation handling, and algorithmic integration are primary constraints.</p><p>Recognising LPG as decision infrastructure does not demote RDF. It positions RDF where it is strongest: defining meaning and ensuring interoperability. It positions LPG where it is strongest: enabling computation over relational context at scale.</p><p>Architectural maturity is not choosing sides. It is understanding which layer solves which problem, and designing systems that respect those boundaries rather than collapsing them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-iMO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-iMO!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!-iMO!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!-iMO!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-iMO!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-iMO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:798165,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/189644880?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!-iMO!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!-iMO!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!-iMO!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-iMO!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b4ef09-ad84-4904-86eb-70bff2a5c630_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1><strong>11. Conclusion</strong></h1><p>The LPG versus RDF debate often confuses different optimisation targets. RDF is a knowledge representation model. It formalises meaning with atomic triples, optimising for semantic interoperability, logical entailment, and ontology alignment. Its strength lies in preserving conceptual clarity across systems.</p><p>LPG is a decision infrastructure model. It structures nodes and relationships as first-class, property-bearing elements embedded in explicit topology. It optimises for:</p><ul><li><p>Direct adjacency and traversal efficiency</p></li><li><p>Rich relationship attributes (weights, time validity, confidence)</p></li><li><p>Incremental state updates and mutation under evolving conditions</p></li><li><p>Contextual subgraph extraction for AI and decision loops</p></li><li><p>Alignment with graph algorithms and analytics pipelines</p></li></ul><p>The structural contrast is architectural:</p><p><strong>In RDF:</strong></p><ul><li><p>Relationships are predicates within statements.</p></li><li><p>Relationship metadata requires reification or extra constructs.</p></li><li><p>Adjacency is reconstructed at query time.</p></li></ul><p><strong>In LPG:</strong></p><ul><li><p>Relationships are structural primitives with native properties.</p></li><li><p>Adjacency is intrinsic, traversal is direct.</p></li><li><p>Computation over relationships is first-class and efficient.</p></li></ul><p>AI-driven systems, GraphRAG, graph analytics, digital twins, or decision intelligence, stress the graph as an <strong>operational substrate</strong>, not just a semantic layer. Fast neighbourhood expansion, weighted relationships, temporal modelling, and iterative updates are essential.</p><p><strong>Key takeaway:</strong> RDF formalises meaning. LPG operationalises context.</p><p>Recognising this distinction allows deliberate layering of semantic alignment and decision infrastructure. The question shifts from which model is &#8220;better&#8221; to which constraint dominates your system: knowledge representation or decision execution.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!8g3y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!8g3y!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!8g3y!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!8g3y!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8g3y!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!8g3y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2469054,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/189644880?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!8g3y!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!8g3y!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!8g3y!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8g3y!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b611654-b46e-4047-a130-890d0afeeb76_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Previous posts</h1><ul><li><p><a href="/__u/sergeyvasiliev.substack.com/p/digital-twins-need-relationship-native">Digital Twins Need Relationship Native Architecture</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/when-a-labelled-property-graph-can">When a Labelled Property Graph Can Legitimately Be Considered an Applied Knowledge Graph</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/rag-vs-graphrag-vs-kag">RAG vs GraphRAG vs KAG</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/how-mcp-influences-graph-data-modelling?r=2r6lns&amp;utm_campaign=post&amp;utm_medium=web&amp;triedRedirect=true">How MCP Influences Graph Data Modelling</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphql-is-not-graph-tech">GraphQL Is Not Graph Tech</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-is-a-pipeline-not-a-pattern">GraphRAG Is a Pipeline, Not a Pattern</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-and-graph-data-science-for">GraphRAG and Graph Data Science for Financial Crime Document Processing</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/topological-and-temporal-aspects">Topological and Temporal Aspects of Graphs</a></p></li><li><p><a href="/__u/substack.com/@sergeyvasiliev/note/p-184057323?r=2r6lns&amp;utm_source=notes-share-action&amp;utm_medium=web">Labelled Property Graphs as a Foundation for Neuro-Symbolic Architecture</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-pg-and-rdf-structural-models">LPG, PG and RDF: Structural Models, Semantics, and Applied Reality</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-you-should-not-compare-in-memory">Why You Should Not Compare In-Memory LPG Graphs with LPG Storage Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/12-reasons-why-mcp-over-applied-knowledge">12 reasons why MCP over Applied Knowledge Graph is what you should try</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graph-summarisation-is-the-new-retrieval">Graph Summarisation Is the New Retrieval: A Practical View from the LPG and AKG Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/enterprise-knowledge-graphs-vs-applied">Enterprise Knowledge Graphs vs Applied Knowledge Graphs: Same Vision, Different Operational Path</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/a-practical-architecture-for-llm">A Practical Architecture for LLM Memory: LPG as the Adaptive Knowledge Cache</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/labels-as-the-real-semantic-layer">Labels as the Real Semantic Layer of LPG in GraphRAG and Applied Knowledge Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-understanding-the-model-beyond">LPG: Understanding the Model Beyond the Market Brands</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-engineering-patterns-from">GraphRAG Engineering Patterns: From Lexical Graphs to Knowledge Traversal</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/the-schema-paradox-why-lpgs-are-both">The Schema Paradox: Why LPGs Are Both Structured and Free</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-graphrag-outperforms-rag-in-real">Why GraphRAG Outperforms RAG in Real-World Applications</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-large-graphs-fail-small-when">Why Large Graphs Fail Small: When LPG Scalability Breaks Cognitive Coherence</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/applied-knowledge-graph-vs-knowledge">Applied Knowledge Graph vs Knowledge Graph Layer: Practical Insights from a Labelled Property Graph Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/cooking-with-graphrag-a-practical">Cooking with GraphRAG: A Practical Recipe for Your PoC</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Digital Twins Need Relationship Native Architecture]]></title><description><![CDATA[Why the Labelled Property Graph Is the Practical Backbone]]></description><link>https://sergeyvasiliev.substack.com/p/digital-twins-need-relationship-native</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/digital-twins-need-relationship-native</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Thu, 26 Feb 2026 17:00:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!A3If!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of Contents</strong></p><ol><li><p>Introduction</p></li><li><p>What a Digital Twin Actually Is</p></li><li><p>Structural Requirements of a Production Digital Twin</p></li><li><p>Why Conventional Data Models Fail</p></li><li><p>The Labelled Property Graph Model</p></li><li><p>Modelling a Digital Twin in LPG</p></li><li><p>Operational Architecture Pattern</p></li><li><p>LPG Versus RDF in Digital Twin Systems</p></li><li><p>Integration with AI and Advanced Analytics</p></li><li><p>Limitations and Boundary Conditions</p></li><li><p>Strategic Implications</p></li><li><p>Conclusion</p></li></ol><div><hr></div><h1>1. Introduction</h1><p>Digital Twins are widely discussed across manufacturing, energy, transport and smart infrastructure. Despite the volume of marketing material, implementation maturity remains uneven. Many initiatives deliver visualisation platforms and telemetry dashboards but struggle to evolve into true system models capable of reasoning about structure, dependency and change.</p><p>The central issue is architectural. A Digital Twin is not primarily a data collection problem. It is a modelling problem. Physical systems are networks of interdependent components. If the data model does not treat relationships as first class constructs, the twin cannot represent systemic behaviour accurately.</p><p>This article addresses the structural foundation required for production grade Digital Twins. It argues that the Labelled Property Graph model provides the most practical and scalable backbone for modelling complex physical systems in an operational context. The discussion is technical and aimed at architects, engineering leads and enterprise data strategists.</p><h1>2. What a Digital Twin Actually Is</h1><p>The concept of the Digital Twin emerged from lifecycle engineering, particularly within programmes associated with NASA. The initial objective was to maintain a dynamic digital counterpart of physical assets to support predictive maintenance, fault simulation and lifecycle optimisation.</p><p>Later, industry analysts such as Gartner broadened the definition to encompass digital representations of real world entities and systems across industries.</p><p>A technically rigorous understanding of a Digital Twin includes the following elements:</p><ol><li><p>A structural model describing components and their topology.</p></li><li><p>A behavioural model describing how components operate under different conditions.</p></li><li><p>Continuous synchronisation with operational telemetry.</p></li><li><p>Temporal awareness of configuration and state transitions.</p></li><li><p>Contextual knowledge that captures dependencies, constraints and policies.</p></li></ol><p>The structural model is foundational. Without it, behavioural and predictive layers lack contextual grounding. A Digital Twin that cannot represent and traverse dependencies between components is limited to monitoring rather than system reasoning.</p><h1>3. Structural Requirements of a Production Digital Twin</h1><p>Production environments involve complex, layered systems. These systems evolve continuously. Any Digital Twin architecture must therefore support a number of structural capabilities.</p><p>First, hierarchical modelling is essential. Facilities contain production lines. Production lines contain machines. Machines contain assemblies and components. The twin must represent these containment relationships explicitly and support traversal across multiple levels without performance degradation.</p><p>Second, cross cutting dependencies must be represented. A component may depend on electrical supply, network connectivity, upstream pressure or control signals. These are not attributes of a single entity. They are relationships between entities.</p><p>Third, impact propagation must be computable. If a pump fails, which downstream valves are affected. If a controller is reconfigured, which subsystems operate under new logic. The twin must support multi hop queries that reflect real world propagation paths.</p><p>Fourth, temporal validity must be modelled. Configurations change. Components are replaced. Relationships may only be valid within specific time intervals. The twin must be able to reconstruct historical topology at a given moment.</p><p>Fifth, lifecycle traceability must be maintained. Installation events, maintenance actions, inspections and upgrades must remain linked to structural elements. Historical records must not be detached from the topology in which they occurred.</p><p>These requirements are relational in nature. They demand a data model where relationships are explicit, quarriable and capable of carrying metadata.</p><h1>4. Why Conventional Data Models Fail</h1><p>Traditional enterprise systems rely on relational databases. While relational technology provides strong transactional integrity and structured storage, it does not naturally model deep networks of interdependency.</p><p>Recursive queries and join chains can represent relationships, but complexity grows rapidly with graph depth. Query readability declines, optimisation becomes difficult and performance becomes unpredictable under evolving workloads. Engineering change requests often require schema adjustments, which introduce operational risk.</p><p>Document databases offer flexible schemas and nested structures. They are effective for representing isolated aggregates. However, Digital Twins require reasoning across aggregates. Cross document traversal demands secondary indexing and application level logic. Denormalisation strategies can lead to duplication and inconsistency as the system evolves.</p><p>Time series databases address telemetry storage efficiently but do not model topology. Attempting to encode structural relationships in tag structures results in opaque designs that are difficult to query semantically.</p><p>Across these paradigms, the same limitation appears. Relationships are secondary constructs. They are expressed through foreign keys, embedded arrays or tag conventions. They are not primary modelling elements. As a result, reasoning about dependency and impact becomes an application responsibility rather than a data capability.</p><h1>5. The Labelled Property Graph Model</h1><p>The Labelled Property Graph model represents data as nodes connected by directed relationships. Both nodes and relationships can carry properties. Nodes can have one or more labels that classify their type.</p><p>Several characteristics make LPG particularly suitable for Digital Twins.</p><p>Relationships are first class citizens. They are not inferred from foreign keys. They are stored explicitly and can be indexed and traversed efficiently.</p><p>Relationships can carry properties. This allows modelling of capacity limits, validity periods, dependency strength and configuration metadata directly on the edge connecting two entities.</p><p>Traversal operations are optimised. Graph databases are designed to follow paths across multiple hops without requiring expensive join operations across large tables.</p><p>Schema evolution is flexible. New node labels or relationship types can be introduced incrementally without requiring disruptive migrations.</p><p>The LPG model therefore aligns with the way engineers conceptualise systems. Components are connected to components. Dependencies have attributes. Topology is central.</p><h1>6. Modelling a Digital Twin in LPG</h1><p>To illustrate the modelling approach, consider a manufacturing environment. A pump is connected to a valve. A sensor measures the pump. The pump is part of a subsystem. The subsystem is located within a facility.</p><p>In an LPG representation, each of these elements is a node with one or more labels that define its role. Relationships such as CONNECTED_TO, MEASURES, PART_OF and LOCATED_IN are explicit edges between nodes.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;sql&quot;,&quot;nodeId&quot;:&quot;b2d3e280-502c-4634-a79a-09ee53726938&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-sql">(:Pump)-[:CONNECTED_TO]-&gt;(:Valve)
(:Sensor)-[:MEASURES]-&gt;(:Pump)
(:Pump)-[:PART_OF]-&gt;(:Subsystem)</code></pre></div><p>If the connection between the pump and the valve has attributes such as installation date, maximum pressure rating or maintenance status, these attributes are stored as properties of the CONNECTED_TO relationship.</p><p>This modelling approach offers several advantages.</p><p>First, structural clarity is maintained. The topology is readable and directly queryable.</p><p>Second, dependency metadata remains attached to the relationship itself. There is no need for additional tables or reification constructs.</p><p>Third, extensions are straightforward. Introducing a new relationship type or attribute does not require redesigning the entire schema.</p><p>Fourth, temporal modelling can be implemented by attaching validity intervals to relationships. Historical topology reconstruction becomes a matter of querying relationships with appropriate time constraints.</p><p>The result is a model that remains close to domain language and engineering reasoning.</p><h1>7. Operational Architecture Pattern</h1><p>A robust Digital Twin architecture typically separates functional concerns while maintaining strong integration.</p><p>Telemetry ingestion systems process streaming sensor data and store it in specialised time series infrastructure. This layer focuses on throughput, compression and temporal aggregation.</p><p>The graph layer maintains the structural model. It stores components, subsystems, facilities and their interdependencies. It links telemetry streams to structural entities through explicit relationships.</p><p>Analytics and simulation services operate across both layers. For example, a predictive maintenance algorithm retrieves recent vibration data from the time series store and queries the graph to determine upstream dependencies and downstream impact.</p><p>The graph layer acts as the contextual backbone. It answers structural questions that cannot be resolved by telemetry alone. It provides the semantic map that allows operational data to be interpreted correctly.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;681a8692-36bc-4435-b520-8781e760f199&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">IoT &#8594; Stream Processor &#8594; Time-Series Store
                     &#8595;
               LPG Graph Layer
                     &#8595;
        Simulation + AI + Monitoring</code></pre></div><p>Without this structural layer, advanced analytics remain isolated from system topology and risk-generating context blind insights.</p><h1>8. LPG Versus RDF in Digital Twin Systems</h1><p>Resource Description Framework technology provides a formal semantic foundation for knowledge representation. It supports ontology driven integration and reasoning.</p><p>However, RDF represents data as subject predicate object triples. Relationships do not natively support properties. When relationship metadata is required, reification patterns or named graphs must be introduced. This increases storage volume and query complexity.</p><p>In operational Digital Twin environments, frequent updates and deep traversal queries are common. The simplicity of native relationship properties in LPG reduces modelling overhead and improves performance for traversal intensive workloads.</p><p>RDF may be advantageous in scenarios that prioritise cross organisational knowledge sharing and formal reasoning. LPG is often better suited to operational dependency modelling where performance, clarity and ease of development are primary concerns.</p><p>The choice should be driven by workload characteristics rather than theoretical elegance.</p><h1>9. Integration with AI and Advanced Analytics</h1><p>Advanced Digital Twins increasingly incorporate machine learning and optimisation models. These models require context to operate effectively.</p><p>Graph structured data provides that context. Neighbourhood topology can be used to enrich feature sets. Dependency paths can explain why a predicted failure in one component affects another. Graph traversal can constrain optimisation search space to structurally feasible solutions.</p><p>Explainability is particularly important in industrial environments. When an AI model predicts a component failure, engineers require an explanation rooted in system structure. Graph based context allows tracing the dependency chain that led to the prediction.</p><p>Without relationship native modelling, AI systems operate on isolated features and risk producing results that are difficult to justify or operationalise.</p><p>An LPG backbone ensures that AI operates within the structural reality of the physical system.</p><h1>10. Limitations and Boundary Conditions</h1><p>It is important to recognise that LPG is not a complete Digital Twin solution in isolation.</p><p>High frequency telemetry ingestion requires time series systems optimised for write throughput and temporal aggregation.</p><p>Complex physical simulations require domain specific engines capable of modelling thermodynamics, fluid dynamics or electrical behaviour.</p><p>Formal ontology reasoning across federated domains may require semantic web technologies.</p><p>The strength of LPG lies in structural integration. It provides the coherent topology that connects specialised subsystems. It does not replace them.</p><p>An effective Digital Twin architecture is layered and modular. LPG occupies the structural core.</p><h1>11. Strategic Implications</h1><p>From a strategic perspective, the modelling decision has long term consequences.</p><p>Organisations that treat Digital Twins as enhanced dashboards risk stagnation. Their systems remain limited to monitoring and retrospective analysis.</p><p>Organisations that adopt relationship native modelling gain the ability to compute systemic impact, manage configuration complexity and integrate AI with structural awareness.</p><p>Over time, system complexity increases. Assets multiply. Interdependencies deepen. Without explicit relationship modelling, technical debt accumulates rapidly.</p><p>Selecting a relationship native backbone early in the programme lifecycle reduces long term architectural friction and enables gradual expansion toward system of systems modelling.</p><p>The decision is not merely technical. It shapes the organisation&#8217;s ability to evolve its Digital Twin from descriptive to predictive and eventually prescriptive capability.</p><h1>12. Conclusion</h1><p>Digital Twins are representations of interconnected physical systems. Their value lies in modelling structure, dependency and change over time.</p><p>The Labelled Property Graph model provides a practical and scalable foundation for this task. It supports explicit relationships, relationship metadata, efficient traversal and flexible schema evolution.</p><p>While it must coexist with telemetry stores, simulation engines and analytic platforms, LPG provides the structural coherence necessary for a true system model.</p><p>Without relationship native architecture, Digital Twins remain fragmented and limited. With it, they become robust platforms for advanced analytics, optimisation and long term lifecycle management.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!A3If!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!A3If!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!A3If!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!A3If!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!A3If!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!A3If!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2003615,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/189269641?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!A3If!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!A3If!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!A3If!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!A3If!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec0e5f5e-d0f2-4484-86d3-9b87d03a7c8c_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Previous posts</h1><ul><li><p><a href="/__u/sergeyvasiliev.substack.com/p/when-a-labelled-property-graph-can">When a Labelled Property Graph Can Legitimately Be Considered an Applied Knowledge Graph</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/rag-vs-graphrag-vs-kag">RAG vs GraphRAG vs KAG</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/how-mcp-influences-graph-data-modelling?r=2r6lns&amp;utm_campaign=post&amp;utm_medium=web&amp;triedRedirect=true">How MCP Influences Graph Data Modelling</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphql-is-not-graph-tech">GraphQL Is Not Graph Tech</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-is-a-pipeline-not-a-pattern">GraphRAG Is a Pipeline, Not a Pattern</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-and-graph-data-science-for">GraphRAG and Graph Data Science for Financial Crime Document Processing</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/topological-and-temporal-aspects">Topological and Temporal Aspects of Graphs</a></p></li><li><p><a href="/__u/substack.com/@sergeyvasiliev/note/p-184057323?r=2r6lns&amp;utm_source=notes-share-action&amp;utm_medium=web">Labelled Property Graphs as a Foundation for Neuro-Symbolic Architecture</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-pg-and-rdf-structural-models">LPG, PG and RDF: Structural Models, Semantics, and Applied Reality</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-you-should-not-compare-in-memory">Why You Should Not Compare In-Memory LPG Graphs with LPG Storage Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/12-reasons-why-mcp-over-applied-knowledge">12 reasons why MCP over Applied Knowledge Graph is what you should try</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graph-summarisation-is-the-new-retrieval">Graph Summarisation Is the New Retrieval: A Practical View from the LPG and AKG Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/enterprise-knowledge-graphs-vs-applied">Enterprise Knowledge Graphs vs Applied Knowledge Graphs: Same Vision, Different Operational Path</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/a-practical-architecture-for-llm">A Practical Architecture for LLM Memory: LPG as the Adaptive Knowledge Cache</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/labels-as-the-real-semantic-layer">Labels as the Real Semantic Layer of LPG in GraphRAG and Applied Knowledge Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-understanding-the-model-beyond">LPG: Understanding the Model Beyond the Market Brands</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-engineering-patterns-from">GraphRAG Engineering Patterns: From Lexical Graphs to Knowledge Traversal</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/the-schema-paradox-why-lpgs-are-both">The Schema Paradox: Why LPGs Are Both Structured and Free</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-graphrag-outperforms-rag-in-real">Why GraphRAG Outperforms RAG in Real-World Applications</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-large-graphs-fail-small-when">Why Large Graphs Fail Small: When LPG Scalability Breaks Cognitive Coherence</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/applied-knowledge-graph-vs-knowledge">Applied Knowledge Graph vs Knowledge Graph Layer: Practical Insights from a Labelled Property Graph Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/cooking-with-graphrag-a-practical">Cooking with GraphRAG: A Practical Recipe for Your PoC</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[When a Labelled Property Graph Can Legitimately Be Considered an Applied Knowledge Graph]]></title><description><![CDATA[Operationalising Graph Semantics in AI-Driven Systems]]></description><link>https://sergeyvasiliev.substack.com/p/when-a-labelled-property-graph-can</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/when-a-labelled-property-graph-can</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Wed, 18 Feb 2026 10:29:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eoEp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of Contents</strong></p><ol><li><p>Fundamentals: LPG vs Applied Knowledge Graph</p></li><li><p>Enterprise Knowledge Graph vs Applied Knowledge Graph</p></li><li><p>From Structure to Meaning: When an LPG Becomes Semantic</p></li><li><p>The Litmus Test: Operational Dependence</p></li><li><p>Labels as the Real Semantic Layer</p></li><li><p>Constraints, Identity and Correctness</p></li><li><p>Applied Knowledge Graphs in AI and GraphRAG</p></li><li><p>Workflow Criticality and State Control</p></li><li><p>The Maturity Path from LPG to AKG</p></li><li><p>Bridging Enterprise and Applied Layers</p></li><li><p>The Real Transition: From Data Store to Knowledge Infrastructure</p></li></ol><div><hr></div><h1>Introduction</h1><p>Graph databases are now standard components in modern architectures. Teams use Labelled Property Graphs (LPGs) to model customers and transactions, services and dependencies, users and permissions, documents and entities. The LPG model is popular because it is expressive, intuitive for engineers and efficient for traversal-heavy workloads.</p><p>At the same time, the term &#8220;knowledge graph&#8221; is used widely and often imprecisely. Many systems described as knowledge graphs are simply well-modelled graph databases. Others genuinely function as a semantic infrastructure that shapes decisions, workflows and AI behaviour.</p><p>For engineers working with graph platforms, AI systems and GraphRAG pipelines, the distinction is not academic. Calling something a knowledge graph implies that it encodes domain meaning in a way that software systems depend on.</p><p>This article explains, in practical and architectural terms, when an LPG legitimately becomes an Applied Knowledge Graph (AKG). The focus is operational: how the graph is used, how it influences behaviour and when it becomes part of the system&#8217;s control path.</p><div><hr></div><h1>1. Fundamentals: LPG vs Applied Knowledge Graph</h1><p>A Labelled Property Graph consists of:</p><ul><li><p>Nodes representing entities or things</p></li><li><p>Relationships connecting those entities</p></li><li><p>Labels defining node types</p></li><li><p>Properties storing attributes on nodes and relationships</p></li></ul><p>This model is powerful because it mirrors how engineers design systems: typed entities connected through explicit relationships. It supports efficient traversals and flexible schema evolution.</p><p>However, an LPG is fundamentally a structural model. It gives you expressive representation and performance benefits, but it does not automatically provide domain semantics or enforce correctness.</p><p>An Applied Knowledge Graph goes further. In an AKG:</p><ul><li><p>Labels represent meaningful domain types.</p></li><li><p>Relationships encode valid domain interactions.</p></li><li><p>Constraints enforce business rules.</p></li><li><p>Applications rely on the graph&#8217;s structure to behave correctly.</p></li></ul><p>An LPG is a modelling technique.<br>An AKG is a semantic component embedded in runtime behaviour.</p><h1>2. Enterprise Knowledge Graph vs Applied Knowledge Graph</h1><p>Two architectural patterns are often conflated.</p><h3>Enterprise Knowledge Graph (EKG)</h3><p>An Enterprise Knowledge Graph typically focuses on:</p><ul><li><p>Canonical identifiers across systems</p></li><li><p>Controlled vocabularies</p></li><li><p>Data governance and lineage</p></li><li><p>Organisational consistency</p></li></ul><p>Its purpose is alignment. It ensures that core concepts such as Customer, Product or Policy mean the same thing across departments and systems.</p><p>It is usually slower moving, more governed and designed for long-term stability.</p><h3>Applied Knowledge Graph (AKG)</h3><p>An Applied Knowledge Graph is embedded within a specific operational context. It exists to solve concrete problems in running systems.</p><p>It typically:</p><ul><li><p>Drives real-time decisions</p></li><li><p>Supports workflow transitions</p></li><li><p>Grounds AI systems</p></li><li><p>Enforces policy or compliance rules</p></li></ul><p>An AKG does not need to solve enterprise-wide semantic alignment. It needs to ensure that one operational system behaves correctly and predictably.</p><p>You can build an AKG without a fully formalised enterprise ontology. What matters is operational dependence, not global completeness.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!c-wt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!c-wt!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!c-wt!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!c-wt!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!c-wt!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!c-wt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1577280,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/188361011?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!c-wt!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!c-wt!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!c-wt!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!c-wt!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812d858b-bdba-4b76-b21e-ba741aea22b0_1408x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>3. From Structure to Meaning: When an LPG Becomes Semantic</h1><p>Most LPG deployments begin as connected data platforms. They improve query performance and simplify modelling.</p><p>At this stage:</p><ul><li><p>Labels are used for grouping.</p></li><li><p>Relationships describe associations.</p></li><li><p>Properties store attributes.</p></li></ul><p>The graph supports analytics and navigation, but it does not control behaviour.</p><p>The transition towards an AKG begins when structure starts to carry meaning:</p><ul><li><p>Labels define what an entity fundamentally is in the domain.</p></li><li><p>Relationship types restrict which interactions are valid.</p></li><li><p>Certain graph patterns are treated as valid or invalid states.</p></li><li><p>Application logic assumes specific graph structures exist.</p></li></ul><p>When domain meaning moves from documentation into graph structure, the graph becomes a semantic layer.</p><h1>4. The Litmus Test: Operational Dependence</h1><p>The most practical test is straightforward:</p><p>If this graph were removed or corrupted, would system behaviour degrade in a meaningful way?</p><p>If the graph only supports reporting, dashboards or optional analytics, the answer is usually no.</p><p>If the graph:</p><ul><li><p>Determines access permissions</p></li><li><p>Drives eligibility or approval decisions</p></li><li><p>Controls escalation paths</p></li><li><p>Constrains AI outputs</p></li><li><p>Validates state transitions</p></li></ul><p>then removing it changes how the system behaves.</p><p>At that point, the graph is part of the control path. It is not just storage; it is operational infrastructure.</p><p>This is the defining characteristic of an Applied Knowledge Graph.</p><h1>5. Labels as the Real Semantic Layer</h1><p>In disciplined LPG systems, labels become the effective domain type system.</p><p>For example:</p><ul><li><p><code>Customer</code></p></li><li><p><code>Account</code></p></li><li><p><code>Transaction</code></p></li><li><p><code>FraudAlert</code></p></li><li><p><code>BlockedUser</code></p></li></ul><p>If application code treats these labels as authoritative, then they define identity and capability.</p><p>Similarly, relationship types such as:</p><ul><li><p><code>OWNS</code></p></li><li><p><code>APPROVED_BY</code></p></li><li><p><code>DEPENDS_ON</code></p></li><li><p><code>ASSOCIATED_WITH</code></p></li></ul><p>can encode allowed interactions in the domain.</p><p>When engineers design business logic that assumes these labels and relationships are correct and complete, the graph becomes the semantic backbone.</p><p>Meaning is enforced structurally, not just procedurally.</p><h1>6. Constraints, Identity and Correctness</h1><p>A major step in becoming an AKG is structural discipline.</p><p>This includes:</p><ul><li><p>Enforcing one canonical node per real-world entity</p></li><li><p>Resolving duplicate identities</p></li><li><p>Restricting invalid relationships</p></li><li><p>Ensuring mandatory connections exist</p></li></ul><p>When correctness depends on the graph&#8217;s integrity, the graph is part of the system&#8217;s truth model.</p><p>For example:</p><ul><li><p>A transaction must be linked to exactly one account.</p></li><li><p>A high-risk customer must be linked to at least one review process.</p></li><li><p>A policy must be associated with specific assets.</p></li></ul><p>If violating these patterns breaks business logic, then the graph encodes domain knowledge, not just data.</p><h1>7. Applied Knowledge Graphs in AI and GraphRAG</h1><p>In AI-driven systems, the distinction becomes critical.</p><p>In GraphRAG architectures, graphs are used to:</p><ul><li><p>Retrieve structured context for LLM prompts</p></li><li><p>Disambiguate entities</p></li><li><p>Provide provenance</p></li><li><p>Reduce hallucinations</p></li></ul><p>If the graph simply stores chunks and embeddings, it remains infrastructure.</p><p>However, when:</p><ul><li><p>Only entities present in the graph can be referenced</p></li><li><p>Relationships constrain reasoning paths</p></li><li><p>Policies in the graph gate responses</p></li><li><p>LLM outputs are validated against graph constraints</p></li></ul><p>the graph becomes a deterministic boundary around a probabilistic model. It limits what the AI is allowed to say or do based on structured knowledge. This is one of the strongest modern examples of an Applied Knowledge Graph.</p><h1>8. Workflow Criticality and State Control</h1><p>Many operational systems rely on structured state transitions.</p><p>Examples include:</p><ul><li><p>Claims moving through review stages</p></li><li><p>Devices moving through health states</p></li><li><p>Users moving through risk categories</p></li></ul><p>If these states and transitions are represented in the graph and the application enforces them through graph queries and constraints, then:</p><ul><li><p>The graph defines valid progression.</p></li><li><p>The graph constrains possible actions.</p></li><li><p>The graph encodes business logic.</p></li></ul><p>In this scenario, the graph acts as a domain state machine. It governs behaviour directly.</p><p>That is applied knowledge embedded in runtime execution.</p><h1>9. The Maturity Path from LPG to AKG</h1><p>Systems typically evolve through stages:</p><p><strong>Stage 1 &#8211; Connected Data</strong><br>The graph improves modelling and query performance.</p><p><strong>Stage 2 &#8211; Structured Domain Representation</strong><br>Labels and relationships align clearly with business concepts.</p><p><strong>Stage 3 &#8211; Constraint Enforcement</strong><br>Structural rules and validation logic are introduced.</p><p><strong>Stage 4 &#8211; Workflow Integration</strong><br>Applications depend on graph structure for runtime decisions.</p><p><strong>Stage 5 &#8211; AI Grounding and Control</strong><br>AI systems are constrained and guided by graph semantics.</p><p>Only at Stage 4 and beyond does the LPG legitimately function as an Applied Knowledge Graph.</p><p>Maturity reflects increasing semantic discipline and operational dependence.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!X26G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!X26G!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!X26G!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!X26G!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!X26G!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!X26G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:905181,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/188361011?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!X26G!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!X26G!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!X26G!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!X26G!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d220eae-5976-4277-9171-ecf04c597724_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h1>10. Bridging Enterprise and Applied Layers</h1><p>In larger organisations, a stable Enterprise Knowledge Graph may coexist with multiple Applied Knowledge Graphs.</p><p>The enterprise layer:</p><ul><li><p>Standardises identity</p></li><li><p>Aligns terminology</p></li><li><p>Provides governance</p></li></ul><p>The applied layer:</p><ul><li><p>Implements domain-specific logic</p></li><li><p>Supports operational systems</p></li><li><p>Evolves with product requirements</p></li></ul><p>A robust architecture often connects them. Applied graphs inherit stable identifiers from the enterprise layer, while enterprise models evolve based on operational insights.</p><p>This creates a stable semantic core with adaptable operational edges.</p><h1>11. The Real Transition: From Data Store to Knowledge Infrastructure</h1><p>An LPG becomes an Applied Knowledge Graph when:</p><ul><li><p>Labels are treated as domain types.</p></li><li><p>Relationships encode domain commitments.</p></li><li><p>Constraints enforce correctness.</p></li><li><p>Workflows depend on graph structure.</p></li><li><p>AI systems are grounded or constrained by it.</p></li><li><p>System behaviour degrades if the graph semantics are wrong.</p></li></ul><p>At that point, the graph:</p><ul><li><p>Defines what is valid.</p></li><li><p>Defines what is possible.</p></li><li><p>Defines what is allowed.</p></li></ul><p>It is no longer simply a database optimised for traversal.</p><p>It is a semantic infrastructure embedded in your system&#8217;s runtime logic.</p><p>For engineers building GraphRAG platforms, AI copilots, fraud detection systems, cybersecurity tooling or digital twins, recognising this transition is essential.</p><p>Once your graph enters the control path, you are no longer just modelling data.</p><p>You are encoding applied knowledge.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!eoEp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!eoEp!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!eoEp!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!eoEp!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eoEp!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!eoEp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1819652,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/188361011?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!eoEp!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!eoEp!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!eoEp!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eoEp!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57777189-8c1f-4545-a790-22dbd39d2ea2_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Previous posts</h1><ul><li><p><a href="/__u/sergeyvasiliev.substack.com/p/rag-vs-graphrag-vs-kag">RAG vs GraphRAG vs KAG</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/how-mcp-influences-graph-data-modelling?r=2r6lns&amp;utm_campaign=post&amp;utm_medium=web&amp;triedRedirect=true">How MCP Influences Graph Data Modelling</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphql-is-not-graph-tech">GraphQL Is Not Graph Tech</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-is-a-pipeline-not-a-pattern">GraphRAG Is a Pipeline, Not a Pattern</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-and-graph-data-science-for">GraphRAG and Graph Data Science for Financial Crime Document Processing</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/topological-and-temporal-aspects">Topological and Temporal Aspects of Graphs</a></p></li><li><p><a href="/__u/substack.com/@sergeyvasiliev/note/p-184057323?r=2r6lns&amp;utm_source=notes-share-action&amp;utm_medium=web">Labelled Property Graphs as a Foundation for Neuro-Symbolic Architecture</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-pg-and-rdf-structural-models">LPG, PG and RDF: Structural Models, Semantics, and Applied Reality</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-you-should-not-compare-in-memory">Why You Should Not Compare In-Memory LPG Graphs with LPG Storage Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/12-reasons-why-mcp-over-applied-knowledge">12 reasons why MCP over Applied Knowledge Graph is what you should try</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graph-summarisation-is-the-new-retrieval">Graph Summarisation Is the New Retrieval: A Practical View from the LPG and AKG Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/enterprise-knowledge-graphs-vs-applied">Enterprise Knowledge Graphs vs Applied Knowledge Graphs: Same Vision, Different Operational Path</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/a-practical-architecture-for-llm">A Practical Architecture for LLM Memory: LPG as the Adaptive Knowledge Cache</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/labels-as-the-real-semantic-layer">Labels as the Real Semantic Layer of LPG in GraphRAG and Applied Knowledge Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-understanding-the-model-beyond">LPG: Understanding the Model Beyond the Market Brands</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-engineering-patterns-from">GraphRAG Engineering Patterns: From Lexical Graphs to Knowledge Traversal</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/the-schema-paradox-why-lpgs-are-both">The Schema Paradox: Why LPGs Are Both Structured and Free</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-graphrag-outperforms-rag-in-real">Why GraphRAG Outperforms RAG in Real-World Applications</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-large-graphs-fail-small-when">Why Large Graphs Fail Small: When LPG Scalability Breaks Cognitive Coherence</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/applied-knowledge-graph-vs-knowledge">Applied Knowledge Graph vs Knowledge Graph Layer: Practical Insights from a Labelled Property Graph Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/cooking-with-graphrag-a-practical">Cooking with GraphRAG: A Practical Recipe for Your PoC</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[RAG vs GraphRAG vs KAG]]></title><description><![CDATA[A Graph Practitioner&#8217;s Perspective]]></description><link>https://sergeyvasiliev.substack.com/p/rag-vs-graphrag-vs-kag</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/rag-vs-graphrag-vs-kag</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Wed, 11 Feb 2026 17:06:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eIxO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of Contents</strong></p><ol><li><p>Introduction and Historical Context</p></li><li><p>Classical RAG</p></li><li><p>GraphRAG</p></li><li><p>KAG</p></li><li><p>Graph Models and Their Realisations</p></li><li><p>Comparative Analysis</p></li><li><p>Architectural Trade-offs</p></li><li><p>Practical Guidance</p></li><li><p>Conclusion</p></li></ol><div><hr></div><h1>1. Introduction and Historical Context</h1><p>Retrieval Augmented Generation (RAG), GraphRAG, and Knowledge Augmented Generation (KAG) represent successive attempts to ground large language models in structured or semi-structured knowledge. From a graph practitioner&#8217;s perspective, the key questions are not prompt engineering but representation, identity, semantics, and the execution model.</p><h3>Historical Observations</h3><p>Classical RAG emerged around 2020 as a pragmatic response to the limitations of large language models. Instead of attempting to encode all knowledge in model parameters, the approach externalised knowledge into vector indexes. Documents were chunked, embedded, and retrieved via similarity search. The architecture was intentionally simple: a retriever, a vector store, and a generator. It did not require graph modelling, ontology design, or explicit semantics.</p><p>GraphRAG appeared later as practitioners recognised that document chunks lack explicit structure. Real-world data contains entities, relationships, hierarchies, temporal aspects, and constraints. GraphRAG introduced graph traversal into the retrieval step. Instead of retrieving isolated chunks, it retrieves neighbourhoods of connected entities. It is important to emphasise that GraphRAG is an umbrella term rather than a formal standard. Implementations vary widely in how graphs are constructed, traversed, and integrated with embeddings and retrieval. This reflects a shift from similarity-based recall to structure-aware retrieval.</p><p>KAG developed in parallel as a broader architectural idea. Rather than only improving retrieval, it aims to integrate a knowledge graph as a reasoning substrate. In this view, the graph is not merely a retriever index but a semantic backbone. In practice, KAG varies significantly in implementation, from ontology-centric systems realised over RDF triple stores to Applied Knowledge Graphs implemented using the LPG model. From a graph engineering perspective, these approaches differ in how seriously they treat identity, relationships, inference, and graph execution engines.</p><h1>2. Classical RAG</h1><h3>Architectural Overview</h3><p>Classical RAG consists of three core components: a document corpus, a vector index, and a language model. Documents are split into chunks, embedded into vectors, and stored in a vector database. At query time, the system retrieves the most similar chunks and injects them into the prompt.</p><p>This approach treats knowledge as unstructured text. The retrieval mechanism is statistical rather than semantic. It relies on embedding similarity rather than explicit relationships.</p><h3>Limitations from a Graph Perspective</h3><p>From a graph practitioner&#8217;s viewpoint, classical RAG has several structural limitations. It lacks explicit identity management, so entities may appear in multiple chunks without canonical identifiers. There is no representation of relationships beyond co-occurrence in text, which means traversal or reasoning over connections is not possible. Furthermore, similarity search does not enforce domain constraints. It retrieves semantically similar text, not necessarily logically relevant facts. This is acceptable for loosely structured knowledge but problematic for domains requiring traceability and structured reasoning.</p><h3>Where RAG Works Well</h3><p>Classical RAG performs adequately in document-centric scenarios such as FAQ systems, support knowledge bases, and exploratory search. In these cases, the objective is contextual recall rather than structured reasoning.</p><h1>3. GraphRAG</h1><h3>Conceptual Shift</h3><p>GraphRAG extends classical RAG by introducing graph structure into the retrieval process. Instead of retrieving independent text chunks, the system retrieves entities and expands along relationships. This produces a context that reflects domain topology rather than embedding similarity alone. Implementations vary, and GraphRAG should be understood as an umbrella term rather than a formal standard.</p><p>GraphRAG systems are typically implemented using property graph databases, although RDF-based implementations are also possible.</p><h3>How It Works</h3><p>In a typical GraphRAG pipeline, entities are extracted from documents and materialised as nodes. Relationships are derived from co-occurrence, NLP extraction, or domain modelling. Each node may carry textual descriptions, embeddings, and structured properties.</p><p>When a query is issued, the system identifies relevant nodes using vector similarity or keyword search. The system then performs graph traversal, for example following relationships within a bounded depth. In practice, vector search often serves as candidate selection before structural expansion, ensuring efficient retrieval. The resulting subgraph is transformed into textual context for the language model.</p><h3>Engineering Considerations</h3><p>GraphRAG introduces identity and relationship semantics. Nodes represent real-world entities with stable identifiers, and edges encode explicit relations. This enables neighbourhood retrieval, path-based reasoning, and constraint-based filtering.</p><p>However, GraphRAG remains primarily a retrieval architecture. The language model still performs reasoning, while the graph organises context and enhances structure. Vector search is often an integral part of candidate selection, but the graph defines coherent context for generation.</p><h1>4. KAG</h1><h3>Conceptual Scope</h3><p>Knowledge Augmented Generation aims to integrate structured knowledge as a first-class component of the reasoning process. Unlike classical RAG, which retrieves documents, or GraphRAG, which retrieves structured context, KAG combines retrieval, semantics, and reasoning within a coherent architecture. From a graph practitioner&#8217;s perspective, KAG depends heavily on how the knowledge graph is realised.</p><h3>Ontology-Centric Knowledge Graphs</h3><p>An ontology-centric knowledge graph is a knowledge graph designed around formal ontologies. It is typically realised using RDF and stored in a triple store. In this model, entities and relationships are represented as triples, with semantics governed by RDFS or OWL. Reasoning may involve logical inference.</p><p>This approach emphasises formal semantics, interoperability, and standards compliance. It supports reasoning tasks such as classification and consistency checking. Modelling overhead and performance considerations are notable trade-offs.</p><h3>Applied Knowledge Graphs</h3><p>An Applied Knowledge Graph is a domain-focused knowledge graph realised using the labelled property graph model. It prioritises practical modelling, performance, and application integration. Nodes and relationships carry properties directly, and traversal-centric query languages such as Cypher or Gremlin support expressive pattern navigation.</p><p>In KAG systems based on AKG, the graph supports operational workloads, entity resolution, contextual reasoning, and application integration. The language model consumes structured outputs from graph queries rather than raw documents. Vector search is often used for candidate selection before graph-based expansion.</p><h3>Practical Observations</h3><p>KAG implementations vary. Some rely on RDF triple stores with SPARQL queries and reasoning engines. Others rely on LPG databases optimised for traversal performance. The critical distinction lies in the underlying graph model and engine capabilities. The inference engine is therefore best described as a graph reasoning engine plus LLM, where applicable, avoiding the implication that every KAG system performs formal logical inference.</p><h1>5. Graph Models and Their Realisations</h1><p>Ontology-centric knowledge graphs and Applied Knowledge Graphs are not graph models themselves. They are architectural patterns realised over specific graph models and engines.</p><ul><li><p>Ontology-centric knowledge graphs are realised over RDF using triple stores such as GraphDB, Stardog, or Blazegraph. These engines support SPARQL queries, reasoning, and schema alignment.</p></li><li><p>Applied Knowledge Graphs are realised over labelled property graph databases such as Neo4j, JanusGraph, or Amazon Neptune in property graph mode. These engines support property-rich nodes and relationships, traversal-centric queries, and operational integration.</p></li></ul><h3>Graph Model Involvement in RAG Architectures</h3><pre><code><code>+----------------------+-------------------+--------------------+--------------------+
| Graph Model          | Classical RAG     | GraphRAG           | KAG                |
+----------------------+-------------------+--------------------+--------------------+
| RDF / Triple Store   | Rare              | Possible           | Common in          |
|                      |                   |                    | ontology-centric   |
|                      |                   |                    | realisations       |
+----------------------+-------------------+--------------------+--------------------+
| Labelled Property    | Rare              | Common             | Common in AKG      |
| Graph (LPG)          |                   |                    | realisations       |
+----------------------+-------------------+--------------------+--------------------+
| Vector Store Only    | Core component    | Candidate selection| Candidate selection|
+----------------------+-------------------+---------------------+-------------------+
</code></code></pre><p>Classical RAG relies primarily on vector stores. GraphRAG leverages LPG engines for traversal and structural expansion, while vector search often serves as candidate selection. KAG may use RDF triple stores in ontology-centric implementations or LPG engines in AKG-based systems, with vector search again assisting candidate selection.</p><h1>6. Comparative Analysis</h1><pre><code><code>+----------------------+----------------+----------------+---------------------------+
| Dimension            | RAG            | GraphRAG       | KAG                       |
+----------------------+----------------+----------------+---------------------------+
| Identity Management  | Implicit       | Explicit       | Explicit                  |
| Relationship Model   | None           | Structural     | Structural                |
| Formal Semantics     | None           | Limited        | Optional                  |
| Inference Engine     | LLM only       | LLM only       | Graph reasoning engine    |
|                      |                |                | plus LLM, where applicable|
| Retrieval Unit       | Text chunk     | Subgraph       | Structured knowledge      |
+----------------------+----------------+----------------+---------------------------+
</code></code></pre><p>RAG is document-centric. GraphRAG is structure-aware retrieval. KAG aspires to integrate semantics and structured reasoning.</p><h1>7. Architectural Trade-offs</h1><p>Classical RAG is simple to deploy and scales horizontally with vector databases. It requires minimal modelling effort. However, it cannot enforce domain constraints or provide deterministic traversal.</p><p>GraphRAG introduces modelling overhead. Entity extraction and graph construction require engineering investment. In return, the system gains explicit identity, relationship traversal, and contextual precision. Vector search is typically integrated for candidate selection before graph expansion.</p><p>KAG introduces further complexity. Ontology-centric implementations require schema governance and reasoning infrastructure. AKG implementations require disciplined domain modelling and graph lifecycle management. The benefit is deeper integration between structured knowledge and generation. The decision depends on the required level of semantic control and reasoning determinism.</p><h1>8. Practical Guidance</h1><p>For document-heavy, low-structure domains, classical RAG is often sufficient. For domains where entity relationships matter, such as supply chains, biomedical data, or enterprise architecture, GraphRAG provides structural advantages. For domains requiring explicit semantics, domain ontologies, or operational graph workloads, KAG realised through either ontology-centric RDF systems or Applied Knowledge Graphs over LPG is more appropriate. The critical question is which graph model and engine capabilities align with the problem domain, not which acronym is chosen.</p><h1>9. Conclusion</h1><p>RAG, GraphRAG, and KAG are not merely variations of the same pattern. They represent increasing levels of structural commitment to explicit knowledge representation. From a graph practitioner&#8217;s perspective, the core distinction lies in how knowledge is represented and executed. Ontology-centric knowledge graphs rely on RDF triple stores and formal semantics. Applied Knowledge Graphs rely on the labelled property graph model and traversal-centric engines. Ultimately, the effectiveness of any generation architecture depends on identity management, relationship modelling, and the operational characteristics of the chosen graph engine. The acronym matters less than the underlying data model and execution semantics.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!eIxO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!eIxO!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!eIxO!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!eIxO!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eIxO!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!eIxO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1650492,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/187648934?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!eIxO!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!eIxO!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!eIxO!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!eIxO!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0f139ad-0e0f-4b79-be80-2ae38c2cb34e_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Previous posts</h1><ul><li><p><a href="/__u/sergeyvasiliev.substack.com/p/how-mcp-influences-graph-data-modelling?r=2r6lns&amp;utm_campaign=post&amp;utm_medium=web&amp;triedRedirect=true">How MCP Influences Graph Data Modelling</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphql-is-not-graph-tech">GraphQL Is Not Graph Tech</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-is-a-pipeline-not-a-pattern">GraphRAG Is a Pipeline, Not a Pattern</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-and-graph-data-science-for">GraphRAG and Graph Data Science for Financial Crime Document Processing</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/topological-and-temporal-aspects">Topological and Temporal Aspects of Graphs</a></p></li><li><p><a href="/__u/substack.com/@sergeyvasiliev/note/p-184057323?r=2r6lns&amp;utm_source=notes-share-action&amp;utm_medium=web">Labelled Property Graphs as a Foundation for Neuro-Symbolic Architecture</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-pg-and-rdf-structural-models">LPG, PG and RDF: Structural Models, Semantics, and Applied Reality</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-you-should-not-compare-in-memory">Why You Should Not Compare In-Memory LPG Graphs with LPG Storage Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/12-reasons-why-mcp-over-applied-knowledge">12 reasons why MCP over Applied Knowledge Graph is what you should try</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graph-summarisation-is-the-new-retrieval">Graph Summarisation Is the New Retrieval: A Practical View from the LPG and AKG Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/enterprise-knowledge-graphs-vs-applied">Enterprise Knowledge Graphs vs Applied Knowledge Graphs: Same Vision, Different Operational Path</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/a-practical-architecture-for-llm">A Practical Architecture for LLM Memory: LPG as the Adaptive Knowledge Cache</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/labels-as-the-real-semantic-layer">Labels as the Real Semantic Layer of LPG in GraphRAG and Applied Knowledge Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-understanding-the-model-beyond">LPG: Understanding the Model Beyond the Market Brands</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-engineering-patterns-from">GraphRAG Engineering Patterns: From Lexical Graphs to Knowledge Traversal</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/the-schema-paradox-why-lpgs-are-both">The Schema Paradox: Why LPGs Are Both Structured and Free</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-graphrag-outperforms-rag-in-real">Why GraphRAG Outperforms RAG in Real-World Applications</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-large-graphs-fail-small-when">Why Large Graphs Fail Small: When LPG Scalability Breaks Cognitive Coherence</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/applied-knowledge-graph-vs-knowledge">Applied Knowledge Graph vs Knowledge Graph Layer: Practical Insights from a Labelled Property Graph Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/cooking-with-graphrag-a-practical">Cooking with GraphRAG: A Practical Recipe for Your PoC</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[How MCP Influences Graph Data Modelling]]></title><description><![CDATA[And Why Labelled Property Graphs (LPG) Prevail]]></description><link>https://sergeyvasiliev.substack.com/p/how-mcp-influences-graph-data-modelling</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/how-mcp-influences-graph-data-modelling</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Sun, 08 Feb 2026 17:43:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O5Av!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Table of Contents</strong></p><ol><li><p>MCP Is an Architectural Shift, Not an AI Feature</p></li><li><p>What MCP Architecture Actually Assumes</p></li><li><p>Why Graph Data Modelling Matters Under MCP</p></li><li><p>Applied Knowledge Graphs as the Natural MCP Backend</p></li><li><p>Why LPG Fits MCP Architecture Better Than Alternatives</p></li><li><p>MCP, LPG, and Temporal Reality</p></li><li><p>Where RDF Fits and Where MCP Exposes Its Limits</p></li><li><p>What This Means for GraphRAG and AI Systems</p></li><li><p>Conclusion</p></li></ol><div><hr></div><h1>1. MCP Is an Architectural Shift, Not an AI Feature</h1><p>Users often see Model Context Protocol (MCP) as a convenience layer for connecting large language models (LLMs) with external systems. While accurate, this description underplays MCP&#8217;s deeper significance. MCP is not merely a tool; it is an architectural paradigm that reshapes how AI systems interact with live data, operational graphs, and external tools. It defines the requirements that graph systems must satisfy to participate effectively in reasoning loops.</p><p>Historically, early AI systems were isolated reasoning engines operating over static datasets or curated knowledge bases. LLMs relied on embedded knowledge or bespoke connectors to external sources. Each integration required custom engineering, which scaled poorly and became fragile as AI workflows grew more complex.</p><p>MCP emerged to address these challenges. Initially proposed by Anthropic in 2024 and later adopted by other AI platforms, MCP formalised a standard for incremental, repeated, and mutable access to heterogeneous knowledge sources. It specifies how LLMs request context, receive structured or semi-structured data, and integrate results back into iterative reasoning cycles.</p><p>By doing so, MCP redefines success for graph backends. Success is no longer about perfect semantic completeness but about fast, context-relevant retrieval, mutability, and alignment with execution loops. Graph models that cannot satisfy these operational constraints struggle under MCP, while those that do&#8212;particularly Labelled Property Graphs (LPGs)&#8212;emerge as natural backends.</p><h1>2. What MCP Architecture Actually Assumes</h1><p>Understanding why certain graph models succeed under MCP requires examining the protocol&#8217;s architectural assumptions and history. MCP emerged as AI systems became increasingly complex and multi-modal. Early experiments with knowledge-augmented LLMs highlighted three persistent challenges:</p><ol><li><p>Fragmented access patterns: LLMs needed knowledge from multiple heterogeneous sources simultaneously, including relational databases, graph stores, and procedural APIs. Without a standardised protocol, developers had to write custom connectors for each combination, resulting in fragile pipelines.</p></li><li><p>Contextual relevance and freshness: AI systems often required only partial context to answer a query or make a decision. Pulling entire datasets was inefficient or infeasible due to latency or scale. This created a structural need for incremental context retrieval, later formalised as a core MCP principle.</p></li><li><p>Dynamic, mutable knowledge: AI systems began operating over live data, such as events, logs, or operational states. Static graphs could not reflect these evolving realities, creating inconsistencies between reasoning and execution.</p></li></ol><p>MCP addresses these challenges and codifies four assumptions that directly influence graph modelling:</p><ul><li><p>Incremental retrieval: Agents request subgraphs or partial context rather than entire datasets, reducing overhead. Graph models must support efficient subgraph extraction.</p></li><li><p>Repeated, iterative access: Reasoning loops involve multiple passes over overlapping context fragments. Graph backends must support repeated traversals with predictable performance.</p></li><li><p>Mutable, evolving data: MCP assumes the backend reflects current operational state. Nodes and relationships may change between retrievals, requiring incremental updates and temporal awareness.</p></li><li><p>Composability with external tools: Graphs rarely operate in isolation. MCP assumes integration with APIs, procedural code, and other data sources. Data models must support flexible, real-time interactions rather than rigid ontology enforcement.</p></li></ul><p>These assumptions imply that graphs optimised purely for semantic completeness or formal reasoning encounter inefficiencies. MCP demands execution-first design, privileging traversal efficiency, mutability, and local context over theoretical purity. While MCP does not mandate a particular graph model, its architecture naturally aligns with LPGs, which satisfy operational and traversal requirements efficiently.</p><h1>3. Why Graph Data Modelling Matters Under MCP</h1><p>Once MCP is deployed, graph databases are no longer passive knowledge stores. They become active participants in AI reasoning cycles, with data models directly influencing performance, reliability, and scalability.</p><p>Historically, knowledge graphs were dominated by RDF and ontology-first design, emphasising logical consistency, universal identifiers, and strict schema validation. In static or archival contexts, these assumptions worked well, enabling inference engines to enforce ontology rules and ensure data interoperability.</p><p>However, MCP exposes a gap between traditional RDF-centric models and live AI workflows. Consider a reasoning cycle in a GraphRAG pipeline:</p><ol><li><p>An LLM requests context from the graph for a specific query.</p></li><li><p>The graph returns a relevant partial subgraph.</p></li><li><p>The agent reasons over this subgraph, potentially invoking external tools.</p></li><li><p>Results are written back, updating nodes and relationships.</p></li><li><p>The agent iterates, requesting additional or updated context.</p></li></ol><p>Each loop depends on low-latency traversal, incremental retrieval, and mutable state. RDF-based systems, optimised for semantic completeness, often require multiple joins, reification, or complex query reconstruction to produce meaningful subgraphs. This adds latency, increases engineering complexity, and introduces fragility, especially when temporal or event-driven data is involved.</p><p>Applied Knowledge Graphs (AKGs) evolved as a response. Unlike ontology-first graphs, AKGs prioritise actionability over completeness. They model knowledge as it is applied, not as it is theoretically perfect. Nodes and edges carry operational metadata, relationships may include temporal or confidence attributes, and schema enforcement is local rather than global.</p><p>Under MCP, AKGs are structurally necessary. The protocol assumes live, actionable knowledge that can be retrieved, traversed, and updated iteratively. Graph data models embracing these principles&#8212;particularly LPGs&#8212;are inherently better suited to MCP. LPGs provide:</p><ul><li><p>Native support for properties on relationships, including temporal and operational metadata.</p></li><li><p>Efficient traversal for partial subgraph extraction.</p></li><li><p>Flexible schema, enabling incremental enrichment and tolerance for evolving knowledge.</p></li><li><p>Direct alignment with operational loops, allowing AI agents to reason over live state without reconstruction overhead.</p></li></ul><p>MCP does not merely influence graph modelling&#8212;it highlights the structural strengths of AKG and LPG approaches. Graphs optimised for formal reasoning or semantic completeness must adapt or risk underperformance, while LPGs naturally support AI-driven workflows under MCP.</p><h1>4. Applied Knowledge Graphs as the Natural MCP Backend</h1><p>Applied Knowledge Graphs (AKGs) did not appear overnight. They evolved organically from the demands of operational systems and AI workflows, long before MCP formalised context reasoning.</p><p>Historically, knowledge graphs focused on description and inference. RDF-based graphs prioritised formal semantics, strict ontologies, and global consistency, excelling in interoperability, compliance, and reasoning over curated datasets. However, these assumptions made modelling live operational data difficult without additional abstraction layers.</p><p>As AI systems required real-time, actionable knowledge, practitioners experimented with applied rather than purely descriptive graphs. Early AKGs appeared in financial risk, supply chain monitoring, and operational analytics. Focus shifted from &#8220;what is true everywhere&#8221; to &#8220;what is relevant here and now&#8221;. Knowledge became partial, evolving, and operationally linked.</p><p>MCP formalises and accelerates this evolution by requiring incremental, repeated, and mutable context retrieval, codifying principles already demonstrated in AKGs:</p><ul><li><p>Incremental retrieval: AKGs deliver slices of knowledge rather than entire datasets.</p></li><li><p>Mutable, evolving state: Updates to nodes, edges, and properties are tracked over time.</p></li><li><p>Operational metadata: Confidence, provenance, or temporal validity encoded directly on relationships.</p></li></ul><p>MCP did not invent AKGs but enforces the operational, incremental, and temporal principles they embody. Graph models failing to support these aspects struggle under MCP, while LPG-aligned AKGs emerge as the natural backend.</p><h1>5. Why LPG Fits MCP Architecture Better Than Alternatives</h1><p>LPGs have evolved alongside operational graph systems for decades. Their rise reflects pressures formalised by MCP: mutable, traversable, and temporally aware graphs capable of responding to live queries.</p><p>RDF graphs excel in formal reasoning but often rely on indirect modelling for operational aspects. Representing temporal change, confidence, or state transitions frequently requires reification, named graphs, or event nodes, increasing complexity and query overhead. LPGs place properties directly on nodes and edges, enabling direct representation of operational and temporal knowledge, critical under MCP.</p><p>MCP assumes AI agents interact with graphs in iterative, context-driven loops, where each retrieval must be fast, predictable, and actionable. LPGs satisfy these assumptions because they provide:</p><ul><li><p>Direct edge properties: Temporal, confidence, or provenance information lives on relationships.</p></li><li><p>Traversal efficiency: Subgraph extraction and path exploration are native operations.</p></li><li><p>Flexible schema: LPGs tolerate evolving knowledge and support incremental enrichment.</p></li><li><p>Temporal modelling: Time-aware edge properties enable historical queries and state evolution analysis.</p></li></ul><p>MCP and LPG create structural synergy: MCP formalises execution loops and context retrieval, while LPG provides a graph model that naturally aligns with them. AKGs are the logical outcome: mutable, operational, and temporally aware graphs that support AI reasoning loops.</p><h1>6. MCP, LPG, and Temporal Reality</h1><p>Temporal modelling is central to AKGs and MCP-mediated AI reasoning. Agents rarely query only current states. Common queries include:</p><ul><li><p>&#8220;What relationships existed last week?&#8221;</p></li><li><p>&#8220;How did the state of this entity evolve over a sequence of events?&#8221;</p></li><li><p>&#8220;Which events contributed to the current state?&#8221;</p></li></ul><p>These are traversal-centric queries, not purely semantic inferences. MCP formalises incremental, repeated, live context retrieval, making temporal awareness essential.</p><p>LPGs support temporal modelling via properties on nodes and edges (e.g., start_time, end_time, version, confidence). This allows direct temporal queries without reification. For example, an author-affiliation edge can carry start_date and end_date, enabling efficient historical queries.</p><p>AKGs embed operational metadata with temporal attributes, ensuring subgraphs reflect both current state and historical evolution, supporting decision-making loops rather than static analysis. MCP&#8217;s iterative retrieval pattern emphasises this: each loop may request context differently depending on time or prior reasoning outcomes.</p><p>RDF struggles operationally. Temporal representation typically requires reification, named graphs, or event nodes, adding query complexity and traversal cost. Each MCP retrieval may require subgraph reconstruction across datasets, incompatible with low-latency, iterative access.</p><p>LPGs excel here. Temporal and operational attributes live directly on the graph, making subgraph extraction efficient and semantically meaningful. In GraphRAG flows&#8212;which repeatedly extract, reason over, and enrich subgraphs&#8212;this efficiency is critical.</p><h1>7. Where RDF Fits and Where MCP Exposes Its Limits</h1><p>RDF remains valuable for formal reasoning, ontology validation, and cross-organisational knowledge sharing. Its standardised triples and logical foundations support semantic rigour and federated data integration, where adherence to shared ontologies is essential.</p><p>However, MCP exposes RDF&#8217;s limitations in operational, incremental, and temporal reasoning. MCP assumes:</p><ul><li><p>Incremental and repeated retrieval: Agents rely on contextually relevant subgraphs, not full traversal.</p></li><li><p>Mutable and evolving state: Knowledge is updated continuously during reasoning loops.</p></li><li><p>Temporal and operational awareness: Relationships and nodes change over time and must be queried efficiently.</p></li></ul><p>RDF optimises for semantic completeness rather than operational efficiency. Temporal reasoning requires reification, named graphs, or event nodes, increasing complexity and latency. Incremental subgraph extraction is not native, so retrieval often involves costly reconstruction.</p><p>In MCP-mediated AI systems, these inefficiencies become operational bottlenecks. RDF can emulate incremental retrieval and mutability via extra layers, but doing so adds overhead and reduces responsiveness.</p><p>LPGs satisfy MCP requirements naturally: properties and temporal metadata live on nodes and edges, subgraph extraction is efficient, and iterative reasoning loops operate with minimal overhead. MCP does not diminish RDF&#8217;s value but exposes its limits for live, applied reasoning. RDF excels in federation and formal reasoning, but incremental, mutable, and temporal context access is LPG&#8217;s domain.</p><h1>8. What This Means for GraphRAG and AI Systems</h1><p>GraphRAG is both a pipeline, in the modern sense, and an architectural pattern for integrating LLMs with knowledge graphs. It defines an iterative reasoning cycle:</p><ol><li><p>Context retrieval: The agent queries the graph for a relevant subgraph, optionally filtered by temporal or operational attributes.</p></li><li><p>Reasoning and tool invocation: The LLM reasons over context and may invoke APIs or external services.</p></li><li><p>Result integration: Outputs are written back, updating nodes, edges, or properties.</p></li><li><p>Iteration: The agent requests additional or updated context, refining outputs incrementally.</p></li></ol><p>MCP formalises this flow, standardising interfaces and interaction patterns. It ensures predictable, efficient context retrieval, iterative reasoning, and live updates.</p><p>AKGs on LPG backends are particularly suited to GraphRAG flows:</p><ul><li><p>Efficient subgraph extraction for repeated retrieval.</p></li><li><p>Temporal and operational metadata on nodes and edges, supporting historical reasoning.</p></li><li><p>Mutable state allowing incremental enrichment without schema disruption.</p></li><li><p>Flexible schema supporting evolving operational data.</p></li></ul><p>RDF-based graphs struggle to support GraphRAG flows natively. Incremental retrieval and temporal reasoning require complex abstractions, adding latency and operational overhead. In MCP loops, RDF must reconstruct context each iteration, highlighting structural disadvantages.</p><p>GraphRAG demonstrates the structural advantage of LPG-backed AKGs under MCP. Agents iterate quickly, reason over live data, and incorporate temporal evolution efficiently, making LPG the natural choice for production-ready GraphRAG architectures.</p><h1>9. Conclusion</h1><p>MCP is not merely a convenience or AI feature; it is an architectural shift that reshapes success for graph data modelling. By privileging incremental context, repeated access, mutable state, and temporal reasoning, MCP determines which graph models thrive.</p><p>Applied Knowledge Graphs emerge as the default backend, and LPGs prevail because their architecture aligns naturally with MCP execution loops. Graph models optimised for semantic purity, ontological consistency, or formal reasoning struggle under operational demands.</p><p>MCP did not invent LPG dominance. It made operational, incremental, and temporal advantages impossible to ignore. In the era of AI-driven applied knowledge, LPGs are the graph model that survives in production.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!O5Av!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!O5Av!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!O5Av!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!O5Av!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!O5Av!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!O5Av!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2142201,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/187307740?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!O5Av!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!O5Av!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!O5Av!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!O5Av!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85892df-f4af-42f1-98e0-900dc7643749_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Previous posts</h1><ul><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphql-is-not-graph-tech">GraphQL Is Not Graph Tech</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-is-a-pipeline-not-a-pattern">GraphRAG Is a Pipeline, Not a Pattern</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-and-graph-data-science-for">GraphRAG and Graph Data Science for Financial Crime Document Processing</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/topological-and-temporal-aspects">Topological and Temporal Aspects of Graphs</a></p></li><li><p><a href="/__u/substack.com/@sergeyvasiliev/note/p-184057323?r=2r6lns&amp;utm_source=notes-share-action&amp;utm_medium=web">Labelled Property Graphs as a Foundation for Neuro-Symbolic Architecture</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-pg-and-rdf-structural-models">LPG, PG and RDF: Structural Models, Semantics, and Applied Reality</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-you-should-not-compare-in-memory">Why You Should Not Compare In-Memory LPG Graphs with LPG Storage Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/12-reasons-why-mcp-over-applied-knowledge">12 reasons why MCP over Applied Knowledge Graph is what you should try</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graph-summarisation-is-the-new-retrieval">Graph Summarisation Is the New Retrieval: A Practical View from the LPG and AKG Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/enterprise-knowledge-graphs-vs-applied">Enterprise Knowledge Graphs vs Applied Knowledge Graphs: Same Vision, Different Operational Path</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/a-practical-architecture-for-llm">A Practical Architecture for LLM Memory: LPG as the Adaptive Knowledge Cache</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/labels-as-the-real-semantic-layer">Labels as the Real Semantic Layer of LPG in GraphRAG and Applied Knowledge Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-understanding-the-model-beyond">LPG: Understanding the Model Beyond the Market Brands</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-engineering-patterns-from">GraphRAG Engineering Patterns: From Lexical Graphs to Knowledge Traversal</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/the-schema-paradox-why-lpgs-are-both">The Schema Paradox: Why LPGs Are Both Structured and Free</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-graphrag-outperforms-rag-in-real">Why GraphRAG Outperforms RAG in Real-World Applications</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-large-graphs-fail-small-when">Why Large Graphs Fail Small: When LPG Scalability Breaks Cognitive Coherence</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/applied-knowledge-graph-vs-knowledge">Applied Knowledge Graph vs Knowledge Graph Layer: Practical Insights from a Labelled Property Graph Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/cooking-with-graphrag-a-practical">Cooking with GraphRAG: A Practical Recipe for Your PoC</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[GraphQL Is Not Graph Tech]]></title><description><![CDATA[How Terminology Pollution Is Killing Graph Architecture And Where GraphQL Actually Belongs]]></description><link>https://sergeyvasiliev.substack.com/p/graphql-is-not-graph-tech</link><guid isPermaLink="false">https://sergeyvasiliev.substack.com/p/graphql-is-not-graph-tech</guid><dc:creator><![CDATA[Sergey Vasiliev]]></dc:creator><pubDate>Fri, 06 Feb 2026 09:47:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZGSG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Table of Contents</h2><ol><li><p>Introduction: The Interface Abstraction Fallacy</p></li><li><p>What GraphQL Actually Is, Mechanically</p></li><li><p>What Graph Technology Requires and Why GraphQL Does Not Provide It</p></li><li><p>Resolvers Versus Adjacency: Why Simulation Fails</p></li><li><p>Identity Loss and Semantic Degradation</p></li><li><p>Terminology Pollution and Its Impact on GraphRAG and AI Systems</p></li><li><p>GraphQL&#8217;s Legitimate Role Over Graph Databases</p></li><li><p>Conclusion: Architectural Precision Is Not Optional</p></li></ol><div><hr></div><h1>1. Introduction: The Interface Abstraction Fallacy</h1><p>GraphQL is one of the most successful API technologies of the last decade. Originally developed at Facebook to address the inefficiencies of REST-based mobile APIs, and later open-sourced and standardised under the GraphQL Foundation, it solved a real and persistent problem in distributed systems. REST interfaces frequently over-fetch data, under-fetch required context, and force teams into brittle endpoint proliferation. GraphQL replaced this with a declarative, contract-driven model that significantly improved client-server interaction and developer productivity.</p><p>What GraphQL did not do is introduce graph technology.</p><p>Despite this, the industry increasingly treats GraphQL as if it were part of the graph ecosystem. The word graph in its name, combined with nested queries and interconnected schemas, has created a persistent illusion of graph-native access. This illusion is reinforced by visual representations, marketing language, and informal explanations that blur the boundary between interface structure and data semantics.</p><p>The result is a category error. GraphQL presents a hierarchical interface abstraction, while graph technology operates on persistent networks of identity and relationships. Confusing these two paradigms leads to systems that look graph-like at the surface but fail under real connected-data workloads.</p><h1>2. What GraphQL Actually Is, Mechanically</h1><p>GraphQL is a query language for APIs combined with a strongly typed schema system. It defines how clients request data and how servers describe the shape of valid responses. Its execution model is resolver based.</p><p>When a GraphQL query is executed, the runtime performs a depth-first walk of the query document. Each field in the selection set triggers a resolver function responsible for producing that field&#8217;s value, often by invoking downstream services or databases. These resolvers are typically stateless, independent, and unaware of the broader data topology they are assembling.</p><p>GraphQL deliberately avoids defining anything about persistence, identity, or relationships. It does not specify how entities are stored, how relationships are represented, or how traversal should be executed. It does not preserve identity across field resolutions unless the application explicitly implements that behaviour. Nested objects are treated as subtrees of a response, not as entities with stable identities.</p><p>This is not a flaw. It is an intentional design decision. GraphQL is an interface abstraction, not a data model, storage engine, or computation framework.</p><h1>3. What Graph Technology Requires and Why GraphQL Does Not Provide It</h1><p>Graph technology is defined by its data management architecture, not by visual shape or API structure. A graph system represents information as a network of nodes, representing entities, and edges, representing relationships, grounded in mathematical graph theory. The defining characteristic is that connections between data points are treated as first-class elements throughout storage, querying, and execution.</p><p>In a graph system, entities have stable identities that persist independently of how they are accessed or queried. Relationships are explicitly stored rather than inferred at query time. Traversal is a native operation of the system, not an emergent behaviour assembled by application code. Queries express navigation intent directly, often across variable-length paths, and execution engines are designed with awareness of topology, degree, locality, and neighbourhood structure.</p><p>This architectural approach applies across graph paradigms, including property graphs, RDF triplestores, and graph analytics engines, even though their data models and query languages differ. In all cases, connectedness is intrinsic to the storage and execution model. Relationships are not reconstructed through joins, resolver chains, or procedural lookups. They are part of the underlying data representation.</p><p>GraphQL does not operate at this level. It has no concept of adjacency as a storage primitive, no awareness of graph topology, and no native support for traversal as a computational operation. Any appearance of connected navigation in GraphQL is produced by application logic coordinating independent resolver calls against one or more backends. The graph, in this case, exists only as an interface illusion, not as a data structure or execution model.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!WFHw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!WFHw!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!WFHw!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!WFHw!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!WFHw!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!WFHw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1152831,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/187069229?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!WFHw!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!WFHw!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!WFHw!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!WFHw!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4bd0a7ce-6d91-401c-88d4-0f3b2feaee66_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h1>4. Resolvers Versus Adjacency: Why Simulation Fails</h1><p>One of the most persistent misconceptions is the belief that GraphQL resolver chains are equivalent to graph traversals.</p><p>Resolver chains are a procedural execution pattern. Each resolver invocation is driven by the structure of the query document, not by the structure of the underlying data. Because resolvers are typically isolated, each apparent edge traversal frequently results in a new database request. This leads directly to the well-known N plus one query problem, where a single logical request expands into dozens or hundreds of backend queries.</p><p>By contrast, many property graph engines implement adjacency as a first-class storage concern. A notable example is index-free adjacency, an optimisation first developed and implemented in production by Neo4j. In this model, nodes store direct physical references to their neighbouring nodes. Traversal is therefore a pointer-based operation rather than an index lookup or join. Moving from one node to the next is proportional to the size of the local neighbourhood, not to the size of the entire dataset.</p><p>It is important to be precise here. Index-free adjacency is not a universal property of all graph systems, nor of all property graph engines. RDF triplestores, analytical graph platforms, and distributed graph systems may use different storage and traversal strategies. However, the key point remains that native graph engines execute traversal at the storage and execution layer, not by orchestrating procedural calls in application code.</p><p>GraphQL can only approximate traversal behaviour through batching, caching, and resolver coordination mechanisms such as DataLoader. These techniques mitigate symptoms but do not change the fundamental execution model. They add architectural complexity and latency while remaining semantically inferior to native graph traversal.</p><h1>5. Identity Loss and Semantic Degradation</h1><p>A defining characteristic of graph technology is identity preservation. In a graph database, an entity has a stable identity that remains constant regardless of how it is reached or how many times it appears in a query result. This enables cycle detection, path algorithms, centrality measures, and reasoning over connected structures.</p><p>GraphQL, by design, lacks intrinsic identity semantics. The runtime treats objects as fragments of a response tree. If the same real-world entity appears in multiple branches of a GraphQL response, it is represented as multiple independent object instances unless identity unification is explicitly implemented at the application layer.</p><p>This semantic degradation makes GraphQL unsuitable for higher-order graph workloads. Without stable identity, it is impossible to reason reliably about connectivity, reuse context across traversal steps, or perform graph algorithms. Responses may be structurally correct but semantically shallow.</p><h1>6. Terminology Pollution and Its Impact on GraphRAG and AI Systems</h1><p>This confusion becomes especially costly in GraphRAG and AI-driven architectures. Effective retrieval-augmented generation requires explicit structure, stable identity, and multi-hop navigation across ontologies. Large language models depend on high-fidelity contextual graphs, not just shaped responses.</p><p>Systems that rely on GraphQL as their primary graph layer tend to suffer from shallow retrieval. Queries are constrained by predefined schema paths, preventing dynamic exploration and discovery of latent relationships. Multi-hop reasoning is replaced by hard-coded expansion logic embedded in resolvers.</p><p>In these systems, GraphQL should be positioned where it excels: as a data isolation layer. Relationship navigation, inference, and reasoning must remain the responsibility of a dedicated graph engine.</p><h1>7. GraphQL&#8217;s Legitimate Role Over Graph Databases</h1><p>Used correctly, GraphQL provides real architectural value in front of graph databases. Its strength lies in isolation, not traversal.</p><p>GraphQL acts as a controlled abstraction layer that shields clients from internal graph complexity. It allows teams to expose curated, stable views of the graph while hiding internal identifiers, relationship types, and traversal strategies. This enables graph models to evolve without breaking client contracts.</p><p>GraphQL also provides a natural enforcement point for access control, validation, and governance. Permissions can be applied at the type and field level, independent of how the graph is stored or queried. This is particularly important in enterprise environments with complex compliance requirements.</p><p>In more complex systems, GraphQL can unify access across multiple backends, including graph databases, relational systems, and services. Clients interact with a consistent, type-safe interface, while each backend remains optimised for its specific workload.</p><p>Crucially, in this architecture GraphQL consumes the results of graph queries rather than replacing them. Traversal, pathfinding, and reasoning are performed by the graph engine. GraphQL shapes and delivers the results. This separation preserves both performance and semantic clarity.</p><h1>8. Conclusion: Architectural Precision Is Not Optional</h1><p>Precision in terminology is not pedantry. It is an architectural responsibility.</p><p>GraphQL is a highly successful API technology, originally created at Facebook to solve interface problems at scale. Graph databases are specialised systems for modelling and querying connected data. Treating them as interchangeable leads to hidden technical debt, performance bottlenecks masked by caching, and semantics buried in imperative code.</p><p>If a system requires deep traversal, reasoning, and analysis over connected data, it requires graph technology. If that same system needs a clean, stable, type-safe interface for diverse clients, GraphQL is an excellent choice.</p><p>They are complementary tiers of the stack, not substitutes. Respecting the boundary between interface traversal and data traversal is essential for building systems that remain performant, intelligible, and evolvable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ZGSG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ZGSG!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!ZGSG!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!ZGSG!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ZGSG!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_webp, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ZGSG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2041455,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sergeyvasiliev.substack.com/i/187069229?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!ZGSG!, /__u/sergeyvasiliev.substack.com/w_424, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png 424w, /__u/substackcdn.com/image/fetch/$s_!ZGSG!, /__u/sergeyvasiliev.substack.com/w_848, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png 848w, /__u/substackcdn.com/image/fetch/$s_!ZGSG!, /__u/sergeyvasiliev.substack.com/w_1272, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ZGSG!, /__u/sergeyvasiliev.substack.com/w_1456, /__u/sergeyvasiliev.substack.com/c_limit, /__u/sergeyvasiliev.substack.com/f_auto, /__u/sergeyvasiliev.substack.com/q_auto:good, /__u/sergeyvasiliev.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8382b4-9ed0-4dde-b322-c2eda7d6c6c4_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Previous posts</h1><ul><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-is-a-pipeline-not-a-pattern">GraphRAG Is a Pipeline, Not a Pattern</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-and-graph-data-science-for">GraphRAG and Graph Data Science for Financial Crime Document Processing</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/topological-and-temporal-aspects">Topological and Temporal Aspects of Graphs</a></p></li><li><p><a href="/__u/substack.com/@sergeyvasiliev/note/p-184057323?r=2r6lns&amp;utm_source=notes-share-action&amp;utm_medium=web">Labelled Property Graphs as a Foundation for Neuro-Symbolic Architecture</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-pg-and-rdf-structural-models">LPG, PG and RDF: Structural Models, Semantics, and Applied Reality</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-you-should-not-compare-in-memory">Why You Should Not Compare In-Memory LPG Graphs with LPG Storage Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/12-reasons-why-mcp-over-applied-knowledge">12 reasons why MCP over Applied Knowledge Graph is what you should try</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graph-summarisation-is-the-new-retrieval">Graph Summarisation Is the New Retrieval: A Practical View from the LPG and AKG Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/enterprise-knowledge-graphs-vs-applied">Enterprise Knowledge Graphs vs Applied Knowledge Graphs: Same Vision, Different Operational Path</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/a-practical-architecture-for-llm">A Practical Architecture for LLM Memory: LPG as the Adaptive Knowledge Cache</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/labels-as-the-real-semantic-layer">Labels as the Real Semantic Layer of LPG in GraphRAG and Applied Knowledge Graphs</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/lpg-understanding-the-model-beyond">LPG: Understanding the Model Beyond the Market Brands</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/graphrag-engineering-patterns-from">GraphRAG Engineering Patterns: From Lexical Graphs to Knowledge Traversal</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/the-schema-paradox-why-lpgs-are-both">The Schema Paradox: Why LPGs Are Both Structured and Free</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-graphrag-outperforms-rag-in-real">Why GraphRAG Outperforms RAG in Real-World Applications</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/why-large-graphs-fail-small-when">Why Large Graphs Fail Small: When LPG Scalability Breaks Cognitive Coherence</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/applied-knowledge-graph-vs-knowledge">Applied Knowledge Graph vs Knowledge Graph Layer: Practical Insights from a Labelled Property Graph Perspective</a></p></li><li><p><a href="/__u/sergeyvasiliev.substack.com/p/cooking-with-graphrag-a-practical">Cooking with GraphRAG: A Practical Recipe for Your PoC</a></p></li></ul>]]></content:encoded></item></channel></rss>