[MOBY-dev] MobySynchronization now available

Andreas Groscurth groscurt at mpiz-koeln.mpg.de
Fri Aug 24 09:43:57 UTC 2007


Hi all,

I finally made it to check the MobySynchronization into the CVS.

You will find the new packages org.biomoby.registry.sync, in which all the 
magic happens.

A basic subsumption is:

I retrieve with the CentralDigest class all four "object 
types" (MobyNamespace, MobyDataType, MobyServiceType, MobyService) from a 
given master central and from a given local central (defined in a 
configuration file). 
For each entry I check

a) if its unkown to the local central -> register it
b) if its not in the master central anymore, but in the local -> unregister it
c) has it changed (has the LSID changed) -> unregister und register it

As you will find in the documentation I added so called 'filter-rules' which 
allows one to specifiy which services shall be ignored or exclusively taken 
into account (e.g. defining to ignore services from an authority will not 
register any of the services from that authority locally).
Also one can specifiy the local authority to avoid deregistration of local 
test services.

The process at itself takes a long time - 45 mins. Fetching all the datatypes 
and 
services via the CentralDigestImpl is time-consuming (e.g. getting datatypes 
from the central takes about 10min on my machine - and all services about 
15min)
This maybe could be sped up, but I did want to use the existing methods to 
retieve the full information of the objects.....

The building and using of the mobysynchronize is similar to the RDFagent 
(actually, I just copied and replaced), so calling the ant target 
bindist_mobysync will create the distribution stuff for the synchronization 
and this can be found /moby-live/Java/docs/dist/ 

there is also the README and in that the way to use the mobysync.

Changes in the MOBY API:
None... actually... I just added a interface called 'LSIDAccessible' which 
only has the method getLSID(). All Moby objects now implement this interface 
(actually all of them already have had the method getLSID(), so no changes in 
their classes) - i just added it to be able to program genetically.... also 
the 4 object classes now implement this interface and i had to made the 
Comparable interface they use also generic.... (e.. MobyService implements 
Comparable<MobyService>, LSIDAccessible)

One issue I have not solved is with dependencies. So if one datatype e.g. 
can't be deregistered because its used locally in a service nothing happens. 
If that service is then deregistered, the datatype will be deregistered the 
next time the program is called.

Also if a datatype is part of a hierarchy and its children are existing 
locally it will not deregister the datatype or deregister its children 
recursively....

if something is unclear, wrong or so - please let me know

best 
andreas

-- 
Andreas Groscurth
Diplom Bioinformatik - PhD Student
Max Planck Institute for Plant Breeding Research
Carl-von-Linné-Weg 10
50829 Cologne
Germany
E-mail:    groscurt at mpiz-koeln.mpg.de
Phone:    +49(0)221-5062-447




More information about the MOBY-dev mailing list