The MOMIS FAQ

Q.[1].The faq version
this is last update
 $Id: faq.txt,v 1.111 2004/01/21 11:20:46 corni Exp $

Q.[2].Important notes
here

Various (to be organized)

Istruzioni sulle Faq

Q.[3].convenzioni per scrivere questo file delle faq
questo file di faq e' un file di testo (plain text ascii) scritto con un editor di testi quale emacs, winedit o notepad.
E' necessario rispettare alcune convenzioni stilistiche per permettere l'elaborazione automatica delle faq (e quindi l'esportazione di questo file in formati diversi dal testo) Le convenzioni sono le seguenti:
Il file e' diviso in categorie e sotto categorie le categorie iniziano per
   ---- nome categoria
le sottocategorie iniziano per
   -- nome sotto categoria
la singola faq. ha due sezioni: la domanda, prefissata da:
   q.
e la risposta, prefissata da:
   a.
Il testo (a parte le categorie) inizia a colonna 3, i primi 3 caratteri sono ignorati.
Il testo che inizia nelle colonne da 4 in poi, viene trasformato in in testo html preformattato, esempio:
 testo preformattato.
Il testo che inizia esattamente a colonna 3 viene convertito in normale testo html.
Viene aggiunto un a-capo nel caso in cui una riga finisca con un punto, punto esclamativo, interrogativo o due punti.
Attenzione: in questo file (come in tutti i file sorgenti), cercare di NON superare le 80 colonne.

Q.[4].Tools per produrre HTML da questo file
E' stato sviluppato il tool perl
   parseFaq
il seguente comando crea una pagina html (senza headers) a partire da questo file
   parseFaq faq.txt > faq.html

Overview

Q.[5].What is MOMIS
See site http://www.dbgroup.unimo.it/Momis/

The development environment

Q.[6].Environment setup on a window (2000/xp) machine
here the basic steps to initialize a cygwin the enviroment from scratch:
Environment setup:
It should be all.
Now try to go in
 c:/bin
and perform a ceck out
 cvs co momis
and compile the whole momis:
 cd $dmt
 ant init

Q.[7].The $dmt (momis) directory structure
Here is a small tree of the momis development directory structure with notes:
 0note.txt               files 0note.txt describes directorys content
 build.properties (5k)   a "make" related file
 build.xml (28k)         the main "make" file
 setVars.sh (275b)       for tests, to initialize the CLASSPATH
 ./CVS [2]               data for the "CVS - Concurrent Versions System"   
 ./bin [1]
   byaccj_1.8_j0.92_modificato.tgz (96k)  sources for the yacc used in MOMIS
   compileJavaCC.sh (146b)                a compilation Script
   cvsUpdate.sh (104b)
   ./bin/win32 [2]
     byacc.exe (100k)
 ./classes [1]           momis compiled code
 ./conf [1]              default configurations and config examples
   corbaExample_full_m2.conf (1k)
   momis.conf (1k)
   siDesigner.conf (1k)
   Torque.properties (4k) Torque (jdbc) configuration for accessing WordNet
   ./conf/declarationsIDL [2]     Corba (IDL) MOMIS declarations
   ./conf/declarationsWSDL [2]    WebServices (WSDL) MOMIS declarations
   ./conf/samplesIdl [2]          Corba configuration examples
   ./conf/samplesWrapperCore [2]  Wrappers configuration examples
   ./conf/samplesWsdl [2]         WebServices configuration examples
   ./conf/schema [2]              Wordnet relational schema in XML
 ./doc [1]               Momis documentation direcgtory
   0note.txt (80b)
   faq.txt (88k)         This faq file
   parseFaq (16k)        A script to convert the faq.txt to Html
   ./doc/api [2]         MOMIS apis generated by "ant doc"
   ./doc/guides [2]      Other various documents in faq format
     multiWordnet.txt (7k)
     webServices.txt (30k)
 ./images [1]            Images files used in Gui programs (SiDesigner)
 ./lib [1]               Libraries used by MOMIS
 ./samples [1]           Variuos integration samples (may be out-of-date)
   stato.xml (48k)       reference example (this should be never outOfDate)
 ./src [1]               MOMIS source code directory
   odli3.y (108k)        the ODL_i3 language parser for byacc
   OntologyManagerClient_parser.jj (9k) a Wordnet client language for JavaCC
   oql.y (49k)           the OQL_i3 language parser for byacc (not used)
   ./src/it [2]          the MOMIS Package root dir
   ./src/sql [2]         Torque generated SQL for WordNet
 ./templates [1]         Torque templates
 ./trash [1]             Useless temporary files
 ./var [1]               Autogenerated files (that varies over the time)
                         convention on file name prefix in the var dir:
                          run      require a user interaction
                          start    starts a serve daemon
                          build    script used in compilation

Usage

Q.[8].How to use SI_Designer on sparc20 server
Starting from a terminal
 cd /export/home/progetti.comuni/Momis/prototypeNew
 source 0setVars
 var/runSiDesigner.sh

Q.[9].Ant, basic usage
Basic parameters nota:

Q.[10].The CVS, basic commands
here
Q.[11].CVS, advanced commands
here
Q.[12].How to use the bin/cvsUpdate.sh command
the script
 $dmt/bin/cvsUpdate.sh
performs a CVS update and writes a formatted output into the file
 $dmt/updatedfiles.txt
like this:
 cvs ci -m "?-" vmtemplates/schemaXml_localClasses.vm_orig
 cvs ci -m "?-" ws.wsdd
 cvs ci -m "M-" src/it/unimo/dbgroup/momis/SIDesigner/SIM/MetodiSim.java
 cvs ci -m "M-" src/it/unimo/dbgroup/momis/SIDesigner/SIM/SIM.java
the meaning of the "M-" or "?-" is:
 "?-"  the file exists on you Computer but does not exists
       in the CVS repository
 "M-"  the file exists in the repository and you modified it on
       your computer
The following is the exautive list of possible flags.
This is from the CVS documentation (info cvs)
 U FILE
  The file was brought up to date with respect to the repository.
  This is done for any file that exists in the repository but not in
  your source, and for files that you haven't changed but are not
  the most recent versions available in the repository.
 P FILE
  Like `U', but the CVS server sends a patch instead of an entire
  file.  These two things accomplish the same thing.
 A FILE
  The file has been added to your private copy of the sources, and
  will be added to the source repository when you run `commit' on
  the file.  This is a reminder to you that the file needs to be
  committed.
 R FILE
  The file has been removed from your private copy of the sources,
  and will be removed from the source repository when you run
  `commit' on the file.  This is a reminder to you that the file
  needs to be committed.
 M FILE
  The file is modified in  your  working  directory.
  `M' can indicate one of two states for a file you're working on:
  either there were no modifications to the same file in the
  repository, so that your file remains as you last saw it; or there
  were modifications in the repository as well as in your copy, but
  they were merged successfully, without conflict, in your working
  directory.
  CVS will print some messages if it merges your work, and a backup
  copy of your working file (as it looked before you ran `update')
  will be made.  The exact name of that file is printed while
  `update' runs.
 C FILE
  A conflict was detected while trying to merge your changes to FILE
  with changes from the source repository.  FILE (the copy in your
  working directory) is now the result of attempting to merge the
  two revisions; an unmodified copy of your file is also in your
  working directory, with the name `.#FILE.REVISION' where REVISION
  is the revision that your modified file started from.  Resolve the
  conflict as described in *Note Conflicts example::.  (Note that
  some systems automatically purge files that begin with `.#' if
  they have not been accessed for a few days.  If you intend to keep
  a copy of your original file, it is a very good idea to rename
  it.)  Under VMS, the file name starts with `__' rather than `.#'.
 ? FILE
  FILE is in your working directory, but does not correspond to
  anything in the source repository, and is not in the list of files
  for CVS to ignore (see the description of the `-I' option, and
  *note cvsignore::).

Installation

Q.[13].Momis Development environment installation on Windows (2000 o XP)
here:

Q.[14].How to obtain the lastest version of "MOMIS"
You must have an account on the CVS server and the rights to access to the repository.
Client requirements:
I seguenti comandi sono validi per scaricare i sorgenti nel caso di uso con UNIX o con i tools CYGWIN di Windows:
questo compilera' momis gli script per avviare le applicazioni maggiormente usate.
Per compilare la documentazione html dei sorgenti usare il comando
   ant doc

Q.[15].Compile on the Sparc20
Sequence of commands to compile the first time momis under the Sparc20:
edit the files
 conf/schema/id-table-schema.xml
 conf/schema/momiswn-schema.xml
and remove the second line:
 <!DOCTYPE database SYSTEM "file://c:/bin/momis/schema/database.dtd">
then use the following commands
 setenv JAVA_HOME /usr/local/j2sdk1.4.0
 setenv PATH "$JAVA_HOME/bin:$PATH"
 ant scripts; chmod +x var/*.sh
 ant init           # will produce several compilation errors
 cp $JAVA_HOME/jre/lib/rt.jar  lib
 ant

The wrappers

Q.[16].Running a wrapper directly from the command-line Client
There is a directory of examples in
 conf/samplesWrapperCore/
For example:

Q.[17].Configuring a JDBC wrapper for ODBC sources (MS Access, MS Excel)
These instructions should be valid for a generic ODBC data sources but I have run tests using a MS Access file and a MS Excel file.
When you want to wrap an ODBC source you have to follow these steps:
NOTE: The username and pwd are optional.

Q.[18].Configuring a JDBC wrapper for ODBC sources (MS SQLServer)
These instructions are valid fo MS SQLServer sources.
When you want to wrap a DB on MS SQLServer you have to follow these steps:

Q.[19].Running a CORBA wrapper demon
Steps to run a Jdbc/CORBA wrapper End.

Q.[20].Running Configure and run a WEB SERVICE wrapper demon
To configure the environment To start the service
 var/runAxisAdminClient.bat conf/samplesWsdl/dummy/wrapper.wsdd
or
 var/runAxisAdminClient.bat \
   -lhttp://localhost/axis/services/dummyWrapper \
   conf/samplesWsdl/dummy/wrapper.wsdd
to test the running service
 echo -e "\\\\dx\\n\\\\x" | var/runWrapperClient.bat \
   conf/samplesWsdl/dummy/wrapper_client.conf
To stop the service
 var/runAxisAdminClient.bat conf/samplesWsdl/dummy/wrapper_undeploy.wsdd
 var/runAxisAdminClient.bat \
   -lhttp://localhost/axis/services \
   conf/samplesWsdl/dummy/wrapper_undeploy.wsdd
Other examples:

Other services

Q.[21].odbtools notes
here
Q.[22].Using The OdbTools WebService interface
here

The WordNet in Momis

Q.[23].Introduction to WordNet in Momis
here
Q.[24].How to initilize MySql
This is the procedure That's all folks. Now you have to write in the database all wordnet data or get a dump of the database already initialized.

Q.[25].How to initilize the MySql db from a dump
steps are:
That's all.

Q.[26].Where MOMIS looks for the WordNet database?
By defautl momis expect Wordnet in the following directories
 for windows:     c:\wn16
 for unix:        /usr/local/wordnet1.6/
it is possible to choose any other directory, or relative path to do this, MOMIS looks for the java System property "WNHOME".
An example of how to give a relative path:
edit the file
 var/runSiDesigner.bat   (or var/runSiDesigner.sh)
and add the parameter
 -DWNHOME=../wn
on the java command line, in the following way:
 java -DWNHOME=../wn it.unimo.dbgroup.momis.SIDesigner.SI_Designer ...

Q.[27].Note on the WordNet files:
Wordnet in windows should be in
 c:/wn16
if it is in any other place, try this command:
  java -DWNHOME=theFullPathToWordnet it.unimo.dbgroup.momis.SIDe...
the Silm libraries will look into the
 theFullPathToWordnet
path for the wordnet files
Q.[28].Useful Query
here
 select LENGTH(DESCRIPTION)
   from WN_RELATIONSHIP_TYPE
 order by LENGTH(DESCRIPTION) desc;

Momis and Web services

Q.[29].Momis and Web services
Momis uses Apache Jakarta Axis as Web-Service engine.
WSDL intefaces must be stored in the directory
 $dmt/conf/declarationsWSDL/
and stub/skeletons are usually compiled in the directory
 $dms/wsdl

Q.[30].using the Axis java2WSDL
here:

Momis e Java Web Start

Q.[31].JWS - HOW TO Install from sources
here:

Q.[32].JWS - How to test the Prechooser
use this preChooser.bat
   @echo off
   rem
   rem  starts siDesigner GUI tool  with PreChooser 
   rem
   set PATH=%PATH%;.\\lib\\windows
   set CLASSPATH=...findThisUsing: . setvars; echo $CLASSPATH
   rem echo %CLASSPATH%
   rem echo .
   java it.unimo.dbgroup.momis.SIDesigner.PreChooser %1
to enable the debug in Java Web Start modify the Java Web Start configuration file (javaws.cfg) and sets the following options:
 javaws.cfg.logToFile=true
 javaws.cfg.logFileName=pathLogFileName/logFileName

Developement and Code Convention

Q.[33].programming style
refere to the sun java conventions:
 http://java.sun.com/docs/codeconv/
see for example the line lenght convention
 http://java.sun.com/docs/codeconv/html/CodeConventions.doc3.html#313

Q.[34].Instance variable of the classes
The instance variable of the classes must be private
 and must begin with unterscore.
 Example
  private HashMap _relTargetMap = new HashMap();

Q.[35].javadoc
The tags
 -- tag    -- since version
 @author       1.0
 {@docRoot}    1.3
 @deprecated   1.0
 @exception    1.0
 {@inheritDoc} 1.4
 {@link}       1.2
 {@linkplain}  1.4
 @param        1.0
 @return       1.0
 @see          1.0
 @serial       1.2
 @serialData   1.2
 @serialField  1.2
 @since        1.1
 @throws       1.2
 {@value}      1.4
 @version      1.0
for more information you are strolgly encouraged to se the jdk documentation
 j2sdkDir/doc/docs/tooldocs/windows/javadoc.html

Q.[36].Torque related issues
a few points on SQL queries

tips

Q.[37].Emacs tips
compile inside emacs:
Use the command
 M-x compile
and type
 ant -emacs -f c:/bin/momis/build.xml

Q.[38].How do I create symbolic links in NTFS?
Use the junction tool available at:
 http://www.sysinternals.com/ntw2k/utilities.shtml
Example:
To create a symbolic link for the 'classes' directory under the 'WEB-INF' directory of my webapp under TOMCAT.
The symbolic link has to point at the classes directory of my momis project. Change directory to WEB-INF of your tomcat application and execute the following command:
 junction.exe classes $dmt/classes
NB!!!:

Debugging

Q.[39].Using the System.out.println
The suggested way to perform the debug is modify source code adding temporary ad hoc output instruction.
This is useful and fast if You know well the code.
Otherwise You can try a GUI debugger
Q.[40].Using the JSwat debugger
JSwat
 http://sourceforge.net/projects/jswat/
 http://jswat.sourceforge.net/
 http://www.bluemarsh.com/java/jswat/
JSwat is a standalone, graphical Java debugger front-end, written to use the Java Platform Debugger Architecture (JPDA) library provided by JavaSoft. JSwat is licensed under the GNU General Public License which makes it freely available in both binary and source code form.
To use the JSwat in momis, uncompress the distribution file in the dir
 $dmt/jswat
the content of such dir will be something like the following:
 alberto 16:35:14 momis:l jswat/
 total 2168
    1 -rw-r--r--    1    567 Apr 29 08:18 AUTHORS.txt
    5 -rw-r--r--    1   4176 Apr 29 08:18 BUGS.txt
   27 -rw-r--r--    1  26876 Apr 29 08:18 HISTORY.txt
   18 -rw-r--r--    1  18007 Apr 29 08:18 LICENSE.txt
   53 -rw-r--r--    1  53533 Apr 29 08:18 OLD_HISTORY.txt
   12 -rw-r--r--    1  11831 Apr 29 08:18 README.html
    1 -rw-r--r--    1    150 Apr 29 08:18 TODO.txt
  352 -rw-r--r--    1 359519 Apr 29 08:18 jclasslib.jar
  892 -rw-r--r--    1 912984 Apr 29 08:18 jswat.jar
  795 -rw-r--r--    1 813211 Apr 29 08:18 parser.jar
The following step will run SI-Designer into the jswat:
here step by step:

Q.[41].using the EJP profiler
EJP Profiler
 http://ejp.sourceforge.net/
The Extensible Java Profiler (EJP) is a Java profiling tool that enables developers to test and improve the performance of their programs running on the JVM. A profiling tool measures and reports the time spent in different parts of a program. Using it allows developers to identify any code making heavy use of the CPU.
Intro:
Steps:

Software modules

Wrappers

Technical notes

Q.[42].CORBA implementation: running several wrapper server in the same Virtual Machine
(Alberto) Ho verificato se e' possibile lanciare piu' serever nella stessa virtual machine usando:
  orbd  e  servertool
ho avuto dei problemi...
quindi vengono lanciati in VM diverse
Q.[43].Wrapper: a bit of theory
Wrapper introduction Wrapper generalization Source specific wrappers Communication wrappers See the question "Wrapper: An introduction for developers" for a few developer specific hints
Q.[44].Wrapper: An introduction for developers
Introduction Capabilities A few examples

The Annotation Ontology (SLIM)

Q.[45].the AnnotationOntology command line client interface
here

GlobalClasses

Q.[46].Classes from June 2003
The new "GlobalClsses" are now called "GlobalInterface" and inherits from the class Interfaces.
In the same way, the GlobalAttributes inherits from the Attribute and so for the GlobalSource and Source.
This allows to extends to the global schema the odli3 features such as foreign keys, inheritance and types.

Q.[47].Mapping Table from June 2003
The new mapping table is defined in the package
 it.unimo.dbgroup.momis.odli3.mappingTable
The MappingElement class is at the Top hierarchy class of the MappingElements.
There are 5 types MappingElements:
Old simple mapping was substituted by the MappingElementComposedAnd element since the and can be for the same attributes of the class but also between elements of different classes in join.
Now, each MappingElementComposed links a collection (Vector) of local Attributes objects.
The null mapping is given by the absence of mapping.

Q.[48].What is a SourceClass
I (Alberto) found a few problmes understanding what is a SourceClass when I had to write the XML dump/parse routines for JoinMap.
This is a piece of code from
 it.unimo.dbgroup.momis.SIDesigner.joinMap.JoinMapPanel
here:
 private Vector makeJoinMap(java.lang.String gcName){
    Vector rv = new Vector(0);
    Vector locClasses=getLocCl(gcName);
    int cont = 0;
    LocalClass[] sc1=null;
    sc1=new LocalClass[locClasses.size()];
    LocalClass[] sc2=null;
    sc2=new LocalClass[locClasses.size()];  
    String out="";
    for( int i=0; i<locClasses.size(); i++){
       sc1[i] = (LocalClass)locClasses.get(i);
       for( int j=cont; j<locClasses.size(); j++){
          sc2[j] = (LocalClass)locClasses.get(j);
          if (sc1[i]==sc2[j]) continue;
          SourceClass s1=new SourceClass(sc1[i].source,sc1[i].name);
          SourceClass s2=new SourceClass(sc2[j].source,sc2[j].name);
          JoinMap jm;
          jm=new JoinMap(s1,s2);
          System.out.println(jm.firstElement.name
                             +" "+jm.secondElement.name);
          rv.add(jm);
       }                                                
       cont++;
    }
    return rv;
 }
It seems quite clean that Source classes represents LOCAL CCLASSES!!!!
The question is:
 WHY, WHY USE at least TWO CLASSES FOR THE SAME INFORMATION?
Moreover, a localClass is represented by the odli3.Interface ojbect!
This is a really difficult problem.
. . It seems the SourceClass is a LocalClass specialization...
A SourceClass rappresenta una LocalClass all'interno di una GlobalClass. Questo perche' la SourceClass contains information specific and optimized for the given GlobalClass.
. I think the right place where to put the method is
 getSourceClass(fullName)
that can be invoked on every GlobalClass instances.
Fields of the SourceClass should be filled according to the mapping tables.

Q.[49].New XML TYPE representation
Here are the supported types of MOMIS.
On the left column there is the odli3 Class name representing the type, on the right the name in the XML.
Type not represented in XML are not supported by the MOMIS parser.
 -- odli3 class ---+-- xml name-------------------
 StructType
 UnionType
 EnumType
 InterfaceType      <TypeInterface name="Person" />
 AnyType            <TypeAny />
 BooleanType        <TypeBoolean />
 CharType           <TypeChar />
 DateType           <TypeDate />
 TimestampType      <TypeTimestamp />
 FloatingType       <TypeFloating />
 DoubleType         <TypeDouble />
 IntegerType        <TypeInteger />
 OctetType          <TypeOctet />
 RangeType          <TypeRange min="inf" max="333" />
 StringType         <TypeString length="20" />
 - template types -
 ArraySequence      <TypeArraySequence>...</TypeArraySequence>
 BagType            <TypeBag><TypeInteger /></TypeBag>
 ListType           <TypeList><TypeInteger /></TypeList>
 SetType            <TypeSet><TypeInteger /><TypeSet>

Incontri

Q.[50].riunione del 21 Gennaio 2004
partecipanti argomenti Uteriori informazioni saranno sul verbale redatto da Luca Ghetti
Q.[51].Riunione Momis, 19/1/04 10.16
Partecipanti:
Problemi evidenziati da Sonia
Q.[52].29 Dic 2003 Riunione via Internet
Attivitą svolte ieri:
Alberto ha espresso la volontą di riscrivere la struttura dati OQL, fatta da precedenti tesisti, in ODLi3, Come da accordi ci sentiamo la prossima settimana per analizzare i progressi sulle funzioni.

Q.[53].29 Dic 2003 note a Luca Ghetti, documento integrazione
here
Q.[54].Riunione 8 Nov 2003
punti
Q.[55].Incontro del 19 Sept 2002
cose da fare
Q.[56].the meeting of October 15 2003 (Mapping Tables):
We stated:
We need to face with two problems:
Here are discussed:
The identity Example:
Here is a mapping for a local attribute
  .
  source    | university        |   department  |  |   GLOBAL |
  ----------+-------------------+---------------+  +----------+
  interface | person            |   student     |  |   person |
  ----------+--------+----------+---------------+  +----------+
  attribute | name   |lastName  |   studentName |  |   name   |
  ----------+--------+----------+---------------+  +----------+
            |        |          |               |  |          |
            |        |          |               |  |          |
            |Alberto |Corni     | Corni Alberto |  |  -----   |
            |        |          |               |  |          |
  .
An example of "direct" mapping can be:
  GLOBAL.person.name = 
     f(university.person.name
       , university.person.lastName
       , department.student.studentName
      ) {
        name = department.student.studentName;
        if (name == null) {
          if (university.person.lastName != null) {
            name = university.person.lastName;
            if (university.person.name != null) {
              name = name + " " + university.person.name;
            }
          } else {
            name = university.person.name;
          }
        }
        return(name);
      }
this gives the precence to the
 department.student.studentName
if this is not deifined (is null) tries to compone the name concatenating the university.person attributes.
The "reverse" mapping:
that is how to rewrite the global query:
 select * from person where name = "Alberto Corni"
We must provide 2 templates, one for university.person and one for department.student for rewriting the stement
 name = "Alberto Corni"
Let us examine the department.student mapping that is simpler.
In this case there is identity so the rewriting is
 [select ... where ... ] student.studentName = "Alberto Corni"
The university.person is not so trivial.
In this case whe should implement an alogoritm that tryes to split the name in first and second and then builds templates.
 {
  s = 'person.name + " " + person.lastName = "$GLOBAL.person.name'
  return s;
 }
or:
 {
  # perl like regular expression statement
  (name,separator,lastName) = 
    split($GLOBAL.person.name, "(.*[ \t\n]*.*)");
  s = 'person.name = "$name" and person.lastName = "$lastName"
       or person.name = "$lastName" and person.lastName = "$name"';
  return s;
 }
or: we could define even more complex functions to handle the cases
 "Francesco De Gregori"
 "Carlo Alberto Conti"
that, for example produces a different list of possibilities
 # Francesco De Gregori
 person.name = "Francesco" and person.lastName = "De Gregori"
 or person.name = "Francesco De" and person.lastName = "Gregori"
 # De Francesco Gregori
 or person.name = "De" and person.lastName = "Francesco Gregori"
 or person.name = "De Francesco" and person.lastName = "Gregori"
 # De Gregori Francesco 
 ...
 # Francesco Gregori De
 ...

done:

Q.[57].version 0.1
here:
 sistemare la compilazione sulla sun
 [Dic 2002]
- relazioni di thesaurus:
  - non importa correttamente il validated
- wrappers
  - remove  the method
     WrapperRS.getColumnType(int columnNumber)
    we assume that who performs a query
    can get all information through the getDescription (schema)
    method.
  - use the DatabaseMetaData object to get column description.
    Was created the object
     it.unimo.dbgroup.momis.communication.core.jdbc.WrapperJdbcCore_metaData
- dalle librerie, togliere
   oracle_classes12.jar
  per 2 motivi:
  - 1 non e' freeware, i diritti sono della Oracle
  - 2 occupa tanto spazio sul repository.
- bug corbaChannel: non supporta i null!
[Oct 2002 Veronica Guidetti]
Q.[58].version 0.3
here
Q.[59].The SLIM REPORT (Daniele Miselli) - italian
A few note on Slim
Q.[60].version momis-0-4-0
here
Q.[61].version momis-0-4-1
here The annotationOntology Package:
features:
Organization
Q.[62].version momis-0-4-2
here Wordnet and related
Q.[63].version momis-0-4-3
here

todo:

Q.[64].todo: Short term scheduled todo and required resources
here
Q.[65].momis types
here is the hierarchy of types defined in the Odli3:
 Type
   TypeToSolve
   ValueType
     ConstrType (structured types)
       EnumType
       StructType
       UnionType
     SimpleType
       BaseType
         AnyType
         BooleanType
         CharType
         DateType
         FloatingType
         IntegerType
         OctetType
         RangeType
         StringType
       DefinedType (new type defined by the odli3 "type" operator NOT SUPP.)
       TemplateType  (collection types)
         ArraySequence
         BagType
         ListType
         SetType

Q.[66].todo: Long term scheduled/important todo
here
Q.[67].Low priority tasks
here:

Q.[68].todo other (da verificare se farlo)
here

Detailed todos

Q.[69].The OLDi3 objects handling.
the problem:

Q.[70].todo: Schema Viewer (Daniele Miselli)
here
 - Il tool esistente si trova in 
    /export/home/progetti.comuni/prototipo/java
   per provarlo:
    appletviewer tmp_vf_file.html
   mi raccomando NON usarlo!

Q.[71].todo: Wordnet and related
here
Q.[72].todo: Query manager
Resources Credo dovremmo finalmente allinearci anche su:

Q.[73].todo: New mapping/Join table
Resources Quello che si vuole: una struttura dati per la rappresentazione delle joinmap piu' espressiva ed estensibile. Questa si puo ottenere lavorando con gli alberi (come la clausola where delle query... questa e' effettivamente una clausola where!!!).
Se aggiungiamo i giusti metodi (interfaccie) agli oggetti, la complessita' di questa struttura dati diminuisce grandemente.
Ecco come si potrebbe fare:
Vantaggi.
Il grosso vantaggio di questa soluzione e' la facilita' di estendere le clausole where.
Per introdurre un nuovo operatore o una nuova funzione e' sufficiente creare la relativa classe java che
 implements JoinMapTreeNode
che contiene il codice per generare l'opportuno SQL oppure (piu' avanati) sa come deve essere applicato l'operatore e lavora sulle strutture dati XLL o simili.