solid / solid/specification

Proposal: expose alternative query interfaces via `pim:storage`

Open
#455 10 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

doc: Protocol status: Waiting for Commenter
Dominant language
HTML
Stars
563
Forks
108
Avg merge
4d 13h
Merged PRs (30d)
3

Description

Not sure if this is the correct location for this proposal, feel free to move this issue to https://github.com/solid/specification or elsewhere if needed

Motivation

There has been some discussions in the past around exposing query interfaces as alternative to the LDP-based interface, such as SPARQL endpoints, or TPF/QPF interfaces (https://github.com/solid/specification/issues/229, https://github.com/solid/specification/issues/227).
However, up until now, there is still no agreed upon way to expose such alternative interfaces, which makes it difficult to make use of such query interfaces in the Solid ecosystem.
Below, I list a simple and concrete proposal to fill this gap.

Proposed solution

The WebID spec specifies the use of pim:storage as "location(s) of the WebID owner's storage space(s)".
The spec says that this should refer to the root LDP container.
However, if we would lower this requirement, and make it say that it should refer to any kind of interface to access the user's pod, then this predicate could also be used to refer to an alternative interface using this predicate, such as a SPARQL endpoint or QPF interface.

Example

For example, a person deciding to expose a SPARQL endpoint and a QPF interface next to its LDP-based storage, could then do this as follows:

<http://example.org/bob/#me> pim:storage
  <http://example.org/bob/container/>,
  <http://example.org/bob/sparql>,
  <http://example.org/bob/qpf>.

A client app could consider these storages as alternatives to each other, and pick the one that is best suited for the query needs of the client.

Limitations

The only downside of this approach would be backwards-compatibility, where apps would assume that these alternative interfaces are also LDP containers. For this reason, it may be better to introduce a new predicate, such as solid:storage.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the WebID specification's definition of pim:storage and the related discussions in specification issues 229 and 227. Done requires an agreed approach for exposing alternative query interfaces, including whether pim:storage can be broadened or a new predicate such as solid:storage is needed, followed by the corresponding specification update.

Written by the indexing model from the issue text.

Assessment

Domain
backend-api-design, documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.