This page gives a very high level of what features the libferris semantic virtual
filesystem has. The main library is libferris.so, graphical support is in
libferrisui.so and XSLT support is in libferrisxslt.so.
There are optional wrapper libraries allowing Perl, Python and OCaml to access libferris.
The core of libferris is to provide a C++ abstraction over many tree like structures
and present the main content of each object in the tree as an IOStream. This core
abstraction also provides STL style iterators for a begin() to end() iteration
of a directory. Arbitrary metadata for a file is accessable via getStrAttr()
and setStrAttr(). Some of the metadata is automatically extracted from files and
presented through this same interface, some of the plugins to extract / handle such
attributes are listed below.
Many other features like transparent compression of content, xml serialization,
metadata indexing, full text indexing, automatic file classification
through manchine learning agents are also provided to enhance the VFS.
The following sections describe what things libferris can mount, what sort of metadata
is supported and what clients currently exist.
The following clients exist in the tarball, graphical versions use GTK+2:
ferriscp, a superset of coreutils 'cp' command. A graphical version of
cp called gfcp which has progress displays and nice 'cp -i' interface.
ferrisls, a superset of coreutils 'ls' command.
ferrisrm, replacement for coreutils 'rm' command.
A graphical version called gfrm.
ferrismv, replacement for coreutils 'mv' command.
A graphical version called gfmv.
fcat, replacement for coreutils 'cat' command.
ferriscd, bash2 'cd' which handles XPath resolution
ftouch, a superset of coreutils 'touch' command.
fmkdir, replacement for coreutils 'mkdir command.
fclipcopy, fclipcut, fcliplink, fclippaste, fclipredo
fclipundo: command line tools for performing file movements. (Cut a file and paste it
someplace to "move" that file).
findexadd, feaindexadd: clients to add new items
to fulltext and EA indexes.
findexquery, feaindexquery: clients to query
to fulltext and EA indexes.
findexcompact, feaindexcompact: clients to compact
indexes, performing costly reclaim operations. Such tools are needed to allow
index evolution without loosing great deals of query performance.
fschema: interaction with attribute schemas
fmedallion: querying and setting emblem associations
fcompress: setting up and removing
transparent (un)compression for files.
adding new freedesktop.org ".desktop" files to the apps:// filesystem.
ferris-first-time-user: setting up "~/.ferris"
gfdl: download manager using the http and ftp
filesystems (which use libcurl).
gfproperties: view all the lstat(2) information
for a file in a GTK2 GUI. Also presents the emblem attachemnts for a file.
FerrisXalanTransform: like XalanTransform except some
libferris functions are exported for the XSLT to use (see xsltfunctions/ for more detail).
ferris-capplet-general, ferris-capplet-index, ferris-capplet-locale,
ferris-capplet-logging, ferris-capplet-version: tools for setting up libferris.
The following attributes are supported:
native kernel XFS EA
data available from lstat(2)
cryto hashes like md5 and sha1
emblem attachment metadata
many file system synthetic EA
ID3 tags in mp3/ogg files
images loadable via ImageMagick
dolby ac3 information
images loadable via imlib2
Take a look in Ferris.cpp
and Native.cpp for tryAddStateLessAttribute() for many other attributes of interest.