Oh thanks! That is indeed an item on my to-do list, but to be honest it might take me a while for that to reach my front burner.
Yes, that either needs reification 😖 or internal statement IDs (which SPARQL only supports via reification)
A few months ago I was playing with a representation that had two components [G A], with G being a graph in IGrpah normal form and A being a map <p>-> G[p], where G[p] is a graph of [subject object annotation] triples for some selected P.
That's simmering on the back burner though.
I’m building some on-disk indices at the moment. The current one is designed for updating (and is therefore better for Datomic-like usage), but the other one is for large imports and doesn’t handle updates as well. That one is more about graph analytics on large RDF datasets. But one feature is that every statement gets an internal ID. So I’m thinking that I need to support implicit reification with it. This makes me wonder if I should consider it for the other index as well. :thinking_face:
I have no immediate need for it either, but since I already made a datafied representation of the Neo4j query results corresponding to the input vectors used to instantiate an Ubergraph graph, I was thinking it might also be handy to be able to convert to between the two. Your model is different, but I’m not sure how far apart they are. Anyway, you seem to be doing a lot of work on representing RDF in the application space and my dataset is actually RDF too. I feel that Ubergraph maps very closely to the native Neo4j labeled property graph, so it was a great fit to use its vector representation for the datafy protocol. However, I am not married to that particular graph model for RDF at all, just using it out of convenience really (Neo4j is fast, has big ecosystem, there’s an RDF plugin).
I think conversion between different graph representations can be quite useful. I would love to move graph data seamlessly between e.g. Neo4j or one of the Datalog dbs.
Still need to learn a lot more about the domain, though.
I agree. Neo4j have a slightly different structure I think they call 'property graphs', which allow you to annotate specific relationships between specific objects, so it's difficult to duplicate that with triples.