Structured Data (RDF Resources)#

Structured data, in this context, refer to Resource Description Framework (RDF) data that are represented as Things in SolidDatasets, where SolidDatasets are organized in Containers.

Things, SolidDataset, and Containers#

Data is structured as properties of a Thing, where a Thing refers to a data entity. For example, if you want to save information about a course, you can have a Thing that represents a book for the course, and save various properties (such as name, author) for that book; the author itself can be another Thing with its own properties.

A Thing is saved as part of a SolidDataset, where a SolidDataset contains a set of Things. That is, you do not save a Thing independently from its SolidDataset.

You can organize SolidDatasets in a Container. A Container can contain SolidDatasets and other Resources, including other Containers. Containers are analogous to folders in a directory structure.

For example, in your Pod, you could have: a Container named fall2021/; fall2021/ contains another Container named courses/; courses/ contains a SolidDataset that corresponds to the course Writing101; and the Writing101 contains data about the Things (such as the books) for that course.

A Pod represented as a directory structure, containing a folder/container "fall2021". The folder/container "fall2021" contains a folder/container "courses", which contains a document "Writing101". Alongside the directory structure, the "Writing101" document is also shown separately, containing separate areas labelled "#book1", "#book2" and "#otherThing".

URL as Identifiers#

Each Container’s URL act as its unique identifier. A Container’s URL ends with a slash /.

Each SolidDataset’s URL act as its unique identifier. Its URL path consists of its containers and its name.

Each Thing’s URL act as its unique identifier. Typically, all Things in a SolidDataset have URLs relative to the SolidDataset’s URL. That is, a Thing’s URL generally is the SolidDataset’s URL appended with a # hash fragment.

For example, consider the following content in a Pod where the Pod URL is https://storage.inrupt.com/<Root Container>/:

A Pod represented as a directory structure, containing a folder/container "fall2021". The folder/container "fall2021" contains a folder/container "courses", which contains a document "Writing101". Alongside the directory structure, the "Writing101" document is also shown separately, containing areas labelled "#book1", "#book2" and "#otherThing".
  • fall2021/, the Container, has the URL https://storage.inrupt.com/<Root Container>/fall2021/.

  • courses/, the Container, has the URL https://storage.inrupt.com/<Root Container>/fall2021/courses/.

  • Writing101, the SolidDataset, has the URL https://storage.inrupt.com/<Root Container>/fall2021/courses/Writing101.

  • The Things in Writing101 have URLs relative to its URL; e.g.,

    • https://storage.inrupt.com/<Root Container>/fall2021/courses/Writing101#book1

    • https://storage.inrupt.com/<Root Container>/fall2021/courses/Writing101#book2

    • https://storage.inrupt.com/<Root Container>/fall2021/courses/Writing101#otherThing

Inrupt Client Library#

To read and write data to Pods, Inrupt provides the solid-client library.

Usage Examples#