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.

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.

Management

Document management actions
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.

To create documents step-by-step, follow the Create documents guide