Some questions about the Inrupts Solid Java Client and the storage of resources

Hello I have some questions about the Solid Java Client from Inrupt that I don’t immediately find an answer to.

In what scenario’s would you use the synchronous SolidSyncClient and in what scenario’s the asynchronous SolidClient? (I understand what synchronous and asynchronous means)

I want to add a json files to a pod through my Spring app. What would be the best way to do this? I know this is done through the client.create() method. But what does this method actually need as arguments between its brackets and what would be the standard syntax for these arguments. In the tutorial getting-started the arguments are passed down by sending a POST request to the Spring app with inside the body the necessary values. I however want to pass the json file with the destination pod url directly through the create() method in my app.

When creating a new resource in a pod, do you pass the pod url as destination url (e.g. http/my-pod/) or do you pass the not yet existing url of the resource in the pod (e.g. http/my-pod/resource1)?

Are there any conventions for storing non RDF data in solid pods? Does it need to be stored in a special container for example?

Does it make a difference if I use a POST request or a PUT request for creating a new resource in a pod?

Thanks in advance and please correct me if i misinterpret something or misunderstand something.

Hi Siemen,

This is Nick, product manager at Inrupt. I’ll do my best to answer your questions:

  1. When should I use sync vs async clients? I depends on how you structure your app. Sync calls will wait to be completed before moving to the next one whereas async calls will be executed independently, where the program doesn’t wait for a task to complete before moving on to the next one.
  2. How to add json files? json files are what we call ‘non-RDF resources’. Look here on how to write those into your Pod.
  3. Should I include the Pod url in the resource url? Yes, you should. The full resource url is inclusive of the Pod url.
  4. Are there any conventions for storing non RDF data in solid pods? It comes down to your use case really. Look for other Solid applications with similar use cases to yours to facilitate reusability of the data. If you can’t find any app doing a similar use case to yours, try to organize data in a way that takes into consideration how the data is going to be retrieved by your app and optimize for that while considering that down the road other applications will access.
  5. Does it make a difference if I use a POST request or a PUT? Yes, a PUT will create a new resource while a POST will update it. The Java client libraries handle that for you. More information here.

All the best,
Nick

3 Likes

Hi Nick

Thanks for the clear response! I’ll check the links out that you’ve included.

Hi Siemen,

A colleague of mine was very quick to point out I was not accurate on one of my answers before so let me make an amendment. On question five, please disregard that I said before, and here is the proper answer:

  1. Does it make a difference if I use a POST request or a PUT? A PUT will create or update the target resource with the provided value, while a POST will create a new child resource in the target container.

In any case, the Java client libraries handle that for you (I was right about that :slight_smile: ). More information here.

2 Likes

No problem, thanks for the correction!