Skip to content
Aaron Coburn edited this page Jan 21, 2021 · 59 revisions

Trellis is a modular LDP server that emphasizes both scalability and conformance with Web standards.

The architecture of Trellis supports scaling out a system horizontally, both to support large quantities of data, data redundancy and high server loads. Plans for new features are described in the Development Roadmap.

Installation

The easiest way to install and run Trellis is to use Docker. All released artifacts are published on Docker hub.

For developers extending Trellis, all Java components are available on Maven Central. They can be included in a Maven project with these coordinates:

<dependency>
    <groupId>org.trellisldp</groupId>
    <artifactId>trellis-bom</artifactId>
    <version>0.16.0</version>
</dependency>

Core Features

Resources are managed by means of a RESTful HTTP API, following the Linked Data Platform specification. Creation, modification and deletion operations are mapped to standard HTTP methods that a client can use to interact with server resources.

An HTTP client is also able to retrieve the historical state of a resource at any arbitrary point in time. This is done by following the interaction models of the Memento specification. For more information and examples of how a client interacts with versions of a resource, please refer to the resource versioning document.

In addition to accessing historical versions of a resource, it is also useful to understand who made what change at what point in time. This information is made available to HTTP clients with a provenance (audit) feature that is part of every Trellis resource, though clients will need elevated privileges in order to access this information.

Authentication and Authorization

Clients can authenticate to a Trellis repository using JWT tokens. This mechanism can be turned on or off with configuration values. More information about how Trellis authenticates users can be found on the Authentication page. Furthermore, Trellis authentication can tie into any standard OIDC identity provider.

After a client is authenticated and a WebID is assigned to the agent, Authorization decisions can be controlled with WebAC, an RDF vocabulary for defining access to resources. For more information and examples, please visit the Authorization page.

External integrations

Trellis does not do everything. There will naturally be a desire to make use of external systems, such as a search engine or a triple store. Trellis makes it easy to support real-time integrations of such external components by publishing a notification every time a resource is added, modified or deleted. These notifications conform to the Activity Streams 2.0 specification.