LWS Server

A Linked Web Storage (LWS) server implementing the W3C LWS Protocol, written as plain Jakarta servlets and bootstrapped (for now) by Spring Boot on an embedded Eclipse Jetty container.

It is a personal storage server: clients create, read, update and delete RDF and binary resources organised into containers, authenticate with any of the LWS credential suites, and the owner (or fine-grained access rules) decide who may do what.

What it implements

Standards

Area Standard
Resource & containment model LWS Core, LDP / Solid conventions
RDF metadata + linkset RDF 1.1, RFC 9264 Linksets
Patch formats RFC 7386 Merge Patch, RFC 6902 JSON Patch, SPARQL 1.1 Update
Conditional / range requests RFC 9110, RFC 7233
Errors RFC 9457 problem+json
Integrity RFC 9530 Digest Fields
Auth OpenID Connect, SAML 2.0, RFC 9449 DPoP
Notifications RFC 9421 HTTP Message Signatures, Activity Streams 2.0
Preferences RFC 7240 Prefer
TLS provisioning ACME (RFC 8555) via acme4j

Start here

  • Getting Started — build, run, make your first request, mint the first owner.
  • Architecture — how the server is wired and where data lives.
  • Configuration — every lws.* setting.
  • HTTP API — methods, headers, content negotiation, discovery, integrity.
  • Security — the consolidated security model and its limits.

Tracking an evolving spec. The LWS core operations are implemented from the normative Operations/ source in the spec repository, which is ahead of the rendered Editor’s Draft. Where the draft is silent, the implementation follows the LDP / Solid conventions it derives from (trailing-slash containers, Link: rel="type" interaction models, content negotiation, conditional requests). Because the source is in flux, some details may change.