Debtags Library

Enrico Zini zinie@cs.unibo.it
Wed, 21 Jul 2004 15:40:48 +0100


--gE7i1rD7pdK0Ng3j
Content-Type: multipart/mixed; boundary="ABTtc+pdwF7KHXCz"
Content-Disposition: inline


--ABTtc+pdwF7KHXCz
Content-Type: text/plain; charset=iso-8859-15
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sun, Jul 11, 2004 at 05:24:47PM +0200, Benjamin Mesing wrote:

> You are right, in our case where performance might be essential -
> perhaps it would be best to dismiss the TagIF and place the Tag there.
> This would avoid overhead when everything is treated as tags even though
> we loose some flexibility. The facet would simply be a specialization of
> the Tag then. It might still be useful to add RTTI to the system, so
> that a Tag could be downcasted to a facet if we actually need to know
> whether we have a tag or not.=20
> Of course we could add a function isFacet() in the Tag class and do a
> static_cast if space restrictions are really essential, but again we
> would loose flexibility (perhaps we want to add a class "Distribution"
> to allow us to assemble distributions (like "Server" or "Home User")
> later). In this case we would have to add an isDistribution function in
> the Tag class .
> But lets see what Enrico says to this idea at all...

Yummy!  Library design discussions!  I'm happy!!

Let's put intentions before the code (but just for a moment :)

Fr=F8m one side, we have the organization of the tag corpus:

 - The tag;
 - The tag context (the facet);
 - *NEW* The organization taking care of the namespace;
   This is something that came to my mind while desining a
   faceted-enabled CMS: it would be strongly desirable to have
   organizations taking care of their ontologies, and publishing them.
   In our case, Debian may maintain a number of facets, Debian-Edu a
   number of others, Debian-NonProfit a number of others, Warthogs
   their own ones, Gnome could do some as well, and maybe other
   independent groups may want to take care of something (for example,
   a group of security oriented people may want to provide a tag
   database for security-related things).
   All of this, of course, while leaving open the opportunity of having
   meta-organizational groups of facets: people like Dublin Core, the
   W3C or something else may want to provide and standardise some
   universal facets for everyone to use.

Fr=F8m the other side, we want to do something with all these things:

 - Search for packages which have a tag
 - Search for packages which have any tags from a specific facet
 - Search for packages with similar tagsets

Then, we want to make some user interface:

 - Look for the facets or tags that interest me
 - Mark some facets as "I don't care about this", to hide them from
   cluttering the interface and make them irrelevant for "related"
   searches
   (but maybe keep them around to provide further refinements in case
   searches produce lots of results)
 - See how to present facets and tags when there are a lot of them

The implementation may or may not follow any of these views, provided
that it makes them possible and easy+efficient to implement.


The current subversion trunk has a Facet class and a Tag class[1], and I
was thinking of also making an Organization class along the same lines.
This organization follows the semantic organization of the tag corpus
and allows everyone of these elements to provide its own specific
functions (i.e. a Facet has a description and contains tags; an
Organization can have a different description as well as an URL, while a
Tag has an even different description and a full name).

This doesn't impair doing partial matching: it's very easy to write a
package filter that matches using a TagSet and/or a FacetSet; at the
interface level, one could add a Use::* item that adds a Facet to the
filter instead of a tag.  So far, the current library organization seems
allright, unless other scenarios come forward.


Then you raise another issue: do we want multilevel facet/tag
hierarchies?

My current view is that the tag corpus doesn't really need that, and
it's more of a user interface issue.  This doesn't mean the library
shouldn't help, of course, but I wouldn't want to code user-interface
specific code in too low levels of the library.

Ideally, we'll have lots of facets, and some facets may have lots of
items.  I see more probable that we'll have a very big number of facets
to cope with, rather then we'll have the problem of facets with too many
tags.

For example, we have the tech:: facet problem at the moment; however,
I'm considering that that facet is badly designed and it should instead
split in netprotocols::*, dataformats::*, streamingformats::* and so on,
possibly with repeated tags: for example, we may have dataformats::ogg
and streamingformats::ogg, and it would be allright.

The Organization idea may solve the facet grouping issues while also
solving the more general problem of assigning the tagging task to the
right groups of experts: it would create both a facet libraries and
facet librarians, which is something that would indeed be very needed.

Now, what if an Organization itself maintains lots of facets and wants
to structure them in more manageable ways?  The we group facets in
sections; but isn't that what we did originally with Debian packages,
which is now being replaced by debtags?

It may be possible that a better way to manage the proliferation of
facets would be for organization to tag the facets themselves.
Facet/Tag browsers could be realized to address the task of managing
complex categorization libraries, while users could decide to
"subscribe" only to certain kind of facets, depending on their needs and
interests.

This is still a bit futuristic, but doable; with the current approach it
would be easy to add a database of Tags-For-Facets which can be queried
and produces FacetSet's.

Simple to implement, and very much powerful: why not?


Ciao,

Enrico

[1] see attached facet-tag.png; I hope I got UML right, and please tell
me if I can directly attach DIA files.
--
GPG key: 1024D/797EBFAB 2000-12-05 Enrico Zini <enrico@debian.org>

--ABTtc+pdwF7KHXCz
Content-Type: image/png
Content-Disposition: attachment; filename="facet-tag.png"
Content-Transfer-Encoding: base64

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
PHjwYFNT04gRI7y8vGjLqVOnQkJCHBwcHBwcRowY8fXXX7NXcvXq1alTp7q7u4vF4hdeeGH/
/v3MpL1799Jznvb29j4+PsuWLePU9Ni5c+dzzz1nZ2fn7e29a9cupl1TDTberdDSC21vbm5+
9913XV1dhUJhQECAQCDYt28fs/iBAwcEAsELL7zQqV0HAF3RAy6FdHETur4HrKFUpHnuR502
bRr574lTiv5N2wkhX3/9dUREhEgk+vXXX2/duiUWi//0pz8xqfHHH38MDAw8d+7cl19+WV9f
v3fv3oMHDzKr+umnn3Jycurr66urq+fMmbNy5cqkpCR275999llubu6dO3e8vLzi4+OPHz/O
TNJ9F3fYy9atW+fMmVNRUdHe3j5v3jxCyI4dOzjbq9/zSQCgjvPlVSgUs2fPdnV1tbOzGzly
ZE5OjpE6ov8P7tOnz+jRo8+cOWOoXjRR6TxgDe+vme6L87KWUpFGfRZE06N4VVVVtra2IpHo
/v37KpWqoqJCJBLZ2tpWVVXRGV555RVCyI8//khf/vjjj4SQESNG0JdhYWGEkBMnTnQYAB3D
ydXVlb6km6xptYQQZkhc9vzqf+vSy5UrV5gZGhsbZTKZUChkBg62s7OzsbHhHbEXzy9Cj9ep
5xd1xPl6vvbaa4mJiWVlZc3NzXl5eZGRkerzGKQj+rK2tvbIkSP9+vXLz8/vehcGYYyf9/Xr
18+ZM4fTGB8f/49//MOwHRk7N2lCP5lme65/7NixhBC6N+kwQvSDS0kkEkJIc3MzfUnrLjFj
1dMBeRsbG9VXe/fu3bfeesvT01MkevwICq2uovpvxuKs1sHBgZmqY17UpRc6ECJj4cKFhJDV
q1erVKpt27YRQl599dXO7jSAnsEE9RdtbW0bGho4/RK+OoKlpaUjRowQi8UjRoygBSKYmTXV
JuT8MjCLHDhw4PXXX9cUJ29lxJaWlvfee8/FxaVPnz7r16/XpXfOFi1evFgikQQFBTHBa4pT
fXHebefdS1SPLxVp5uf62Xel0n+13ImqvrM0iY2N3bFjx+zZsysrK1UqVVtbW6cWZ1MfL7hT
vdjY/GHfzp07VyAQfP755wQnUQF0QMv7VVdXs+8PYKoYxsTEMFcumB9E9g/rsGHDkpKSbt68
yVktrSNIB4SjLUlJScHBwbW1tYGBgYsWLWLPTGsTlpaW0os4vB2xhYaGnjt3TlOc8fHxmZmZ
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
DHkRAADgsf8P4P0dH/+7UMMAAAAASUVORK5CYII=

--ABTtc+pdwF7KHXCz--

--gE7i1rD7pdK0Ng3j
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFA/oBt9LSwzHl+v6sRAmX6AJ9Vfm4RcQ90PV236F2aP33iMq4RZwCdEi5k
vMk6GdXh2/D9hsa0z95JbPs=
=HOks
-----END PGP SIGNATURE-----

--gE7i1rD7pdK0Ng3j--