5 ms·
Or better idea. Use directed graphs. Directed graphs are strictly a superset of both tree and tag (set) functionality. Tags (sets) can be thought as a special
by lmilcin 5y ago
Or better idea. Use directed graphs. Directed graphs are strictly a superset of both tree and tag (set) functionality.
Tags (sets) can be thought as a special case of directed graph. You make the tag a node in the graph and you make files also nodes and have edge pointing in direction of the tag node.
You can then do graph queries to find files tagged in a certain way.
But graphs offers so much more.
Because they are superset of both trees and sets, you can use it to represent both, at the same time.
It is not very useful to have a lot of things tagged the same way because you end up with just a long list of things. Whereas in a graph you could say that you want to find objects from which you can reach certain tag node and all these objects can still have their own structure and even be part of multiple structures.
For many years I had this idea to build my PIM where I could make arbitrary nodes being anything that could let me connect anything to anything.
A node could be an email, a file, a link to external external website, a task, a contact, a reminder, etc.
And you could connect everything to anything and have, for example a project that has important emails attached to it, the email could have attached a reminder to respond and a file that you want to include in response, and a note.
You could browse this graph as a tree because locally it could be interpreted as a tree, you open the tree one level by finding all elements that pointing to the node.
- MrLeap 5y agoHow do you transform a digraph with cycles into a tree without? Seems perilous.
- deleted 5y ago[deleted]
- lmilcin 5y agoHow do you traverse a symlink that points to one of its parent folders? How do you traverse a web of interlinked sites? Somehow Linux, Linux software, web browsers etc. are already able to deal with directed graphs.
- MrLeap 5y agoYou can handwave cycles created by symlinks away by ignoring them. Full traversal is possible relying only on the tree. If all you have is the digraph you have to rely on cycle detection. Transforming it into a hierarchy of depth requires snipping edges somewhere. I'm just gently disputing the claim that a digraph can be mapped 1:1 to a hierarchical filesystem. I'm open to being wrong.
- lmilcin 5y agoNo, the intention is not to map it 1:1 to a hierarchical filesystem. My intention is to select a starting point, squint your eyes a little bit and then pretend it can be traversed from that point, the same you do when you search for a page on Wikipedia and then try to move around by clicking on links on pages. On Wikipedia you can choose any starting article and probably traverse entire Wikipedia. Your traversal tree will be different depending on what you select as starting point but the end result will be the same -- you will have traversed entire Wikipedia. When you see an article you already saw -- you just skip it for the purpose of traversal. Another way to imagine this: Windows Explorer Select your starting article as root. Then articles that are reachable directly from the root as first level nodes, then second level nodes are articles reachable from first level nodes, etc. This is infinite depth tree because any cycle will cause an infinitely long branch. But it is fine for a manual traversal (as a human you will notice you are repeating). And if you are traversing automatically there are easy ways to detect you have already seen the node (just detect the node you are visiting has id that has already been registered somewhere else in the tree -- maybe put all ids in a hash set?) --- I just figured out while trying to answer your question that the better description of what I would like to achieve would be "hyperlinked filesystem" except that hyperlinks also carry additional information about the link itself. In a filesystem there is only one type of link (parent/child folder/file relationship). In a hyperlinked filesystem you would have possibility of many types of relationships. On a normal filesystem Emacs could create a file with a tilde appended to its name to express it is backup of a file without tilde. On a hyperlinked filesystem Emacs could create an explicit link between the files with a suitable role. --- A filesystem like that would probably need multiple other ways to locate the files but it does not have to bee a tree-based structure. A tree-based structure would require the user to find a place for the file which misses the point of the filesystem (being free from having to find a location for the file). For example, additionally to graph based searches you should be able to search for properties including full text search on properties like names, descriptions, etc.
- dredmorbius 5y agoKnowledge classification is not directed. I'm not sure entirely how to describe it, though "probabalistically associative" is a phrase that comes to mind. It looks like a digraph in many local regions, but overall is not.
- lmilcin 5y agoIt is not knowledge classification. It is association (like this PDF file is associated with this project). But association can be used for classification (this PDF file is associated also with THAT topic). Which is exactly my point. Hierarchical filesystems can be used for classification (create folders for classes, put things in right folders). But the issue is that the user has to perform classification to even be able to store the file and you can only put the file in one class so if you do that poorly you will have hard time finding it later (a condition which I call disorder). Association lets you overcome that problem by allowing you to associate the item with multiple classes. If your aim is to be able to find it later it is better to put the item in too many classes. A filesystem that only allows you to put the item in one class requires you to make a good decision immediately. Additionally, there is low cost of making a mistake when adding another association but there is comparatively larger cost of changing the classification by putting the file in another folder.
- dredmorbius 5y agoYou're using the case of some directed relationships to argue for exclusively directed relationships. That is a false generalisation. Using a directed graph (exclusively) requires that classification assocations be strictly directed. That's simply not the case. It can appear that way in certain instances --- an author writes a book, a book doesn't write an author. But books influence authors, and multiple authors (as contemporaries) can influence one another. Topical classifications may descend through one of several directions: a history of a technology developed in a place by a specific person might have points of entry by date, location, biography, technology, application(s), or consequences. There's no single "home" for that concept, but a web (a non-directed, potentially cyclic) graph with multiple relationships, many bidirectional. That leaves you with a few options: - You can abandon the directed graph and utilise an indexing and search schema which more accurately describes the relationships. - You can abandon strict accuracy and settle on a useful directed graph which imposes an arbitrary (and incorrect) hierarchy over the subject. Where physical storage is based on topicality, the requirement of a single locality imposes this requirement. - You can find an alternate basis for defining location, and conceptually map that by other means. Here a key issue is (as I've described in several earlier comments) that position alone is neither a guide to the content (adjacent documents may be utterly unrelated), the researcher (there is no streightforward exploration path to a specific record or concept), nor the curator (topics must be specifically assigned and aren't inherent or evident by position). In declaring that "it is not about knowledge classification", you've attempted to change the scope of the discussion. Even in the example you give, the case falls apart. A project may be associated with multiple PDFs, and a PDF may be associated with multiple projects. How do you describe that set of relations in a directed graph? Are you assuming your graph is acyclic?