Developer's ManualFinal version, 2002-11-04Andras Micsik and Csaba Fulop | ![]() |
The software consist of a client and a server. The client is a Swing application written in Java, the server is a set of CGI scripts written in Perl.
The client is built on the Jena RDF toolkit [1]. The architecture of the client is shown on the figure. Java Swing provides the graphical presentation toolkit of the client. 'Drag and drop' metaphor is intensively used, mostly for the reuse of existing schema elements. All RDF (collected from the registry or created locally) are stored in memory according to the memory storage model of Jena. On request portions of this RDF can be saved in local files. The client communicates with the registry using the HTTP protocol, exchanging data in RDF format. As most of the transferred data is in RDF originally, this solution eliminates the need of data conversion during network transfer.

Figure One
The client consist of the following packages and classes:
Figure Two
The major classes are:

Figure Three
The server consist of the following modules and scripts: ,P.

Figure Four
The important functions are grouped in modules:
The major functions are:
in Annotation.pm:
in Session.pm:
in Users.pm:
The scripts are:
- graphical layout changes (logo replaced, new header/footer etc.)
- provide download of the latest client
- the command='publish', class='element' parameter combination was not implemented
- evaluation of Java and Perl based solutions: functionality and performance tests
- installation and evaluation of W3C Annotea
- write simple perl client for annotea
- store annotations in Redland instead of Annotea (it was very slow)
- creation of annotation display window
- integration of annotation window with the registry browser
- support for deleting annotations
- editing annotations
- planning of user registration
- implementation of user registration in CORES registry
- planning and development of authentication
- login/logout page
- separating rdf databases for the registry, annotations and users
- change from the MEG namespace to CORES
- update the CORES RDFS (with annotations and users)
- making server installation easier
- switch to the CORES RDFS in the code
- display names instead of ids in registry browser
- numerous bug fixes: avoid drawing empty tables, correcting HTML output, etc.
- implementation of annotation functionality in the client, new class AnnotationDialog to send annotations to the registry
[1] Jena RDF toolkit:
[2] Redland RDF toolkit: Web page by Rachel Heery of UKOLN.
- implementation of authentication for sending annotations
- modify the GridBagConstraints
- the MegDocument calls MegWindow.validate() for the necessary resizing after changing of the viewPane, to this the MegDocument needs a reference to MegWindow: MegDocument.mv
- modify the source of Document after 'save' or 'save as', so it remembers the (new) file
- there were some bug about the Element identifier
- change the MEG picture to CORES
- there were a bug in the upload: the client had used different namespace to identify the type of the Elements
- the program did not exit after closing of the last window, for this it needs a new method: MegWindow.windowClosing()
- closed windows were not removed from the window menu and they documents from the application, for this the client needs new method: Application.removeDocument()
- make checking for file opening, if the client can't open any files from the parameters then it opens an empty document
- the close menu did not do anything, to fix it the client needs a new method MegWindow.close() and MegWindow.closeWindow();
- correct removing and drawing of EncodingSchemes (there were a bug with JTree)
- add the missing schema elements (ElementSet-xmlNamespace, Element-datatype, Value-label, AppProfile-classification, ElementUsage-datatype)
- when removing a Value then remove all instance (if the EncodingScheme is associated with elements and element usages), this needs a new method: Value.removeItem:
- correct the drag&drop over
- correct the SearchMegWindow: it had crashed after several searches (it had called bad function of the listeners of JTree with bad parameters)
- change in MegDocument.valueChanged() : the focus of the browser trees can change only by clicking on the title. (changing the focus by clicking in the tree is disturbing when drag&drop)
- change in MegDocument.remove() : maybe there isn't a selected element
- change method: ModelItem.removeItem: locate the removable elements by browser and PATH (if an EncodingScheme was associated with two element then both were removed)
- when removing from EncodingSchemesBrowser then remove all instance: new method was needed: EncodingScheme.removeItem()
- change in Document.saveAs: now it can overwrite existing files
References
HTML: http://www.hpl.hp.com/semweb/index.html
HTML: http://www.redland.opensource.ac.uk/