<https://docs.linkeddatahub.com/user-guide/import-data/import-csv-data/>
        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/import-data/import-csv-data/#content>;
        <http://purl.org/dc/terms/created>
                "2026-10-25T17:35:19.596Z"^^<http://www.w3.org/2001/XMLSchema#dateTime>;
        <http://purl.org/dc/terms/creator>
                <https://admin.linkeddatahub.com/acl/agents/01fe43e2-f80e-4312-b37e-86063a80e4f9/#this>;
        <http://purl.org/dc/terms/description>
                "Step-by-step guide to converting CSV data to RDF and importing it into the end-user dataspace";
        <http://purl.org/dc/terms/modified>
                "2026-10-27T12:17:39.421Z"^^<http://www.w3.org/2001/XMLSchema#dateTime>;
        <http://purl.org/dc/terms/title>
                "Import CSV data";
        <http://rdfs.org/sioc/ns#has_container>
                <https://docs.linkeddatahub.com/user-guide/import-data/>;
        <http://www.w3.org/ns/auth/acl#owner>
                <https://admin.linkeddatahub.com/acl/agents/01fe43e2-f80e-4312-b37e-86063a80e4f9/#this> .

<https://docs.linkeddatahub.com/user-guide/import-data/import-csv-data/#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 converting CSV data to RDF and importing it into the end-user dataspace</p>\n    <p>A CSV import has three components:</p>\n    <dl>\n        <dt>CSV file</dt>\n        <dd>The file containing the tabular data</dd>\n        <dt>Mapping query</dt>\n        <dd>SPARQL <code>CONSTRUCT</code> query that maps CSV rows to an RDF representation</dd>\n        <dt>CSV import</dt>\n        <dd>Combines the file with the corresponding query</dd>\n    </dl>\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                <div>\n                    <video aria-label=\"Importing CSV data and mapping it to RDF\" controls=\"controls\" preload=\"metadata\" src=\"/uploads/a1152e7d99c4d59d1cb8a894895be4d85a1aaeca\"></video>\n                    <p>All the import components can be created from a single dialog, but the steps below create them one at a time:</p>\n                    <ol>\n                        <li>First, create a container for the data to be imported. This will be the import's <dfn>target container</dfn>.</li>\n                        <li>Upload a CSV file. Click on the <span class=\"ac-btn in-primary ap-solid sz-md\">Create <span aria-hidden=\"true\" class=\"msi caret\">expand_more</span></span> dropdown at the bottom of the page and select\n                                <dfn>File</dfn>. This will open a new form.</li>\n                        <li>Fill out the <dfn>Item</dfn> fields — the document's <samp>Title</samp> (required) and optional <samp>Description</samp>, the same fields used when <a href=\"../../create-data/create-documents/\">creating a document</a>.</li>\n                        <li>\n                            Fill out the mandatory <dfn>File</dfn> fields:\n                            <dl>\n                                <dt>Filename</dt>\n                                <dd>Click on <dfn>Choose file</dfn> and select a CSV file from your computer</dd>\n                                <dt>Title</dt>\n                                <dd>File title</dd>\n                            </dl>\n                        </li>\n                        <li>Once all the fields have been filled in, click <span class=\"ac-btn in-primary ap-solid sz-sm\">Save</span>.</li>\n                        <li>The browser will open your imported file.</li>\n                        <li>Create a <a href=\"../../../reference/imports/csv/#vocabulary-conversion\">mapping query</a> that will\n                            transform the uploaded CSV to RDF — the <a href=\"../../../tutorial/data/\">tutorial's Data stage</a> walks through a complete example, <samp>categories.rq</samp>.\n                            Click on the <span class=\"ac-btn in-primary ap-solid sz-md\">Create <span aria-hidden=\"true\" class=\"msi caret\">expand_more</span></span> dropdown at the bottom of the page and\n                            select <dfn>CONSTRUCT</dfn>. This will open a new form.</li>\n                        <li>Fill out the <samp>Item</samp> fields.</li>\n                        <li>\n                            Fill out the mandatory <dfn>Query</dfn> fields:\n                            <dl>\n                                <dt>Text</dt>\n                                <dd>SPARQL <code>CONSTRUCT</code> query string</dd>\n                                <dd><em>You will not be able to save the query if its syntax is not valid SPARQL 1.1.</em></dd>\n                                <dt>Title</dt>\n                                <dd>Query title</dd>\n                            </dl>\n                        </li>\n                        <li>Once all the fields have been filled in, click <span class=\"ac-btn in-primary ap-solid sz-sm\">Save</span>. You can find it saved in the\n                                <dfn>Queries</dfn> container, which you can open from the <a href=\"../../../reference/user-interface/#document-hierarchy\">document tree</a> in the left sidebar.</li>\n                        <li>Click on the <span class=\"ac-btn in-primary ap-solid sz-md\">Create <span aria-hidden=\"true\" class=\"msi caret\">expand_more</span></span> dropdown button at the bottom of the page and select <dfn>CSV Import</dfn>.\n                                This will open a new form.</li>\n                        <li>Fill out the <samp>Item</samp> fields.</li>\n                        <li>\n                            Fill out the mandatory <dfn>CSV Import</dfn> fields:\n                            <dl>\n                                <dt>File</dt>\n                                <dd>Start typing the name of your CSV file and select it from the typeahead</dd>\n                                <dt>Query</dt>\n                                <dd>Select the mapping query using the typeahead</dd>\n                                <dt>Title</dt>\n                                <dd>Import title</dd>\n                            </dl>\n                        </li>\n                        <li>Click <span class=\"ac-btn in-primary ap-solid sz-sm\">Save</span> and you will be redirected to the newly created import document.</li>\n                        <li>Reload the document after a few moments to see the import progress. On success, the amount of data imported is\n                                displayed; on failure, the constraint violations or other import errors.</li>\n                        <li>Go back to the target container to see the newly imported data items.</li>\n                    </ol>\n                </div>\n            </div>\n        <div aria-labelledby=\"command-line-interface-tab\" class=\"ac-tabpanel\" hidden=\"hidden\" id=\"command-line-interface-pane\" role=\"tabpanel\">\n                <div>\n                    <p>The import is described by a document, which the command takes as its last argument, so create that document first. With the <a href=\"../../../reference/command-line-interface/\">CLI</a> installed and the <samp>LDH_*</samp> variables set:</p>\n                    <pre>doc=$(ldh create item \\\n    --title \"Categories import\" \\\n    --container \"${LDH_BASE}categories/\")\n\nldh import csv \\\n    --title \"Categories\" \\\n    --query-file categories/categories.rq \\\n    --csv-file categories/categories.csv \\\n    \"$doc\"</pre>\n                    <p class=\"exhibit-links\">Source: <a href=\"https://github.com/AtomGraph/LinkedDataHub-Apps/blob/master/demo/northwind-traders/categories/categories.rq\" target=\"_blank\">categories.rq</a>, <a href=\"https://github.com/AtomGraph/LinkedDataHub-Apps/blob/master/demo/northwind-traders/categories/categories.csv\" target=\"_blank\">categories.csv</a> — the mapping and the data are walked through in the <a href=\"../../../reference/imports/csv/\">CSV imports reference</a> and the <a href=\"../../../tutorial/data/\">tutorial's Data stage</a></p>\n                    <p><code>--delimiter</code> defaults to <samp>,</samp> and can be set to another character.</p>\n                    <p>The command prints the URI of the import it created, a fragment of <samp>$doc</samp>. The import runs in the background; add <code>--wait</code> to return only once it has ended, with exit code <samp>1</samp> and the error if it failed.</p>\n                </div>\n            </div>\n    </div>\n    <p class=\"ldh-body-lg\"><a href=\"../../../reference/imports/csv/\" target=\"_blank\">Read more about how CSV imports work.</a></p>\n</div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
