-
Notifications
You must be signed in to change notification settings - Fork 30
Authenticated RDF (or RDF/JSON-ld on IPLD) #152
Comments
cc @anarchivist |
I'm coming without much context, so please enlighten/ignore me if I'm totally missing the point :). You've probably also already seen this, but to get the obvious out, @msporny has been working on Linked Data Signatures that might address a lot of Step 1.
From #149 and here, there's some talk about authenticated data structures and IPLD. Not really sure what that means; is it just talking about content addressing?
This talk about CRUD has me really confused, but I'm probably missing out on some planned changes to the spec since I assume IPLD enforces immutability.
Isn't this JSON-LD?
There are some incompatibilities with JSON-LD and IPLD (one being |
Content-addressing authenticates the content that matches the hash. When you have a graph and you want to add, create, search, you are doing some operations on this graph and you want to make sure that also these operations are authentic (so that no one is getting you wrong data). Basically bringing this power that content-addressing gives you further not just to retrieve the entire file, but also to do other operations.
JSON-ld and @msporny work is great for RDF -> authenticated RDF, since (1) it gives us a nice data model (JSON) working on RDF (JSON-LD) and a normalization algorithm (rdf-normalize) so that we can have JSON objects that are normalized and easy to hash. Which is basically my Step 1.1. Now, we have to replace the URLs in existing JSON with hashes URIs (goodbye URLs), which is Step 1.2 and 1.3
|
@nicola: Thanks for clarifying!
But this is the problem -- if you want backwards compatibility with JSON-LD (which I would assume, since there's no reason to throw out what they've done in terms of compatibilities with RDF, normalization, and context framing), these two things have to be resolved. JSON-LD doesn't really care what's in the IRIs (they could just be hashes); it only cares that it's a string in the form of one; this is where {
"@id": {
"/": "<hash>"
}
} My pipe dream (not necessarily the most elegant approach though) with Step 1.2 would be tool that could transform IPLD to/from a syntactically-correct JSON-LD, although perhaps with non-sensical IRIs. Assuming the user wants to work in IPLD structures, they could parse the IPLD down into JSON-LD, frame it into their context, and then transform the resulting structure back to their final IPLD structure. The resulting structure is non-authenticated, but that's OK since you can authenticate the initial structure. |
I have an intuition why we should not worry about the break and why JSON-ld and IPLD are on two different layers. The The link object is more of an include/import object rather than a link. So that you can consider the |
(I'm not following the whole discussion, but can always transform { Into { And interpret it how you want.
|
But in the case of IPLD and content addressing, isn't the pathing of the physical representation also the ID of the file? The {
"@context": {
"url": {
"@type": "@id"
}
},
"url": {
"/": "<hash>"
}
}
// Or, without the context:
{
"url": {
"@id": {
"/": "<hash>"
}
}
} Having the
I think this will greatly help us both understand where we're coming from 😄! @jbenet Is the second example you've shown a merkle-link? In the examples of what a merkle-link is (https://github.com/ipld/specs/tree/master/ipld#what-is-a-merkle-link), it says specifically that "bar": "/ipfs/QmUmg7BZC1YP1ca66rRtWKxpXp77WgVHrnv263JtDuvs2k" is not a link. But along the lines of that, that's more or less what I meant when I said I wanted a transformation tool between IPLD to turn its merkle-links into regular IRIs. |
https://www.w3.org/TR/json-ld/#node-identifiers
So if you had some graph in memory and wanted to see what else was linked to a given node, you'd dereference the IRI in whatever way makes sense to the current application and inspect it. In the IPLD universe, we can't include the When transforming from IPLD > JSON-LD we'd take the hash of the current object and include it as an |
quick answer: quick update (not much content, but very excited to share): |
Exciting!
|
@nicola Did this ever happen? I'm exploring this space again for the Underlay project and would love to see your notes if you ever got them down. |
There has been a ton of work in this space since the inception of this issue in the W3C Verifiable Claims Working Group, W3C Credentials Community Group, and W3C Digital Verification Community Group. Further links into how this technology could help the Underlay Project (and IPFS projects in general): |
@Schwartz10 I haven't read the full ticket, but there was activity over here which sounds related. |
Some friends and I are working on how to bring authenticated data structures on RDF.
This consists in:
In practice, this effort is about the following:
Step 1: data model
Step 2: operations on graphs
Smallest tool that we can build:
cc @flyingzumwalt, @csarven, @bergos
The text was updated successfully, but these errors were encountered: