cayley
cayley copied to clipboard
Reification
Meta-issue to track reification implementation
https://discourse.cayley.io/t/wip-bolt-2-reification-boogaloo/550/2
Happy Holidays all! While sitting at home with my folks I broke ground on a complete rewrite of the Bolt backend that could support our reification plan.
I've been reading through the github issues and the discourse topics, but I'm having a hard time piecing together how exactly Cayley plans to tackle reification. The most informative posts I could find is https://discourse.cayley.io/t/paper-chase-reification-aka-putting-data-about-links-on-links/328, but it doesn't really list a decision.
I think you are somehow assigning a unique, deterministic identifier to every quad (like a hash), and you also do this to every node?
Any info would be greatly appreciated :)
@hidde-jan The current plan is to assign an unique ID for every node and quad, plus keep a hash index for these values as well. For quads we already have such index (SPOL index), and for values we will just separate an ID from hash (nodes were content-addressable before). Current implementation is done for KV in general and Bolt in particular (we call it bolt2). Although it's not yet exposed in any way.
@dennwc Thanks for the answer!
The current plan is to assign an unique ID for every node and quad
How exactly do you assign these IDs? Or is it implementation specific? If I have a specific quad, can I always determine its ID? I'm investigating how people are currently implementing (and representing) reification for linked data. Since Cayley is working on their implementation I'm very curious about the choices you made.
Cheers
ID allocation is implementation-specific, but in general after reification we cannot determine quad ID without an index lookup.
I am trying to evaluate using Cayley with Postgresql as the backing store.
- Is reification implemented in general, and in particular for Postgres?
- If not, could you please share any suggested workarounds for reification?
Dhanyavaad.