<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Nodal Framework Blog</title>
        <link>https://nodalframework.pages.dev/blog</link>
        <description>Nodal Framework Blog</description>
        <lastBuildDate>Thu, 20 Aug 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Building one .NET model for multiple graph engines]]></title>
            <link>https://nodalframework.pages.dev/blog/building-nodal-framework</link>
            <guid>https://nodalframework.pages.dev/blog/building-nodal-framework</guid>
            <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Why Nodal Framework separates graph semantics from provider languages and response formats.]]></description>
            <content:encoded><![CDATA[<figure class="cover_aMyb coverPost_ozuq"><img src="https://nodalframework.pages.dev/img/journal/default-cover.svg" alt="Abstract connected graph illustrating the Nodal Framework architecture." loading="eager"><figcaption>The Nodal Framework Journal documents architectural decisions, constraints, and lessons learned.</figcaption></figure><p>Graph databases share nodes and relationships, but their query languages, transports, transaction boundaries, and response formats are not interchangeable. Nodal Framework began with a simple rule: the domain should be portable, while execution should remain native.</p>
<p>That rule produced three explicit layers. Application code works with POCO nodes, relationship payloads, typed sets, and expression-based queries. Core converts those operations into provider-neutral query and mutation models. Provider packages validate capabilities, compile native commands, execute through the correct transport, and normalize results.</p>
<p>The important word is <strong>explicit</strong>. When a TigerGraph traversal cannot preserve a requested vertex-simple path semantic, Nodal does not download the graph and pretend the operation was portable. It reports the unsupported combination. When Neo4j can execute a repeated hop through native Cypher, the provider uses that facility.</p>
<p>P0 established the query foundation: parameterized filters, ordering, paging, projections, aggregates, directed traversal, bounded depth, paths with edge payloads, compiled factories, raw query escape hatches, normalized subgraphs, and tracking integration. The next phase will harden these contracts through real applications, improve migration lifecycle tooling, and begin graph analytics design.</p>
<p>This journal will document those decisions—including constraints and failed approaches—so users and future contributors can understand not only how the framework works, but why.</p>]]></content:encoded>
            <category>architecture</category>
            <category>dotnet</category>
            <category>neo4j</category>
            <category>tigergraph</category>
        </item>
    </channel>
</rss>