Proposal: expose alternative query interfaces via `pim:storage`
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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