rdf

2021-02-17T23:22:27.086600Z

@quoll: FYI I think there’s a small bug in the naga README. The example code will raise an Unknown storage configuration error. I managed to fix it locally by adding the line: (naga.store-registry/register-storage! :asami naga.storage.asami.core/create-store)

quoll 2021-02-17T23:36:48.087Z

Thank you! This recently changed, so it must have gone stale.

2021-02-17T23:40:26.087200Z

Least I can do

2021-02-18T09:07:32.094500Z

moving to #asami

quoll 2021-02-17T23:41:40.087500Z

Can I please check… did you include the line: (require '[asami.core :as asami]) ?

quoll 2021-02-17T23:43:00.087700Z

Oh, I see what I’ve done. I forgot to include something else

2021-02-17T23:43:12.087900Z

yes

2021-02-17T23:43:43.088100Z

side effects eh? 🙂

quoll 2021-02-17T23:44:51.088300Z

No, when I ran the example code I’d already required a different namespace, and I forgot to include it in the example

quoll 2021-02-17T23:47:27.088500Z

Try the example script now

2021-02-17T23:48:44.088700Z

that 👍 works thanks

2021-02-17T23:49:02.088900Z

(I meant the side effects to auto register asami on namespace load)

2021-02-17T23:50:36.089200Z

Incidentally is it possible to essentially do what is in the README, but without using the connection management and mutable database stuff. i.e. to manage asami and naga as pure values myself, or at least put them in atoms I control?

quoll 2021-02-17T23:51:17.089400Z

I just added a comment too. That extra line loads the Asami connector. • It registers the factory function • It extends Asami connections to the ConnectionStore protocol • It implements the Naga Storage protocol

👍 1
quoll 2021-02-17T23:56:43.092Z

I’ve kinda pushed the value management into the Connection. The Connection actually refers to all the old values of the database, as well as the latest. So if you called (asami/db connection) before running Naga on it then you’ll get the latest value of the database. Afterward, if you use asami/as-of you can still get that same value. It’s actually transparent inside the Connection object. There’s a vector of every database value

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!

2021-02-17T23:56:03.091900Z

@quoll: One other thing, it looks like the pabu parser silently fails on the -- comments in the skos datalog example you pasted me. Swapping them out for the c-style ones seems to at least convert the program string into data (not got to trying to run it yet), but should I expect it to work in naga?

quoll 2021-02-17T23:57:21.092700Z

You should, but I haven’t done much with pabu for a long time. I thought I handled those comments, sorry

quoll 2021-02-17T23:57:37.093Z

(should these questions be in #asami) instead?

👍 2