-
Notifications
You must be signed in to change notification settings - Fork 44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Handling requests without an interaction model #105
Comments
Perhaps acl and meta resources should have their own interaction models. Edit: It would help to tie it with resource life cycle rules. |
Yeah, in light of that there is an expectation that So, our meta resources is a composition of LDP-RS but without the containment requirement. |
I'm not sure if there is or should have any expectation that it they are tied to LDP but I agree that they act like LDP-RS without containment baggage. Their interaction models can be described independently. We are already implicitly doing it so why not be explicit? It makes certain things simpler eg. hiding acl and meta resources from container lists: #116 |
FWIW, Trellis treats acl and meta resources as an LDP-RS (but without any relationship to LDP containment). The main reasons are:
As an LDP-RS, responses for these resources contain LDP link headers, identifying them as an LDP-RS |
@acoburn Thanks for sharing! Trellis' treatment seems in line with having dedicated interaction models for acl and meta resources. How does Trellis differentiate between acl/meta resources from the rest? Would a declarative approach help to distinguish the resources? |
I don't have a particular opinion on this one way or the other, though I tend not to think of these as "dedicated interaction models". That is, the interaction from a client perspective is basically the same (hence, they are all LDP-RS).
Internally, every resource can be thought of as a dataset in which these different categories of data are separate partitions (named graphs). The partitions include:
The model is very extensible and it can support SHACL/ShEx metadata as well. It also makes it really easy to distinguish between these different categories of triples. This model also holds true for all LDP-NR, which simply point to a location where the binary byte stream can be dereferenced.
Yes, that is, essentially the way it works now, though that approach is all internal to the server. It would, however, be easy to expose a distinct
Though any client will have (presumably) already followed the |
Since acl and meta don't don't live and die like regular LDP-RS, dedicated interaction models can make that distinction. While clients interact with acl and meta just like any LDP-RS, there is an agreement with the server about their lifecycle and observability. Relying on Would Trellis' use of |
This is a really good point. A possibly related piece of information is that the
Yes -- for these internal named graph IRIs, I reused existing identifiers where appropriate ( |
FWIW, the most recent stuff I've committed to the test suite solid-contrib/test-suite#56 does LDP-NR and LDP-RS interactions very vanilla, i.e. no |
Continuing with tests, I found that NSS will add a directory with the |
If I understand correctly, I have some doubt that will work neatly because an ACL can be associated to multiple resources. Hence, requiring multiple relations in the Link header referring to all resources using the same ACL. |
We had a short discussion about this, in the light of that NSS mostly does the Right Thing without the interaction model specified. Moreover, since ending with This suggest to me that we shouldn't do anything dramatic if interaction model lacks, we have several pieces of information that will tell us what kind of resource it is without relying on the interaction model HTTP |
I've mapped segment ending with and without The question is, should we prescribe or describe that. Aside: It is worthwhile to consider how existing LDP implementations can transition by implementing the Solid spec. Using the interaction models in a uniform way can help with that. Solid applications can interact with a class of LDP servers. |
Resolution: in the meeting of 2019-12-04, we decided that, upon receiving a request without interaction model, the server will be determine the model using a specified set of heuristics to be specified in #128. |
Closing this issue based on #128 (comment) . Feedback welcome. |
How should servers handle
POST
,PUT
,PATCH
requests that not include LDP's interaction model(s) inLink
?For example:
Content-Type
( if not RDFSource, default to NonRDFSource or Resource?)What may be the ramifications?
The text was updated successfully, but these errors were encountered: