Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Things in IPLD on IPFS #777

Open
vorburger opened this issue Jul 21, 2024 · 1 comment
Open

Things in IPLD on IPFS #777

vorburger opened this issue Jul 21, 2024 · 1 comment
Assignees
Labels
format File Formats for I/O

Comments

@vorburger
Copy link
Member

It may be fun to explore storing Enola's Things on IPFS's IPLD.

This would first require being able to turn an IImmutableThing into the IPLD Data Model. That would enable to create predictable hashes of Things, to be generate CIDs. This will require work to turn any Datatype into one or several predictable 0/1 bits format/s (simplest could be e.g. just toString, and Maps as JSON with sorted keys?).

That would enable e.g. IPLD DAG JSON Codec as an Enola Format.

IPFS IPLD Schemas would need to be an Enola Schema.

Related libraries of possible interest:

@vorburger vorburger added the format File Formats for I/O label Jul 21, 2024
@vorburger vorburger self-assigned this Jul 21, 2024
@vorburger
Copy link
Member Author

vorburger commented Jan 2, 2025

https://ipld.io/tools

https://github.com/ipld/cid-cbor/ ?

https://openengiadina.codeberg.page/rdf-cbor/ but that's not what one would want... It could be a basis, but we would want a utility which transforms IRIs into, either:

  • Special cases such as urn:uuid (et la.) to 37 etc.
  • Else, if Thing exists (with properties), CID of it
  • Otherwise, to CBOR tagged URI (32) or IRI (266)

... IFF such are valid in IPLD (TBC), else string if not CID.

https://www.w3.org/2024/12/rch-wg-charter.html is probably how you would want to canonicalize RDF? But we don't actually need that, because it would be based on the Thing API (and we already have Thing canonicalization in Enola, somewhere).

The "IPLD blocks" must include the IRI (as the hash is one way). We COULD postfix IRI with @multibase CID, to "version" them? And have sameAs with & without version. This would help to distinguish different Thing version itérations.

Next Steps:

  1. Play "hands on" with IPLD.. create, link, read (on local IPFS Node)
  2. Implement Enola Thing CBOR format support)
  3. Implement IPLD support

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
format File Formats for I/O
Projects
None yet
Development

No branches or pull requests

1 participant