On Sunday, Aug 31, 2003, at 15:04 Europe/Rome, Christian Haul wrote:
Stefano Mazzocchi wrote:On Wednesday, Aug 27, 2003, at 11:35 Europe/Rome, Christian Haul wrote:I think you greatly underestimate the complexity of the approach you are proposing.Which is the whole point of my mail. Don't use dependency ranges, use metadata specifying capabilities and requirements for this.
Last thing I want is to enter the ontology problem space.
There is absolutely no need to go the full way and I don't suggest to do it. A simple list of features that are matched 1:1 would be orders of magnitude more powerful than version numbers.
But in case I'm missing your point, please provide an explicit example.
Actually, I have already provided one:
<provides-features> <feature name="html-skin"/> <feature name="wml-skin"/> </provides-features>
<dependencies> <block name="core" uri="core"> <feature name="html-serializer"/> </block> </dependencies>
This would be a very simple block that has little requirements and provides few features.
Let's look e.g. at the databases block. For ease of use, let's assume that any tag appearing beneath "provides-features" is a name of a feature and let's assume that features may have sub-features:
<provides-features> <esql> <stored-procedures/> <grouping/> <get-xml/> <get-clob/> <get-blob/> </esql> <sql-transformer> <stored-procedures/> <get-xml/> <get-clob/> <get-blob/> </sql-transformer> <db-actions> <add/> <update/> <delete/> </db-actions> <mod-actions> <add> <autoincrement> <oracle/> <informix/> <mysql/> <postgres/> <hsqldb/> </autoincrement> </add> <update/> <delete/> <query/> </mod-actions> </provides-features>
Now, another block might require the following:
<dependencies> <block name="databases" uri="db"> <!-- *this* block will refer to the block satisfying the requirements as "cob:db" --> <esql> <grouping/> </esql> <sql-transformer/> </block> </dependencies>
Which is apparently compatible. Even without knowing the semantics of a feature "esql" hence without ontologies.
OK, this is more expensive than comparing to integers. OTOH this will occurr only once when a new block is registered.
I am afraid of going down this path because you are not taking into account:
1) semantic collision
2) increased development/maintenance complexity due to more granular dependendies
even providing a fully namespaced taxonomy, the amount of "topics" would grow rather quickly and would also get into the "keydata syndrome": what is a keydata for me might not be for you.
so, in order to depend on a block, you would not only need a dictionary, but a full thesaurus.
which, at the end, will end up being an ontology.
and this path scares me already too much to be willing to get into it.
-- Stefano.