<https://docs.linkeddatahub.com/reference/data-model/blocks/#content>
        a       <https://w3id.org/atomgraph/linkeddatahub#XHTML>;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n    <p class=\"ldh-body-lg\">Content blocks and the actions for managing them</p>\n    <p>The content list is a <a href=\"../../user-interface/#layout-modes\" target=\"_blank\">layout mode</a> that allows composition of rich, structured web documents from multiple types of content blocks.</p>\n    <p>The blocks are attached to the document resource using <a href=\"https://www.w3.org/TR/rdf-schema/#ch_seq\" target=\"_blank\">RDF sequence properties</a> <code>rdf:_1</code>, <code>rdf:_2</code> etc.\n        The index number in the property URI indicates the position of the content block on the document's content list. The Northwind dashboard's root document, for example, starts with:</p>\n    <pre>&lt;https://localhost:4443/&gt;\n    rdf:_1 &lt;https://localhost:4443/#overview-intro&gt; ;      # an XHTML block\n    rdf:_2 &lt;https://localhost:4443/#sales-trend-block&gt; .   # an object block wrapping a chart</pre>\n    <p class=\"exhibit-links\">Source: <a href=\"https://github.com/AtomGraph/LinkedDataHub-Apps/blob/master/demo/northwind-traders/root.ttl\" target=\"_blank\">root.ttl</a> · Live: <a href=\"https://northwind-traders.demo.linkeddatahub.com/\" target=\"_blank\">the dashboard</a></p>\n    <p>Blocks come in two types: XHTML (<code>ldh:XHTML</code>) and object (<code>ldh:Object</code>). These are the only types allowed as content block values — anything that is not XHTML markup, such as a query, a chart or an external resource, has to be wrapped into an <code>ldh:Object</code>. A built-in constraint rejects other values.</p>\n    <p>Blocks can be rearranged by dragging a block's handle to a new position. Every block also offers a button that copies the block's URI to the clipboard.</p>\n    <img alt=\"The top of the Northwind dashboard's content list, with a block's drag handle and copy button visible\" src=\"/uploads/6ee792727c3a4b661f5139ec86c60105db18d958\"></img>\n    <div>\n        <h2 id=\"xhtml-blocks\">XHTML blocks</h2>\n        <p>An XHTML block is a fragment of XHTML, stored as a <a href=\"https://www.w3.org/TR/xml-c14n11/\" target=\"_blank\">canonical XML</a> literal (<code>rdf:XMLLiteral</code>) in the RDF document. It is edited in place using the rich-text editor, which also supports <a href=\"../../../user-guide/edit-content/\">RDFa annotations</a>.</p>\n        <div>\n            <h3 id=\"xhtml-rdf-serialization\">RDF serialization</h3>\n            <pre>@prefix ldh: &lt;https://w3id.org/atomgraph/linkeddatahub#&gt; .\n@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .\n\n&lt;https://localhost:4443/#overview-intro&gt;\n    a       ldh:XHTML ;\n    rdf:value \"&lt;div xmlns=\\\"http://www.w3.org/1999/xhtml\\\"&gt;\\n&lt;p&gt;The iconic sample database, reborn as an RDF Knowledge Graph.&lt;/p&gt;\\n&lt;/div&gt;\"^^rdf:XMLLiteral .</pre>\n        </div>\n    </div>\n    <div>\n        <h2 id=\"object-blocks\">Object blocks</h2>\n        <p>Blocks other than XHTML content are called <dfn>objects</dfn> and must have a dereferenceable URI. Objects are embedded (transcluded) into the HTML page. You can use any <a href=\"../resources/\">RDF resource</a> or uploaded file as an object.</p>\n        <p>LinkedDataHub will first attempt to load RDF data from the object URI and render it as a block. If that fails, it will simply embed it using the HTML <code>&lt;object&gt;</code> element. Object blocks can be used to embed queries, charts, and other LinkedDataHub system resources.</p>\n        <p>Built-in block types render as cards: a header carries the block's title and actions such as the <a href=\"../../user-interface/#backlinks\">links popover</a> and the copy-URI button, and the block's content follows below. Block-type-specific controls join the header area — a <a href=\"../resources/#views\">view</a> block, for example, adds its <a href=\"../resources/#faceted-search\">facet toolbar</a> and <a href=\"../resources/#parallax\">parallax row</a> there. The layout of the content may depend on the active mode of the block.</p>\n        <div>\n            <h3 id=\"object-rdf-serialization\">RDF serialization</h3>\n            <pre>@prefix ldh: &lt;https://w3id.org/atomgraph/linkeddatahub#&gt; .\n@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .\n@prefix dct: &lt;http://purl.org/dc/terms/&gt; .\n\n&lt;https://localhost:4443/#top-manager&gt;\n    a       ldh:Object ;\n    dct:title \"Vice President, Sales\" ;\n    rdf:value &lt;https://localhost:4443/employees/2/#this&gt; .</pre>\n            <p>This block from the Northwind dashboard embeds a plain data resource — the Vice President of Sales, rendered with his description and photo.\n                The object can equally be a <a href=\"../resources/#queries\">query</a>, a <a href=\"../resources/#charts\">chart</a>, a\n                <a href=\"../resources/#views\">view</a>, or an external Linked Data URI, and an optional <code>ac:mode</code> on the block picks the\n                <a href=\"../../user-interface/#layout-modes\">layout mode</a> it renders in.</p>\n            <p class=\"exhibit-links\">Source: <a href=\"https://github.com/AtomGraph/LinkedDataHub-Apps/blob/master/demo/northwind-traders/root.ttl\" target=\"_blank\">root.ttl</a> · Live: <a href=\"https://northwind-traders.demo.linkeddatahub.com/\" target=\"_blank\">the dashboard</a></p>\n        </div>\n    </div>\n    <div>\n        <h2 id=\"management\">Management</h2>\n        <div class=\"ac-tabs or-horizontal\">\n            <div class=\"ac-tablist sz-md va-line\" role=\"tablist\">\n                <button aria-controls=\"user-interface-pane\" aria-selected=\"true\" class=\"ac-tab is-on\" id=\"user-interface-tab\" role=\"tab\" type=\"button\"><span class=\"ac-tab-lbl\">User interface</span></button>\n                <button aria-controls=\"command-line-interface-pane\" aria-selected=\"false\" class=\"ac-tab\" id=\"command-line-interface-tab\" role=\"tab\" type=\"button\"><span class=\"ac-tab-lbl\">Command line interface</span></button>\n            </div>\n            <div aria-labelledby=\"user-interface-tab\" class=\"ac-tabpanel\" id=\"user-interface-pane\" role=\"tabpanel\">\n            <p>Content blocks can only be managed when the <a href=\"../../user-interface/#layout-modes\" target=\"_blank\">Content layout mode</a> is active. The edit and delete buttons only appear for agents with write access.</p>\n            <table>\n                <caption class=\"ac-vh\">Block management actions</caption>\n                <thead>\n                    <tr>\n                        <th scope=\"col\">Action</th>\n                        <th scope=\"col\">Description</th>\n                    </tr>\n                </thead>\n                <tbody>\n                    <tr>\n                        <th scope=\"row\">Create XHTML block</th>\n                        <td>Click the <span class=\"ac-btn in-primary ap-solid sz-md\">XHTML</span> button at the bottom of the page. Create the XHTML content in the rich-text editor.</td>\n                    </tr>\n                    <tr>\n                        <th scope=\"row\">Create object block</th>\n                        <td>Click the <span class=\"ac-btn in-primary ap-solid sz-md\">Object</span> button at the bottom of the page. Enter the object's value URI. Click <span class=\"ac-btn in-primary ap-solid sz-sm\">Save</span>.</td>\n                    </tr>\n                    <tr>\n                        <th scope=\"row\">Update XHTML block</th>\n                        <td>Click into the block's content and edit it in place. The changes are <a href=\"../../../user-guide/edit-content/\">saved automatically</a> when the focus leaves the block — there is no separate save button.</td>\n                    </tr>\n                    <tr>\n                        <th scope=\"row\">Update object block</th>\n                        <td>Click the <span class=\"ac-iconbtn sz-sm in-neutral ap-ghost\"><span aria-hidden=\"true\" class=\"msi sm\">edit</span></span> button in the top-right corner of the block (it will only appear when you move the mouse close to that corner). Change the object's value URI. Click <span class=\"ac-btn in-primary ap-solid sz-sm\">Save</span>.</td>\n                    </tr>\n                    <tr>\n                        <th scope=\"row\">Delete</th>\n                        <td>Click the <span class=\"ac-iconbtn sz-sm in-destructive ap-ghost\"><span aria-hidden=\"true\" class=\"msi sm\">close</span></span> button in the top-right corner of the block (it will only appear when you move the mouse close to that corner). Confirm in the dialog that appears.</td>\n                    </tr>\n                    <tr>\n                        <th scope=\"row\">Reorder</th>\n                        <td>Drag the block by its drag handle and drop it in a different position on the content list.</td>\n                    </tr>\n                    <tr>\n                        <th scope=\"row\">Copy URI</th>\n                        <td>Click the copy button on the block to copy the block's URI to the clipboard.</td>\n                    </tr>\n                </tbody>\n            </table>\n            </div>\n            <div aria-labelledby=\"command-line-interface-tab\" class=\"ac-tabpanel\" hidden=\"hidden\" id=\"command-line-interface-pane\" role=\"tabpanel\">\n            <table>\n                <caption class=\"ac-vh\">Block actions and their CLI commands</caption>\n                <thead>\n                    <tr>\n                        <th scope=\"col\">Action</th>\n                        <th scope=\"col\">CLI command</th>\n                    </tr>\n                </thead>\n                <tbody>\n                    <tr>\n                        <th scope=\"row\">Create XHTML block</th>\n                        <td><a href=\"../../command-line-interface/#commands\"><samp>ldh add xhtml-block</samp></a></td>\n                    </tr>\n                    <tr>\n                        <th scope=\"row\">Create object block</th>\n                        <td><a href=\"../../command-line-interface/#commands\"><samp>ldh add object-block</samp></a></td>\n                    </tr>\n                    <tr>\n                        <th scope=\"row\">Delete</th>\n                        <td><a href=\"../../command-line-interface/#commands\"><samp>ldh remove block</samp></a></td>\n                    </tr>\n                </tbody>\n            </table>\n            <p>Updating and reordering blocks has no dedicated command; use <samp>ldh patch</samp> with a SPARQL update on the document.</p>\n            </div>\n        </div>\n    </div>\n    <p class=\"ldh-body-lg\">To compose content blocks step-by-step, follow the <a href=\"../../../user-guide/create-data/create-content/\">Create content</a> guide</p>\n</div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .

<https://docs.linkeddatahub.com/reference/data-model/blocks/>
        a       <https://w3id.org/atomgraph/linkeddatahub/document-hierarchy#Item>;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1>
                <https://docs.linkeddatahub.com/reference/data-model/blocks/#content>;
        <http://purl.org/dc/terms/created>
                "2026-09-29T09:52:34.691Z"^^<http://www.w3.org/2001/XMLSchema#dateTime>;
        <http://purl.org/dc/terms/creator>
                <https://admin.linkeddatahub.com/acl/agents/5ba81960-d511-4a3b-8b9a-cb5bb278dd95/#this>;
        <http://purl.org/dc/terms/description>
                "Content blocks and the actions for managing them";
        <http://purl.org/dc/terms/title>
                "Content blocks";
        <http://rdfs.org/sioc/ns#has_container>
                <https://docs.linkeddatahub.com/reference/data-model/>;
        <http://www.w3.org/ns/auth/acl#owner>
                <https://admin.linkeddatahub.com/acl/agents/5ba81960-d511-4a3b-8b9a-cb5bb278dd95/#this> .
