<https://docs.linkeddatahub.com/user-guide/manage-packages/>
        a       <https://w3id.org/atomgraph/linkeddatahub/document-hierarchy#Item>;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1>
                <https://docs.linkeddatahub.com/user-guide/manage-packages/#content>;
        <http://purl.org/dc/terms/created>
                "2026-09-29T09:52:54.422Z"^^<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>
                "Step-by-step guide to installing and uninstalling packages";
        <http://purl.org/dc/terms/title>
                "Manage packages";
        <http://rdfs.org/sioc/ns#has_container>
                <https://docs.linkeddatahub.com/user-guide/>;
        <http://www.w3.org/ns/auth/acl#owner>
                <https://admin.linkeddatahub.com/acl/agents/5ba81960-d511-4a3b-8b9a-cb5bb278dd95/#this> .

<https://docs.linkeddatahub.com/user-guide/manage-packages/#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\">Step-by-step guide to installing and uninstalling packages</p>\n    <div class=\"ac-alert va-informative\" role=\"status\">\n        <span class=\"ac-alert-ic\"><span aria-hidden=\"true\" class=\"msi outline\">info</span></span>\n        <div class=\"ac-alert-body\">\n            <p class=\"ac-alert-text\">Package management requires write access to the dataspace's <samp>settings</samp> document, which in practice means the owner of the dataspace.</p>\n        </div>\n    </div>\n    <p>Packages were introduced in LinkedDataHub 5.2. Since 5.10 they are installed <em>declaratively</em>: a dataspace imports a package with a single <code>ldh:import</code> triple in its settings. The dedicated install/uninstall endpoints, and the package <samp>Actions</samp> menu that drove them, have been removed.</p>\n    <div>\n        <h2 id=\"install-package\">Install a package</h2>\n        <p>Installing a package adds new functionality to your dataspace by importing its ontology and stylesheet. Packages are published under <samp>https://packages.linkeddatahub.com/</samp>, with their sources in the <a href=\"https://github.com/AtomGraph/LinkedDataHub-Apps/tree/master/packages\" target=\"_blank\"><samp>packages/</samp></a> directory of the LinkedDataHub-Apps repository.</p>\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>Follow these steps to install a package through the web interface:</p>\n                    <ol>\n                        <li>Open the end-user dataspace of your dataspace and make sure you are logged in</li>\n                        <li>Click the settings dropdown button in the right section of the navigation bar</li>\n                        <li>Select <dfn>Dataspace</dfn> from the dropdown menu to open the <dfn>Dataspace settings</dfn> modal</li>\n                        <li>Scroll down to the <dfn>Packages</dfn> section, which lists the available packages with their descriptions</li>\n                        <li>Tick the <dfn>Installed</dfn> checkbox of the package you want to install</li>\n                        <li>Click <span class=\"ac-btn in-primary ap-solid sz-sm\">Save</span></li>\n                    </ol>\n                    <p>The page reloads with the package applied. The checkboxes are inputs of the settings form, so several packages can be installed and uninstalled in a single <span class=\"ac-btn in-primary ap-solid sz-sm\">Save</span>.</p>\n                </div>\n            <div aria-labelledby=\"command-line-interface-tab\" class=\"ac-tabpanel\" hidden=\"hidden\" id=\"command-line-interface-pane\" role=\"tabpanel\">\n                    <p>List what the registry offers, marking the ones this dataspace already imports:</p>\n                    <pre>ldh packages list</pre>\n                    <p>Then install one by its URI:</p>\n                    <pre>ldh packages add --package https://packages.linkeddatahub.com/editor/taxonomy/#this</pre>\n                    <p>(The base URI, owner certificate and its password come from the <a href=\"../../reference/command-line-interface/#environment-variables\"><samp>LDH_*</samp> environment variables</a>.)</p>\n                    <p>The command writes a single <code>ldh:import</code> triple on the dataspace's <samp>settings</samp> document — that declaration <em>is</em> the installation. It matches the dataspace by type rather than by URI, because the dataspace's URI is an opaque <samp>urn:</samp> declared in <samp>config/system.trig</samp>.</p>\n                </div>\n        </div>\n    </div>\n    <div>\n        <h2 id=\"uninstall-package\">Uninstall a package</h2>\n        <p>Uninstalling a package removes its ontology and stylesheet from your dataspace. Data you created using the package vocabulary remains but may not display or function correctly without the package.</p>\n        <div class=\"ac-tabs or-horizontal\">\n            <div class=\"ac-tablist sz-md va-line\" role=\"tablist\">\n                <button aria-controls=\"user-interface-2-pane\" aria-selected=\"true\" class=\"ac-tab is-on\" id=\"user-interface-2-tab\" role=\"tab\" type=\"button\"><span class=\"ac-tab-lbl\">User interface</span></button>\n                <button aria-controls=\"command-line-interface-2-pane\" aria-selected=\"false\" class=\"ac-tab\" id=\"command-line-interface-2-tab\" role=\"tab\" type=\"button\"><span class=\"ac-tab-lbl\">Command line interface</span></button>\n            </div>\n            <div aria-labelledby=\"user-interface-2-tab\" class=\"ac-tabpanel\" id=\"user-interface-2-pane\" role=\"tabpanel\">\n                    <p>Follow these steps to uninstall a package through the web interface:</p>\n                    <ol>\n                        <li>Open the <dfn>Dataspace settings</dfn> modal as described above</li>\n                        <li>Find the package in the <dfn>Packages</dfn> section</li>\n                        <li>Untick its <dfn>Installed</dfn> checkbox</li>\n                        <li>Click <span class=\"ac-btn in-primary ap-solid sz-sm\">Save</span></li>\n                    </ol>\n                </div>\n            <div aria-labelledby=\"command-line-interface-2-tab\" class=\"ac-tabpanel\" hidden=\"hidden\" id=\"command-line-interface-2-pane\" role=\"tabpanel\">\n                    <p>Uninstalling retracts the same triple, and is idempotent — removing an import the dataspace does not have succeeds and changes nothing:</p>\n                    <pre>ldh packages remove --package https://packages.linkeddatahub.com/editor/taxonomy/#this</pre>\n                </div>\n        </div>\n    </div>\n    <div>\n        <h2 id=\"verify-installation\">Verify the installation</h2>\n        <div class=\"ac-alert va-informative\" role=\"status\">\n            <span class=\"ac-alert-ic\"><span aria-hidden=\"true\" class=\"msi outline\">info</span></span>\n            <div class=\"ac-alert-body\">\n                <p class=\"ac-alert-text\">Installing or uninstalling a package takes effect on the <strong>next request</strong> — the package ontology joins the dataspace's imports closure and its stylesheet is composed into the dataspace stylesheet. No restart is needed.</p>\n            </div>\n        </div>\n        <p>After installing a package, verify that it was applied:</p>\n        <ol>\n            <li>Reopen the <dfn>Dataspace settings</dfn> modal and check that the package's <dfn>Installed</dfn> checkbox is ticked</li>\n            <li>Check that the <code>ldh:import</code> declaration was stored by fetching the <samp>settings</samp> document:\n                <pre>ldh get \\\n  --accept text/turtle \\\n  \"https://localhost:4443/settings\"</pre>\n                <p>The output contains an <code>ldh:import</code> triple with the package URI as its object.</p>\n            </li>\n            <li>Check that the package ontology joined the imports closure by querying the <samp>ns</samp> endpoint — for the taxonomy editor package, the\n                <code>skos:Concept</code> constructor becomes visible there:\n                <pre>curl -k -G \\\n  -E ssl/owner/cert.pem:\"$owner_cert_password\" \\\n  -H \"Accept: application/sparql-results+xml\" \\\n  \"https://localhost:4443/ns\" \\\n  --data-urlencode 'query=ASK { &lt;http://www.w3.org/2004/02/skos/core#Concept&gt; &lt;http://spinrdf.org/spin#constructor&gt; ?constructor }'</pre>\n                <p>SPARQL queries fall outside the <samp>ldh</samp> command set, so this one uses <samp>curl</samp> with the <a href=\"../../get-started/get-an-account/\">PEM certificate</a>.</p>\n            </li>\n            <li>In the end-user dataspace, check that package-specific classes are offered by the <span class=\"ac-btn in-primary ap-solid sz-md\">Create <span aria-hidden=\"true\" class=\"msi caret\">expand_more</span></span> dropdown</li>\n            <li>If the package includes a stylesheet, verify that its custom UI elements are rendering</li>\n        </ol>\n    </div>\n    <div>\n        <h2 id=\"edit-package-ontology\">Edit the package ontology</h2>\n        <p>On the first request after the import, the package ontology is copied into a document of your dataspace's admin dataspace, under its\n            <samp>ontologies/</samp> container and named after the package path — for the taxonomy editor, <samp>https://admin.localhost:4443/ontologies/editor-taxonomy/</samp>.\n            That document is the package ontology as far as your dataspace is concerned: its constructors, constraints and views are edited there the same\n            way as those of your own namespace ontology, and a change takes effect after the ontology cache is cleared.</p>\n        <p>The copy is taken once. A newer version of the package does not reach a dataspace that already imported it; to pick it up, delete the\n            <samp>ontologies/</samp> document, clear the ontology cache, and let the next request materialize the package again — edits made to the document are lost with it.</p>\n        <pre>ldh delete \"https://admin.localhost:4443/ontologies/editor-taxonomy/\"\nldh admin clear ontology</pre>\n    </div>\n    <div>\n        <h2 id=\"customize-package-behavior\">Customize package behavior</h2>\n        <p>Packages may include custom XSLT stylesheets that affect how data is displayed. You can further customize the behavior by:</p>\n        <ul>\n            <li><a href=\"../../extending/change-layout/#create-stylesheet\" target=\"_blank\">Importing additional stylesheets</a> to extend package functionality</li>\n            <li><a href=\"../../extending/change-layout/#override-output\" target=\"_blank\">Overriding package templates</a> to customize the rendering of package resources</li>\n        </ul>\n        <p>See the <a href=\"../../extending/change-layout/\" target=\"_blank\">Change layout guide</a> for detailed instructions on stylesheet customization.</p>\n    </div>\n    <div>\n        <h2 id=\"troubleshooting\">Troubleshooting</h2>\n        <h3 id=\"installation-fails\">Installation fails</h3>\n        <p>If the <span class=\"ac-btn in-primary ap-solid sz-sm\">Save</span> or the <samp>ldh patch</samp> is rejected:</p>\n        <ul>\n            <li>Verify you are logged in with an agent that has write access to the dataspace's <samp>settings</samp></li>\n            <li>Verify the package URI is correct and dereferenceable, and that its metadata declares <code>lds:ontology</code> and <code>ac:stylesheet</code></li>\n            <li>Review the error message — a rejected settings update reports the constraint violation that caused it</li>\n        </ul>\n        <h3 id=\"functionality-not-visible\">Package functionality not visible</h3>\n        <p>If installed package features are not visible:</p>\n        <ul>\n            <li>Reload the page — the stylesheet is composed on the next request, but the browser may still hold the previous one</li>\n            <li>Clear the browser cache if stylesheets are not updating</li>\n            <li>Verify the package ontology is in the imports closure by querying the <samp>ns</samp> endpoint as shown above</li>\n            <li>Check that you have appropriate permissions to view package resources</li>\n        </ul>\n    </div>\n    <p class=\"ldh-body-lg\"><a href=\"../../reference/administration/packages/\" target=\"_blank\">Read more about how packages work.</a></p>\n</div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
