-
Notifications
You must be signed in to change notification settings - Fork 103
PUT should not switch resources between container and non-container #201
Comments
Also: After a PUT to |
Yeah, that'd be my hunch too... |
They are constraints that may be used by implementations. Resource owners can potentially allow any interaction model at those URIs.
Why?
Why? |
I definitely think that a PUT to a / url should result in container creation. |
Why? |
The containment update goes against LDP's recommendation https://www.w3.org/TR/ldp/#ldpc-put-mbrprops :
|
That is not how I interprete that statement. My interpretation is that if someone You know, I think the whole LDP R* stuff is just messy. These semantics should be entirely in-band in an ontology... |
I have considered those interpretations however I don't think the interpretation is exclusive to the interaction being directly on the container ie. however I want to note here that LDP would essentially permit |
Hmm, if only there was a Linked Data spec in which operations are defined formally, leaving no room for interpretation... |
One point of ambiguity around containment triples and It seems pretty clear that a Likewise, a What is unclear to me is whether a |
AFAICT, there is no (implied) statement which expects Information about the parent container (implied or not) is nowhere in sight. Note how this is also the exact issue we have already experienced in some cases about wanting to extract the context of a resource ie. child-to-parent relationship. Even if a client wanted to also update containment triples after creating an LDPR, it would neither know where, what or how to update. That justifiably prohibits the client from making a meaningful containment update anywhere. The required information is simply unavailable ie. neither the server or the client knows. On the other hand, the way to update is clearly paved via A subtle point is that servers manage containment triples while clients are prohibited from managing. Perhaps I've missed something but I'm defaulting to Occam's razor. |
heya @csarven, re:
You also said this about
I suppose Interestingly, LDP only recommends: https://www.w3.org/TR/ldp/#ldpc-patch-req :
So, it is probably preferable that servers SHOULD NOT allow |
One more: Under Containers->
|
I just wonder if we are looking too much to LDP with regards to container membership, Solid clearly has stronger assumptions around this, and it seems that we would simplify the discussion if we set them into MUSTs, they can then be relaxed later if needed. I think it is important though, that we should only mandate a strict subset of LDP in this context. So, @csarven , I'm not quite sure what you meant with
so, I'll just spell out what I'm thinking, and then you are welcome to dissect and see if we are in agreement: Whatever we think about sharing slash semantics between the server and client, internal to the server, we can surely say that the / has semantics, so that As for @csarven saying:
I'm then thinking about the RFC's statement:
[my emphasis]. My interpretation of that final sentence is that this is applicable to containment triples, i.e. the side effect of adding containment triples to the LDPC is well within the recommended practice of RFC7231. So, if we accept that the server is responsible for managing the containment triples, and the client should not touch them, then I think that the answer to @acoburn 's question:
becomes that the server will also update the |
Aside: if LDP conformance or proper extensibility is a non-concern, then we can skip a class of discussions. Virtually anything is possible if we have open discussion and reach to some consensus on what a spec should say. I'm hoping that we can arrive somewhere without breaking away from the Web architecture and core specs that Solid is trying to play along with.
LDP has the notion of "server-managed triples" that are triggered through
Possible but redundant.
I reached a different conclusion: a brief list of issues or at least considerations that needs to be taken into account at solid/specification#35 (comment) under "essentially warrants URI string processing tied to LDP that entails". Taken in totality, I think it increases the complexity of the system.
Sure, I think that's LDP's position as well. Requesting to create As for atomicity: you know "make each program do one thing well".. Moreover, taking the URI slicing approach once again leads right back to building lazy clients where the server does the smarts based on some yet-another-API. I see that going in the opposite direction of what we expect from applications in the Solid ecosystem.
That can indeed be one way to interpret. Most commonly, as you know, the intention of linking in that sentence is realised through mechanisms like eg. |
Yeah, but I'm not going that far :-) We should take care not to break LDP, and also ensure that any extensions are friendly, but it also seems to me that LDP allows for way more subtilities than we need, and what it seems to me Solid has thus far adopted.
Sure!
But then, it seems the server needs to materialize the containment triples or keep track of how a certain resource was interacted with.
Mmmmmm, perhaps. Not entirely sure. So, the discussion we are getting into is really the one opened in solid/specification#68 In one sense, how exactly containment triples are managed is an implementation detail, but how the it is derived is not, if the client has to ensure that they are created, it has to be detailed.
My approach when we get to the point that we disagree on what is most complex is that we should prototype both :-) However, the discussion in specification#35 doesn't really apply here, as that discussion is about shared semantics between the client and the server. This discussion is only about the internals of the server, and the server mints the URIs and assign any semantics that it pleases, as long as the client doesn't need to care. The other issue is if the client should care, and I'm still conflicted about that. :-) Anyway, in an attempt to illustrate what I mean by freedom afforded by LDP, take an LDP example of the freedom it seems like LDP affords, I think it would be valid to say <http://example.org/c1/>
a ldp:BasicContainer;
dcterms:title "A very simple container";
ldp:contains <http://example.org/somewhere/else>, <http://example.test/r2>, <http://example.foo/r3>. That would still be a valid Basic Container, right? If that is the scenario we need to support, then just inspecting the URL would not suffice. But that is where I think Solid goes meh, and says that the system is hierarchical, and thus the structure of the URL can be used to infer the containment. It is a constraint that can be relaxed later, at some implementation cost, but it seems to me that it is where Solid wants to go first.
OK.
OK, so first, as much as it pains me that we let one request create more resources with representations other than the one that is being addressed, I think that depends on the implementation. I see two ways it could be atomic:
Hold 👃 :-) But, I argue it would be easier anyway. I mean, what would it look like if the client had to be involved in ensuring that the operation over these three resources is atomic and (thus) isolated with HTTP only? If we had |
Already required by LDP (as per interaction model).
It is detailed. Do you mean something other than the section on eg. clients wanting to create
Implementation detail. Q.E.D. ? :)
It doesn't need to go meh. It is an implementation detail in that some servers may want to manage containments with container items using different URI paths.
Can be but communication can happen elsewhere without conflicting established recommendations. We can explore alternatives. For example, the above two
Template: The leading slash ( There are plethora of implementations: https://github.com/uri-templates/uritemplate-spec/wiki/Implementations .. but for basic usage, once Would something like that satisfy:
? Is there anything else that needs to be signalled? If the approach is ballpark meaningful, we can clean it up. Or consider other approaches. As I see it,
I can wrap my mind around the first approach like this: request to create
All I wanted to say was that if we are going to use the success of Unix as an argument, let's see it through ;) |
That has somehow eluded me, could you provide a reference?
Yes, because how about
or
or
which finally comes back to the original subject of the thread. In those cases, my interpretation of the discussion is that they shouldn't be honored, even though they are valid (in my interpretation) with the respective interaction models.
Yup, if we decide to go full LDP, it doesn't need to go meh, but I'm sensing that we are designing a constrained LDP, which I'm fine with, as long as it can be relaxed later.
Hmmm, right. Didn't think about that one...
Two requests are still enough to split atoms and create uncontainable plasma ;-) But, certainly, exploring different avenues is important. But I suspect there are other open issues where they are more appropriate? |
I withdraw the
I think we slightly talked past each other there. What I meant was that https://www.w3.org/TR/ldp/#ldpc-post-createrdf states:
but how they exactly store and recall that information is an implementation detail.
What do you think of the tentative proposal at solid/specification#39 (comment) which I think clarifies a bunch of issues and recommends |
When you ask me, I'm sure that the following two statements are true about Solid, but if you ask me how do I know that, then I don't really have a good answer to that. So let's clarify them both in the spec! They are:
The text was updated successfully, but these errors were encountered: