Community Public File Directory

So the first thing the user would need to do would be to create a pod. I’ll write up the spec for that soon, but for now just assume it is a scratchpad with RDF entries.

To make an index, you would map Autonomi addresses using the subject → predicate → object RDF structure, known as a triple. A set of RDF triples describing a website would look like (in psuedo code):

<Autonomi address> <is a type of> <website>
<Autonomi address> <has a short name> <"Autonomi Forum">

And in RDF N-triples:

<ant://c859818c623ce4fc0899c2ab43061b19caa0b0598eec35ef309dbe50c8af8d59> <rdf:type> <http://schema.org/website>
<ant://c859818c623ce4fc0899c2ab43061b19caa0b0598eec35ef309dbe50c8af8d59> <http://schema.org/name> <"Autonomi Forum">

Enter in all of the sites that you want to track into your pod. Obviously, the frontend would obfuscate all this data entry rigmarole.

Then you share your index pod with other people and they in turn share your index by referencing it in one of their pods.

A user wanting to find this site will read in all of the pods that they know of, starting with their own, and recurse through all the pods that they reference, dumping the triples into their local RDF database. Then they are ready to search with a SPARQL query.

To search for the “Autonomi Forum” string across all RDF triples in the database:

SELECT DISTINCT ?subject ?predicate ?object ?graph WHERE {
                GRAPH ?graph {
                    ?subject ?predicate ?object .
                    FILTER(isLiteral(?object) && CONTAINS(LCASE(STR(?object)), LCASE("Autonomi Forum")))
                }
            }
            ORDER BY ?graph ?subject

Same as the data entry, colonylib wraps this into a ‘simple search’ function that works basically like google does when you enter in a search string.

SPARQL is extremely flexble. This particular query is wide open and searches every literal stored, which probably isn’t what you want. You can narrow this down to a specific predicate (or type) or limit the search to a specific pod (by graph), change the results ordering, or limit the number of results shown.

The end goal for search I have in Colony is to have a local LLM that you converse with and it formulates a SPARQL query based on what you ask so we can get a much better search experience. As long as everything is written in a way that we can traverse Autonomi to find the RDF triples to load into a local RDF database, adding an LLM is the easy part. The key is getting folks to follow the same format when they write their metadata so that it can be searched like this.

@happybeing You’ve been around RDF/SPARQL/Solid longer than I have, how does this fit your view of this?

One of the cool things about RDF is that the predicate/object pointers don’t have to be real things, they just need to be in the URI format for the RDF parser. So the http://schema.org/website identifier doesn’t actually mean anything and it is never visited as a website, it is just a unique identifier that allows things to associate with each other in the graph.

Falling down the rabbit hole of graphs, we could build layers of associations in RDF that don’t describe files on Autonomi, but abstract concepts that link to files. So the map someone creates may not just an index of “things” but a graph representing knowledge and associations. It is a really cool concept that can incrementally be expanded upon by many users simultaneously, which is why I think this structure really falls in line with the vision of the Autonomi network.

2 Likes

Interesting concept and thanks for detailing. It will be interesting to follow the app and see where it goes.

1 Like

Thinking of something simple, to have a simple name/address resolver, we do actually have the host file standard (with addresses instead of IPs). It’s painfully simple, but very easy to create, parse, maintain.

If nothing else, at least it is a standard that could suffice until something more fancy is defined.

I think that’s how it started on the clear net too! ha!

I’d forgotten that. Every such choice ignores what we’re trying to do here IMO. “Nobody got fired for choosing BIGCORP” Why the f*** not? :rofl:

All these choices could have both been better aligned, have better protected people, and highlighted good alternatives. I get that they want to be on Discord and X for certain reasons, but that doesn’t mean everything else should ignore these factors.

Rant over :smiley:

I’m not sure when I’ll get to looking at this, but thanks for your answers. I have so much to do so some things just stay low on the priority list far longer than I would like. :sad_but_relieved_face:

In the end I may well just lift things out of Colony if/when I get around to this aspect of Names. :folded_hands:

3 Likes