Backlinks
Document structure and the basic data management actions
Document hierarchy
The basic structure of resources in a LinkedDataHub dataspace is analogous to a file system, but built using RDF
resources and relationships between them instead. There is a hierarchy of containers (folders),
which are collections of items (files) as well as sub-containers (sub-folders). Both containers
(instances of dh:Container) and items (instances of dh:Item) are documents (instances of foaf:Document). Items cannot contain other documents.
The first level of resources in a container is referred to as its children (of which that container is the parent), while all levels down the hierarchy are collectively referred to as descendants. In the Northwind Traders dataspace used in the examples below:
https://localhost:4443/ # the root container ├── categories/ # container │ ├── 1/ # item — the Beverages category │ └── … ├── products/ # container │ ├── 1/ # item — the Chai product │ └── … └── orders/ # container
When a user logs in, the dataspace loads its root container (unless a specific URI was requested). From there, users can navigate down the resource hierarchy, starting with children of the root container. At any moment there is only one current document per page, on which management actions can be performed: it can be viewed, edited etc.
Containers
RDF serialization
Document properties such as sioc:has_parent, dct:created, dct:modified, acl:owner are automatically managed by LinkedDataHub.
@prefix dh: <https://w3id.org/atomgraph/linkeddatahub/document-hierarchy#> .
@prefix ldh: <https://w3id.org/atomgraph/linkeddatahub#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix acl: <http://www.w3.org/ns/auth/acl#> .
<https://localhost:4443/categories/>
a dh:Container ;
rdf:_1 <https://localhost:4443/categories/#select-children> ;
dct:created "2025-06-02T19:12:26.533Z"^^xsd:dateTime ;
dct:creator <https://admin.localhost:4443/acl/agents/865c2431-8436-4ae8-b300-2a531a013cd0/#this> ;
dct:title "Categories" ;
sioc:has_parent <https://localhost:4443/> ;
acl:owner <https://admin.localhost:4443/acl/agents/865c2431-8436-4ae8-b300-2a531a013cd0/#this> .
<https://localhost:4443/categories/#select-children>
a ldh:Object ;
rdf:value ldh:ChildrenView .The <#select-children> resource is an ldh:Objectcontent block whose rdf:valueldh:ChildrenView renders the container's children listing.
Live: /categories/ (the demo's version composes further blocks on top of this shape)
Items
RDF serialization
Document properties such as sioc:has_container, dct:created, dct:modified, acl:owner are automatically managed by LinkedDataHub.
@prefix dh: <https://w3id.org/atomgraph/linkeddatahub/document-hierarchy#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix acl: <http://www.w3.org/ns/auth/acl#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix schema: <https://schema.org/> .
<https://localhost:4443/products/1/>
a dh:Item ;
dct:created "2025-06-02T19:49:48.126Z"^^xsd:dateTime ;
dct:creator <https://admin.localhost:4443/acl/agents/865c2431-8436-4ae8-b300-2a531a013cd0/#this> ;
dct:title "Chai" ;
sioc:has_container <https://localhost:4443/products/> ;
acl:owner <https://admin.localhost:4443/acl/agents/865c2431-8436-4ae8-b300-2a531a013cd0/#this> ;
foaf:primaryTopic <https://localhost:4443/products/1/#this> .
<https://localhost:4443/products/1/#this>
a schema:Product ;
schema:name "Chai" ;
schema:identifier "1" ;
schema:category <https://localhost:4443/categories/1/#this> ;
schema:provider <https://localhost:4443/suppliers/1/#this> .An item is often about something — here the document products/1/ describes the Chai product, a non-information
resource identified by the #this fragment and linked with foaf:primaryTopic.
Source: products/products.rq (the mapping that mints it) · Live: /products/1/
Management
| Action | Description |
|---|---|
| Create | Create a new child document by clicking the Create button. Fill out the form. Click Save. |
| Update | Open the current document editing form by choosing Edit in the action bar's Actions dropdown. Make changes. Click Save. |
| Delete | Delete the current document by choosing Delete in the action bar's Actions dropdown. |
| Action | CLI command |
|---|---|
| Create container | ldh create container |
| Create item | ldh create item |
| Update | ldh put |
| Delete | ldh delete |
For example, creating the categories/ container (with the LDH_* environment variables supplying the certificate and base URI):
ldh create container \ --parent "$LDH_BASE" \ --title "Categories" \ --slug categories
The command prints the created document's URL — https://localhost:4443/categories/.
To create documents step-by-step, follow the Create documents guide