Semanlink lets add RDF metadata to files, bookmarks and short text notes that it allows to write, organize and display.
Basically, it is a tagging utility: you use it to add tags to your documents.
But Semanlink also provides a simple way to organize your tags in a graph: each tag may have several "parents" and "children", as well as other RDF properties. Tagging the tags allows you to incrementally define the vocabulary you use to annotate documents. This way, you model your own representation of concepts and their relations. Semanlink provides a GUI to easily navigate through the graph of tags. And of course, the taxonomy you build is used when searching: for instance, a document tagged with "RDF" will be found when searching for "Semantic Web".
By default, metadata about files is stored in small RDF files, that are saved in the same directory as the files they describe (or in a parent directory). This is an important feature, not only because no database is needed to run Semanlink: for instance, when you save a copy of one directory to a CD or when you move it to another location, metadata about its files is also copied or moved, and ready to be used without any modification, as relative URLs are used to identify the files.
Metadata about bookmarks, as well as the short notes created within the application, are stored in a directory organized with a "year/month" structure.
The definition of tags is written separately from the metadata about files: a vocabulary can therefore easily be reused in another context. Several graphs of tags, each with its own URI, can be used to mark a set of documents.
All these RDF files are loaded into memory at startup.
To tagging systems, Semanlink adds an organization of tags' space that they generally lack, and which is the basis for "concept navigation" among tags and documents.
Like hierarchical file systems, Semanlink makes extensive use of tree traversal. But it adds to these hierarchies the possibility to store each document in several "directories" at the same time (aliases or shortcuts, by the way, are not sufficient: given a file, you cannot know to which directories its shortcuts belong to). While pathnames are used to store metadata about files, system-level addressing and classification data are cleanly separated in Semanlink.
Like ontologies, Semanlink taxonomies are graph based. But keeping things simple, it allows for dynamic growth and frequent modification of hierarchies.
Semanlink runs as a servlet and has been developed with Jena. It uses plain vanilla RDF memory models, which give very fast response time for any operation, at least on my models (more than 20,000 statements about 3000 documents and involving 2000 tags, as of this writing).