Ontology, tagging and a perfect world

I always had this project to have THE πŸͺ„ perfect tagging system, that will let hierarchical directories and files explode πŸ’₯ in their stupidity. The Thing that will allow anyone to search for a study on penguins made less than 2 years ago and published in any open science libraries that I read about between two and one month. The kind of thing everyone dream about.

I first tried to implement a tagging 🏷 system as my first rust project (which didn't go very far, I admit). It showed me how hard it is to set up metadata, you have to define a grammar πŸ—‚, that determine what data can have a metadata. Then I tried to document it, defining a set of rule to create such a system. First, by describing two concepts: tag, and relationship.

I quickly realized that you can implement boolean logic here, with set and sub-set. So I had: tags, relationships and operations, at the end. The missing piece was a taxonomy.

Then I tried to model simple system, and failed to determine which grammar would describe the best what is a resource, even what is a location of a resource (because then, you need a protocol, an authority, and at this point, you understand you just need to follow URI format, but you want to go beyond that, so you try to model authority, etc.).

Then I discovered it 🀩. The name of what I was thinking of. It already exists. Made by smart (weird?) people: ontology. Seems hard, but fun (at least for me, at first glance !). I'll try to experiment with that in a (hopefully) near future. I always try too much to go fully abstract/conceptual, which can be a curse. It's seem cool for this at least.

Now the trap to avoid is redefining the wheel, I hope think all these smart people already defined norm to follow. Have to find (and understand !) them now.

The more I go into this rabbit hole πŸ•³, the more I feel like it take a long time to get it done right. If I want to tag a document (let's say a scientific paper πŸ“•), I have to define what metadata I CAN add to this β€œtype” of document (and then, is β€œtype” a metadata ?).

I have to install protΓ©gΓ© (to edit OWL and/or RDF files) to define a knowledge graph stored in a Neo4j/GraphDB database. Maybe I'll post on this kind of thing in a (hopefully πŸ˜…) near future.

At least I know where I am headed now 🫑 !