-
Notifications
You must be signed in to change notification settings - Fork 5
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
Metadata on recipe container? #19
Comments
Hey, thanks for opening an issue! I think the problem you're raising is related with solid/specification#227 (comment). Ideally, this is something that should be solved on the POD side. But you're right that at the moment, the only way to know what a container contains is actually reading the documents themselves :(. Right now, I am solving this with the type index. I'm already doing your 2nd alternative proposal, did you have any problem with that? I am registering the container in a private type index, though. Maybe that's why you didn't find it. I'm not sure if we should be registering recipe containers publicly by default :/. About your main proposal, I'm not convinced about adding that type of metadata to the container, because it's the first time I hear anything like that so very few apps would know that this thing even exists. The type index, for all the flaws it has, is the only real way we have for solving this problem at the moment. So many apps are already using it. Finally, I really like what SAI is doing with Shape Trees, but it is my understanding that it requires server-side support to work. So until it's part of the official spec and it's implemented in all POD providers, I don't intend on using it because I want to make my apps compatible with any POD that is spec-compliant. But I'm not sure if what you meant by your first alternative proposal is related to that, or it can be implemented in the client. Did I misunderstanding something? |
Thanks for the discussion!
This is related (thanks for pointing it out!), but what I am proposing is possible right now by PATCHing the .meta resource of the container (which is linked in the header)
The problem is 1) the user needs to know to and load preferences to get this information, 2) this information is only available to the owner of the data, 3) it is more complex than using a single type statement 🤣
This is pretty similar to how each object is given a type within each document. The main difference is that the container already has a (generic) type, and we'd just be adding a bit more specific information.
My proposal is already spec and server compliant. Edit: what I mean is that shape trees can be used client side without relying on the server providing headers |
On that note, the way I solve "public recipes" is that I have a But I am aware that it's a problem, because
I see, that is interesting but in my case I don't want to spend too much time working on enforcing this because it hasn't been a real problem that I've seen. And if I did, I would enforce that in the client using Soukai model definitions. So until the server doesn't do anything with shapes, I don't think I'll be using them. Having said all that, I understand what you mean and I don't think there is any harm in having additional information :). So I'm ok with adding the following things:
The problem, then, is what ontology to use 😅. |
Thanks for your willingness to add this additional information! In terms of ontology, I think it would make sense to publish versioned SHACL shapes for Umai and as part of that to include a definition of these two new classes. At risk of going off topic, I do want to also underline what looks like some differences in our perspectives:
I hadn't tried public sharing before as it doesn't fit my use case. Thanks for explaining its design. The idea of recipe lists does sound like it works for the use case where a user might share some of their recipes within a private but shared list. In that case, I would not be defining the shared list in the public type index, and I might not even register it there, e.g. I would share a direct link instead. And as you say, I would want to specify that it's a recipe list, not just an item list. |
I think it would be fine as way of documentation, but otherwise I don't see much use for defining SHACL shapes at the moment. I agree it may be useful in the future, but I'm not sure about it now. I've been thinking about how better to document the data used by the app for a long time, but I haven't come up with a good solution yet. Initially I created a kind of Entity-Relationship diagram for Soukai models: Data schema for Media Kraken. And I guess SHACL shapes could accomplish the same, but I'm not sure they are more accessible for people who are not super familiar with RDF.
Yeah, this is also a problem I've had in mind for a while but I haven't solved yet. The idea of Cambria is awesome, and I'd love to see something like that for RDF. For now, I've just implemented manual migration of data in my apps, but that's not ideal.
Yes, it's true that in my case I don't care much about "user-developers". I care about people using my app who may not know anything about RDF or even Solid. For user-developers, I assume they already understand RDF and how Solid works, so they should be able to understand the data just by looking at it. Type indexes are a mechanism for interoperability between apps, I'm not using them for people to understand their own data.
100% agree with that :). I always say that data that cannot be reused is like not having the data at all. But for that same reason, for most people using apps who are not developers, it doesn't matter how well "documented" or interlinked it is. If it doesn't work out of the box with other apps, it'll be worthless to them. So for me the important thing is that apps are interoperable. I wrote this blog post a while ago, not sure if you've seen it: Interoperable Serendipity.
Yes, right now this is what I call "unlisted recipes" in Umai. When you share a recipe, you can make it private, public, or unlisted. The only difference between "public" and "unlisted" is that it's not included in that list of public recipes, but otherwise the permissions are the same.
Do you mean that you got an error trying to create public recipes? Can you give me more details? (maybe open a separate issue if that's the case). |
Just so I can find it again, adding here a link to comment about a RecipeManager as the "main thing" solid/type-indexes#25 (comment) |
At the moment, when loading a recipe container there is no easy way of:
I propose that Umai could add a triple to the container metadata:
This would directly address (1), and allow (2) and (3) to be inferred.
Here are some alternatives:
Using a shape tree assignment: in my opinion this would increase the barrier to interoperability due to its complexity - using a class is substantially simpler. The two could easily co-exist in future, with the shape tree being optional.
Using existing type registrations: this is already more complex as it requires following the path ?container^solid:instance container!solid:forClass and checking that this is equal to schema:Recipe. In addition, it assumes that preferences have been loaded. This then means that it does not yet resolve the issue that when dereferencing the container, one doesn't know it contains recipes.
Given the nature of Solid, it is of course possible for a user to use any of these solutions manually now already without Umai support, but Umai is the frontrunner and nicest product in this space, so it would be good to have Umai on board with any strategy.
The text was updated successfully, but these errors were encountered: