<https://docs.linkeddatahub.com/reference/command-line-interface/>
        a       <https://www.w3.org/ns/ldt/document-hierarchy#Item>;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1>
                <https://docs.linkeddatahub.com/reference/command-line-interface/#content>;
        <http://purl.org/dc/terms/created>
                "2026-06-16T20:33:46.843Z"^^<http://www.w3.org/2001/XMLSchema#dateTime>;
        <http://purl.org/dc/terms/creator>
                <https://admin.linkeddatahub.com/acl/agents/0ab4a0f7-1ab0-4d0c-8efc-63a79a2e9a10/#this>;
        <http://purl.org/dc/terms/description>
                "CLI scripts can be used perform all actions available in the UI";
        <http://purl.org/dc/terms/title>
                "Command line interface";
        <http://rdfs.org/sioc/ns#has_container>
                <https://docs.linkeddatahub.com/reference/>;
        <http://www.w3.org/ns/auth/acl#owner>
                <https://admin.linkeddatahub.com/acl/agents/0ab4a0f7-1ab0-4d0c-8efc-63a79a2e9a10/#this> .

<https://docs.linkeddatahub.com/reference/command-line-interface/#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=\"lead\">CLI scripts can be used perform all actions available in the UI</p>\n    <p>LinkedDataHub CLI wraps the <a href=\"../http-api/\">HTTP API</a> into a set of shell scripts with convenient parameters. The scripts should run on any Unix-based system.\n        They can be used for testing, automation, scheduled execution and such. It is usually much quicker to perform actions using CLI rather than the\n        <a href=\"../user-interface/\">user interface</a>, as well as easier to reproduce.</p>\n    <p>Some scripts correspond to a single request to LinkedDataHub, others combine others into tasks with multiple interdependent requests, such as the CSV import.</p>\n    <p>You will need to supply a <samp>.pem</samp> file of your <a href=\"../../get-started/#get-webid\">WebID certificate</a> as well as its password as script arguments, among others.</p>\n    <div class=\"alert alert-info\">\n        <p>The CLI scripts live in the <samp>bin</samp> folder and need to be added to the <code>$PATH</code> environmental variable. For example:</p>\n        <pre>export PATH=\"$(find bin -type d -exec realpath {} \\; | tr '\n' ':')$PATH\"</pre>\n        <p>They also use the <a href=\"https://jena.apache.org/documentation/tools/\" target=\"_blank\">Jena's CLI commands</a> internally, so make sure to have them on <code>$PATH</code> before running the scripts.</p>\n    </div>\n    <div>\n        <h2 id=\"parameters\">Parameters</h2>\n        <p>Common parameters used by most scripts include:</p>\n        <dl>\n            <dt>-f</dt>\n            <dt>--cert-pem-file</dt>\n            <dd><samp>.pem</samp> file with the WebID certificate of the agent</dd>\n            <dt>-p</dt>\n            <dt>--cert-password</dt>\n            <dd>Password of the WebID certificate</dd>\n            <dt>-b</dt>\n            <dt>--base</dt>\n            <dd>Base URI of the application</dd>\n            <dt>--proxy</dt>\n            <dd>The host this request will be proxied through (optional)</dd>\n            <dd>It can be used with port 5443 for which the client certificate authentication is always enabled, for example <samp>--proxy https://localhost:5443/</samp></dd>\n        </dl>\n        <p>Other parameters are script-specific.</p>\n    </div>\n    <div>\n        <h2 id=\"usage\">Usage</h2>\n        <p>A usage message with parameters of a script is printed when the scripted is run without any arguments. There can be named parameters and default parameters, both of those can be optional. For example:</p>\n        <pre>$ add-select.sh\nCreates a SPARQL SELECT query.\n\nUsage:  add-select.sh options\n\nOptions:\n  -f, --cert-pem-file CERT_FILE        .pem file with the WebID certificate of the agent\n  -p, --cert-password CERT_PASSWORD    Password of the WebID certificate\n  -b, --base BASE_URI                  Base URI of the application\n  --proxy PROXY_URL                    The host this request will be proxied through (optional)\n\n  --title TITLE                        Title of the chart\n  --description DESCRIPTION            Description of the chart (optional)\n  --uri URI                            URI of the query (optional)\n\n  --query-file ABS_PATH                Absolute path to the text file with the SPARQL query string\n  --service SERVICE_URI                URI of the SPARQL service specific to this query (optional)</pre>\n        <p>The optional parameters are marked with <samp>(Optional)</samp>. In this case there is no default argument, but some scripts require document (named graph) URI as the default parameter, e.g. ontology document URL.</p>\n        <p>This is how an <samp>add-select.sh</samp> invocation would look like:</p>\n        <pre>add-select.sh \\\n  -b \"$base\" \\\n  -f ./ssl/owner/cert.pem \\\n  -p \"$owner_cert_password\" \\\n  --proxy \"$proxy\" \\\n  --title \"Select concepts\" \\\n  --query-file \"$pwd/queries/select-concepts.rq\"</pre>\n    </div>\n    <div>\n        <h2 id=\"scripts\">Scripts</h2>\n        <p>Currently supported:</p>\n        <table class=\"table table-striped\">\n            <thead>\n                <tr>\n                    <th>Purpose</th>\n                    <th>Script</th>\n                </tr>\n            </thead>\n            <tbody>\n                <tr>\n                    <th colspan=\"2\">Low-level (Graph Store Protocol)</th>\n                </tr>\n                <tr>\n                    <td><samp>GET</samp> request</td>\n                    <td><samp>get.sh</samp></td>\n                </tr>\n                <tr>\n                    <td><samp>POST</samp> request</td>\n                    <td><samp>post.sh</samp></td>\n                </tr>\n                <tr>\n                    <td><samp>PUT</samp> request</td>\n                    <td><samp>put.sh</samp></td>\n                </tr>\n                <tr>\n                    <td><samp>PATCH</samp> request</td>\n                    <td><samp>patch.sh</samp></td>\n                </tr>\n                <tr>\n                    <td><samp>DELETE</samp> request</td>\n                    <td><samp>delete.sh</samp></td>\n                </tr>\n            </tbody>\n            <tbody>\n                <tr>\n                    <th colspan=\"2\">Documents</th>\n                </tr>\n                <tr>\n                    <td>Create container document</td>\n                    <td><samp>create-container.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Create item document</td>\n                    <td><samp>create-item.sh</samp></td>\n                </tr>\n            </tbody>\n\n            <tbody>\n                <tr>\n                    <th colspan=\"2\">Content</th>\n                </tr>\n                <tr>\n                    <td>Append object block (instance of <samp>ldh:Object</samp>) to document</td>\n                    <td><samp>content/add-object-block.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Append XHTML block (instance of <samp>ldh:XHTML</samp>) to document</td>\n                    <td><samp>content/add-xhtml-block.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Remove block from document</td>\n                    <td><samp>content/remove-block.sh</samp></td>\n                </tr>\n            </tbody>\n\n            <tbody>\n                <tr>\n                    <th colspan=\"2\">Instances of system classes</th>\n                </tr>\n                <tr>\n                    <td>Append service (instance of <samp>ldh:GenericService</samp>) to document</td>\n                    <td><samp>add-generic-service.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Append result set chart (instance of <samp>ldh:ResultSetChart</samp>) to document</td>\n                    <td><samp>add-result-set-chart.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Append <code>SELECT</code> query (instance of <samp>sp:Select</samp>) to document</td>\n                    <td><samp>add-select.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Append SPARQL view (instance of <samp>ldh:View</samp>) to document</td>\n                    <td><samp>add-view.sh</samp></td>\n                </tr>\n            </tbody>\n            <tbody>\n                <tr>\n                    <th colspan=\"2\"><a href=\"../imports/\">Imports</a></th>\n                </tr>\n                <tr>\n                    <td>Create file</td>\n                    <td><samp>add-file.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Create CONSTRUCT query</td>\n                    <td><samp>add-construct.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Create CSV import</td>\n                    <td><samp>imports/add-csv-import.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Import CSV data</td>\n                    <td><samp>imports/import-csv.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Create RDF import</td>\n                    <td><samp>imports/add-rdf-import.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Import RDF data</td>\n                    <td><samp>imports/import-rdf.sh</samp></td>\n                </tr>\n            </tbody>\n            <tbody>\n                <tr>\n                    <th colspan=\"2\"><a href=\"../administration/\">Administration</a></th>\n                </tr>\n                <tr>\n                    <td>Add <code>owl:import</code> to ontology</td>\n                    <td><samp>admin/add-ontology-import.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Clear and reload ontology</td>\n                    <td><samp>admin/clear-ontology.sh</samp></td>\n                </tr>\n            </tbody>\n            <tbody>\n                <tr>\n                    <th colspan=\"2\"><a href=\"../administration/acl/\">Access control</a></th>\n                </tr>\n                <tr>\n                    <td>Add <a href=\"../administration/acl/#agents\">agent</a> to <a href=\"../administration/acl/#groups\">group</a></td>\n                    <td><samp>admin/acl/add-agent-to-group.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Create <a href=\"../administration/acl/#authorizations\">authorization</a></td>\n                    <td><samp>admin/acl/create-authorization.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Create <a href=\"../administration/acl/#groups\">group</a></td>\n                    <td><samp>admin/acl/create-group.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Make application publicly readable to any agent</td>\n                    <td><samp>admin/acl/make-public.sh</samp></td>\n                </tr>\n            </tbody>\n            <tbody>\n                <tr>\n                    <th colspan=\"2\"><a href=\"../administration/ontologies/\">Ontologies</a></th>\n                </tr>\n                <tr>\n                    <td>Add <a href=\"../administration/ontologies/#classes\">class</a></td>\n                    <td><samp>admin/ontologies/add-class.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Add <code>CONSTRUCT</code> query</td>\n                    <td><samp>admin/ontologies/add-construct.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Create <a href=\"../administration/ontologies/#ontologies\">ontology</a></td>\n                    <td><samp>admin/ontologies/create-ontology.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Add <a href=\"../administration/ontologies/#constraints\">property constraint</a></td>\n                    <td><samp>admin/ontologies/add-property-constraint.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Add restriction</td>\n                    <td><samp>admin/ontologies/add-restriction.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Add <code>SELECT</code> query</td>\n                    <td><samp>admin/ontologies/add-select.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Import ontology</td>\n                    <td><samp>admin/ontologies/import-ontology.sh</samp></td>\n                </tr>\n            </tbody>\n            <tbody>\n                <tr>\n                    <th colspan=\"2\"><a href=\"../administration/packages/\">Packages</a></th>\n                </tr>\n                <tr>\n                    <td>Install package</td>\n                    <td><samp>admin/packages/install-package.sh</samp></td>\n                </tr>\n                <tr>\n                    <td>Uninstall package</td>\n                    <td><samp>admin/packages/uninstall-package.sh</samp></td>\n                </tr>\n            </tbody>\n        </table>\n        <p>Usage example:</p>\n        <pre>add-file.sh \\\n  -b \"https://localhost:4443/\" \\\n  -f ./ssl/owner/cert.pem \\\n  -p \"$owner_cert_password\" \\\n  --title \"Friends\" \\\n  --file friends.csv \\\n  --content-type text/csv</pre>\n        <p>See also the <a href=\"../../user-guide/import-data/\">data import user guides</a>.</p>\n    </div>\n    <p class=\"lead\">Find the <a href=\"https://github.com/AtomGraph/LinkedDataHub/tree/master/bin\" target=\"_blank\">CLI scripts on GitHub</a> or check out the\n        <a href=\"https://github.com/AtomGraph/LinkedDataHub-Apps/tree/master/demo\" target=\"_blank\">demo apps</a> that use them.</p>\n</div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
