rdf

quoll 2021-02-18T00:01:07.093300Z

This seemed to be the most sensible way to manipulate the database. After all, Datomic follows the same paradigm, where connections are executed against, and new values of the database are created that can be retrieved from the connection

2021-02-18T00:22:23.093500Z

I was thinking more for transient usecases, i.e. where you just want to compute a value… e.g. load some triples into asami, expand the graph with naga rules, and then spit the data or a query result out… without having to engage in resource management etc

2021-02-18T00:25:23.093700Z

e.g. possibly also in the context of a http request… i.e. querying data out of a sparql triple store with constructs, but using asami perhaps with naga in place of a Jena/RDF4j model to build a response.

quoll 2021-02-18T00:59:00.093900Z

In that case, I would just use a graph URI with asami:mem:// for the scheme. It’s basically doing exactly what you just said. (admittedly, the asami:local:// scheme is still a work in progress. So you HAVE to use asami:mem:// for now anyway). There’s no “resource management”, except that the connection holds an atom for the vector of DBs, and when you do a transaction like Naga does, then it just calls update on the maps that make up the latest DB, and does a conj to the vector in the connections atom.

quoll 2021-02-18T00:59:59.094100Z

My colleagues are doing this all the time. Create a memory graph, throw data into it, and use queries to pull out exactly what they want. Then they throw it all away. 😱

quoll 2021-02-18T01:00:22.094300Z

I was a bit shocked to see them do it, but it’s fast, and they find it useful to do!