I’m newbie in the last few weeks so this is just my current understanding.
Use the rdflib if you want considerable client side storage and management of data, social data and queries of it.
If you are wanting solid pods to act as “secure USB sticks for the Web” for access anywhere and for collaboration then use the solid-auth-client which is Fetch with cors handled for you.
For my current app layer I’m using solid-auth-client to make a nodejs like fs https://github.com/DataDriven-CAM/solid-fs for isomorphic-git and io to app working on the git collaborative working copy.
Updatemanager.update() is a high level function for working with RDF triples/quads - if you already use fetcher and store (all from rdflib.js) then the update manager is useful for making fine grained changes to existing documents/resources (using RDF patch) - whereas the fetcher only(?) allows you to load or write complete documents in one step.
I’ve managed to use RDFLIB without any low level HTTP work. Add, Query, Update, Delete works like this:
Adding resource at URL X:
Add statements <X, some-predicate, some-value, X> for each property of the resource. Use store.add(X,p,v,X) to save the statements locally;
PUT the new statements onto the web: Use fetcher.putBack(X);
Reading list of resources:
Load all resources into local store using the fetcher to first load the container and then load each item, one by one, in it.
Extract all the found data from the local store. Use store.match(…)
Remove a single resource at url X:
Remove the resource from the web. Use fetcher.delete(X).
Remove local knowledge of the resource: Use store.removeDocument(X).
Remove all local statements: Use store.removeMatches(X);
Update a single resource at url X:
Use update-manager.update()
Or replace it completely with fetcher.putBack(x) … haven’t tried this though.
And beware that the web-oriented operations in the fetcher are all async using promises.
It took me a while to figure out why my “refresh list” operation did not include a newly added resource. That was because the “put” operation executed asynchronously and did not complete before the refresh list called the server for a an update.
Be careful to add await .then() and .catch() to the right places in your code.
binary and image data. (Content-Type isn’t happening just yet thru the node-solid-server) image/* and application/octet-stream are needed.
limited from emulating a symlink; a symlink I believe can be done with rdf and LDP when more than one container is allowed to predicate a resource or other container.
when these are overcome it will bring the power of git client to pods and collaborative development on code thru solid
We at Inrupt are working hard on improving the documentation in general, and this is definitely something we want to improve We’ll try to be more open about how we’re planning to do that when we have something more concrete to share.
we got Fetcher The Fetcher object is a helper object for a quadstore which turns it from an offline store to an online store. The fetcher deals with loading data files rom the web, figuring how to parse them. It will also refresh, remove, the data and put back the fata to the web.
and i’d like to submit :
Fetcher The Fetcher object is a helper object for a quadstore which turns it from an offline store to an online store. The fetcher deals with loading data files **f**rom the web, figuring how to parse them. It will also refresh, remove, the data and put back the **d**ata to the web. @RubenVerborgh ?