Refactoring Alcaeus to use RDFJS Dataset for data model

Hello Hydra,

Unfortunately conflicting schedule prevents me from joining the con call this time again.

However, I would like to share exciting news from my progress of refactoring Alcaeus (Hydra client) to use the DatasetCore [1] as the underlying data model.

----

The current version does some awkward transformations to create a rich JS object model. In the new version, which I now alpha-test as the upcoming v1.0 [2], the internal architecture changes significantly. I completely remove the JSON-LD processing and the underlying data model becomes RDF/JS dataset [1]. This will cause some important changes to what is possible and how representations are stored and processed:

First, each resource (also ApiDocumentations) will reside in a graph in the in-memory dataset. Previously, resources were completely detached JS objects. Thanks to putting them all in a shared RDF-native, quad structure, they will inherently become connected as the Linked Data they are. So for example, fetching individual members of a collection or its subsequent pages will build-up a larger graph.

As consequence, all individual representations can be traversed as if they were a single data structure, even though they are retrieved as individual resources. 

Also, because the implementation simply wraps around the RDF/JS standard, any compliant tools can be used to directly access that dataset, either to manipulate the data or add more triples from other sources.

Finally, the entire dataset can be trivially serialised a quads and restored, for example when the browser page is reloaded. The entire data state of an application can be condensed to the RDF model!

—

Those changes will enable previously the awkward or impossible, such as straightforward caching, working with multiple ApiDocumentation or combining vocabularies with


Hope you like what you hear. Let me know what you think. I will share more info when I’m done with the alpha version and a beta is released.

Have a good day,
Tom

[1]: https://rdf.js.org/dataset-spec/

Received on Tuesday, 21 January 2020 10:00:38 UTC