S-Match is an open source semantic matching framework. Several persons from our research group worked with it for several years, actively using it for research experiments. I've been working on and maintaining S-Match during my PhD studies.
S-Match takes any two tree-like structures (such as database schemas, classifications, lightweight ontologies) and returns a set of correspondences between those tree nodes which semantically correspond to one another.
S-Match contains implementations of the semantic matching, minimal semantic matching and structure preserving semantic matching algorithms.
S-Match applies as a solution in many fields, including:
S-Match is extendable to host new algorithms.
extJWNL is an open source library for accessing semantic linguistic resources, such as WordNet. Current lack of free semantically rich knowledge bases, absense of a library which allows one to create WordNet-like resource, WordNet popularity and availability of tools to read its dict format created enough incentives to refactor popular, but stalled JWNL project.
extJWNL features support for:
extJWNL is extendable to host implementations of new dictionary formats.
extJWNL is an open source software licensed under BSD license and hosted on SourceForge.
GeoWordNet is an attempt to create an acessible semantic resource, a knowledge base about geography. GeoWordNet is built as a full integration of WordNet, GeoNames and the Italian part of MultiWordNet. extJWNL was used to create WordNet-compatible, dict format version of GeoWordNet.
In 2004, while selecting a topic for master degree project, my advisor brought to my attention content-based image retrieval problem. The goal of OKO (means eye in old Russian) project is to build a prototype of a content-based image retrieval system.
There are many approaches to content-based image retrieval. We based our system on an algorithm, which used wavelets and multiresolution analysis to extract salient point, or points of interest out of the picture, and extracted a number of features to index.
Several aspects of salient point extraction process were explored, such as singal band, saliency computation start level, wavelet family, color space. Local colour and shape features based on the pixels in the vicinity of the found salient points were extracted and indexed.
The working prototype of the system was implemented in a MATLAB environment. The prototype consisted of a series of scripts which analysed images, build index and executed queries against it.
The prototype was tested on a database of 858 images. The database was clustered and contained several clusters of similar images, so that the retrieval quality could be quickly evaluated visually.
Left top image in all examples below is the query image. This sample query shows the retrieval of the planes cluster. All images from the cluster were retrieved. Last images in the results show that algorithm actually captures the shape of the object :)
More noisy and more difficult cluster with bears and here we see some ranking errors, although the cluster was retrieved completely.
More difficult example with an object that is hard to detect even for humans. First few images represent a small cluster with an animal moving in the bushes. The ranking here is better.
In 2002 I was working as a software engineer and developed database applications using Delphi and Oracle database. Often times in a database application one has to provide an option for a user to execute an arbitrary (select) query against a database. And one immediately faces a user who does not know SQL. Using a business analytics application such as Business Objects is often an answer to this situation. However, its high price and requirements to add few twists here and there led to the development of this project.
The project consists of two parts, a data mart designer and a query tool. The first one allows a designer (a developer, a system administrator or a power user) to design a «data mart» — a view of a (part of) database. A data mart uses user terminology and objects instead of table and field names and provides easy to understand and use view of the database, often tailored to the user needs, enabling also querying aggregate information.
The query tool allows to create and execute a query withing the borders of a previously designed data mart. Features of the system included easy querying of a hierarchical information, such as selecting employees from specific division together with all subdivisions of unlimited depth; parametrization of the queries; interactive queries; restricted access: to certain data marts; to certain queries; to certain parts of the database (vertical slice); to certain data (horizontal slice).
The interface of the tools is in Russian — the language of the customer.
In ICT and research we love abbreviations. Probably only military love them more :). In 2001 I worked as a system administrator and I had an interest in security-related things. So, OOSS stands for Object-Oriented Security System. This project goals was to develop an authorization system for Delphi-based object-oriented projects.
In short, if you develop an object-oriented system in Delphi and want to have some security, you had to do it yourself. However, internal design of the run-time data structures of the object-oriented part of the language allows to control access to object methods and properties. This feature enables designing a generic enough framework which can then be plugged into any project with little to no effort, enabling authentication, authorization and access logging.
The idea was to use RTTI and during system startup substitute getters and setters for objects properties and methods with generic methods, which control the authenticity of a calling object (usually representing the user) and control whether the access to the object in question (usually representing the data) is authorized.
The prototype was designed in Rational Rose using Unified Modeling Language and implemented in Delphi 7. Oracle 8i was used to store Access Control Lists, although any other database or even a file system can also be used. Due to the fact that the target applications were used on Windows NT only, an attempt was made to use native NT security subsystem for ACL storage and editing, however, it was not finished due to lack of time.
In late school years mathematics teacher inspired and later supported my interest in polyhedra. Many polyhedra are of interest, because of their highly symmetric nature. There are some specific cases of a polyhedra symmetry, which deal with transitivity of its elements. Elements of a polyhedron are transitive if by turning the polyhedra one can turn one instance of the element into another.
There are edge-transitive, face-transitive and vertex-transitive polyhedra. For example, in case of edge-transitive polyhedron there is a group of movements (turns) which moves one edge into another. Most of well-known polyhedra (Platonic solids) are highly symmetric and have all three kinds of symmetry. However, not always this is the case.
It turns out these symmetries have quite important consequences for crystallography, for example. On the other side, the movements themselves are tightly connected with Lee algebras. Another interesting application of this is a construction (or better say, discovery) of space-filling polyhedra.
In summer 1997, I visited summer research school in Luzhesno, where we developed a series of various transitive space-filling polyhedra. This is a mathematical side of the issue. The project, accomplished in 2000, dealt with the visualization of these polyhedra using Mathematica system by Wolfram Research.
These polyhedra were computed in Mathematica and visualized using its own graphics engine. For Web display, I use an interactive Java applet LiveGraphics3D by Martin Kraus. You need Java-enabled browser to see and interact with the models.
Try dragging them with mouse, but if nothing happens, read the instructions :) (from LiveGraphics3D documentation)
|user action||applet reaction|
|dragging (left mouse button pressed)||rotating about an axis in the picture|
|releasing left mouse button while dragging||spinning about an axis in the picture|
|SHIFT key pressed plus vertical dragging||zooming|
|SHIFT key pressed plus horizontal dragging||rotating about an axis perpendicular to the picture|
|CONTROL key pressed plus vertical dragging||changing focal length|
|CONTROL key pressed plus horizontal dragging||changing strength of stereo effect|
|META (ALT) key (or right mouse button) pressed plus vertical dragging||stripping parts of the graphics|
|"o" key||printing parameter settings to the Java console (aka Java messages window)|
|"s" key||toggling between single picture, stereo pictures for diverge fusing and stereo pictures for cross fusing|
|HOME key||restoring original perspective (no spinning)|