The goal of the Alignment server is that different actors can share available alignments, networks of ontologies and ontology matching methods. Such a server enables to match ontologies, store the resulting alignment, store manually provided alignments, extract merger, transformer, mediators from those alignments.
We present here the architecture of the Alignment server and its first functions as well as a short introduction to the extension of the server by communication plug-ins. There is a tutorial showing the server in action as well as a sample server at https://aserv.inrialpes.fr. For deploying your own server, see our Quick start guide.
The Alignment server is built around the Alignment API (see Figure). It thus provides access to all the features of this API.
The server architecture is made of three layers (shown in the figure):
Currently, four plug-ins are available for the server:
There is no constraint that the alignments are computed on-line or off-line (i.e., they are stored in the alignment store) or that they are processed by hand or automatically. This kind of information can however be stored together with the alignment in order for the client to be able to discriminate among them. For applications, the server can be available:
The components of the Alignment server as well as the connected clients can be distributed in different machines as presented in the figure above. Several servers can share the same databases (the server works in write once mode: it never modifies an alignment but always creates new ones; not all the created alignments being stored in the database in fine). Applications can reach the Alignment server by any way they want, e.g., starting by using Jade and then turning to web service interface.
Alignment servers must be found on the semantic web. For that purpose they can be registered by service directories, e.g., UDDI for web services, Oyster for ontology metadata. These directories are abstrated in a class called Directory and it is possible to add new directories to which registering Alignment servers.
This infrastructure is able to store and retrieve alignments as well as providing them on the fly. We call it an infrastructure because it will be shared by the applications using ontologies on the semantic web. However, it may be seen as a directory or a service by web services, as an agent by agents, as a library in ambient computing applications, etc.
Services that are provided by the Alignment server are:
These tasks are summarised in the following table:
Service | Syntax |
Finding a similar ontology | |
Match two ontologies | A' ⇐ Align(O, O', A, p) |
Trimming | A' ⇐ Threshold(A, V) |
Generating code | P ⇐ Render(A,language) |
Translating a query | q' ⇐ Translate(q, A) |
Storing alignment | n ⇐ Store(A,O,O') |
Finding (stored) alignments | {n} ⇐ Find(O,O') |
Retrieving alignment | 〈O, O', A〉 ⇐ Retrieve(n) |
Most of these services correspond to what is provided by any implementation of the Alignment API. The main principle of the Alignment API is that it can always be extended. In particular, it is possible to add new matching algorithms and mediator generators that will be accessible through the API. They will also be accessible through the Alignment servers. They can thus be extended to new needs without breaking the infrastructure.
The Alignment server can also deal with networks of alignments as implemented in our API implementation.
A detailed presentation of how to access these functions is available for HTML and REST and SOAP.
In order to implement a new communication channel as a plug-in, what has to be done is to define a new AServProfile that will invoke the AServProtocolManager with:
So, it is necessary to:
A good idea to start with is to take example on the HTML interface as well as its display in order to see what is working and not. The code of this interface should be far more complex than that of the new plug-in (which should rather be translation of the messages).
The hierarchy of message types and the content of these messages are:
Message |- Success | |- AlignmentId -> alignment id | |- AlignmentIds -> alignment ids | |- OntologyNetworkId -> ontology network id | |- EntityList -> entity URIs | |- OntologyURI -> ontology URI | |- TranslatedMessage -> translated message | |- RenderedAlignment -> alignment rendering | |- RenderedNetwork -> ontology network rendering | |- AlignmentMetadata -> metadata | |- EvalResult -> evaluation results |- ErrorMsg | |- UnreachableOntology -> faulty Ontology URI | |- UnreachableAlignment -> faulty alignment URI | |- UnreachableOntologyNetwork -> faulty alignment URI | |- UnknownAlignment -> faulty alignment id | |- UnknownOntologyNetwork -> faulty ontology network id | |- UnknownMethod -> faulty method (Java method) | |- NonConformParameters -> unspecified | |- CannotStoreAlignment -> error with storage | |- RunTimeError -> error message
The use of message aims at facilitating the distribution of the plugs-in (if necessary) and the network of servers.