Download Kernel

 

Highlights of OpenKnowledge

The existing, open Worldwide Web has been successful on a global scale because the cost of participation at a basic level is low and the individual benefit of participation is immediate, rising rapidly as more participants take part. The same cannot currently be said about semantic based systems because the cost of being precise about semantics for sophisticated components is prohibitively high and the cost of ensuring an individual, absolute semantics for a component rises rapidly as more participants take part. OpenKnowledge aims to break out of this deadlock by focusing on semantics related to interaction (which are acquired at low cost during participation) and using this to avoid dependency on a priori semantic agreement; instead making semantic commitments incrementally at run time. The "Open" in OpenKnowledge thus is significant in two senses: it assumes an open system, which anyone may join at any time; it assumes an openness to being joined, achieved through participation at low individual cost.

 

We shall provide a unifying framework based on interaction models that are mobile in the sense that they may be transferred to other components, this being a mechanism for Web service composition and for coalition formation. A key contribution of OpenKnowledge is to demonstrate that by shifting the emphasis to interaction (the details of which may be hidden from users) we can obtain knowledge sharing of sufficient quality for sustainable communities of practice without the barrier of complex meta-data provision prior to community formation. This requires us to re-interpret forms of contextual reasoning, ontology mapping, query routing and visualisation for this new arena. We ground our research in two testbed areas: bioinformatics and emergency response. 

 

For more information about the project, please read our OpenKnowledge proposal extract and Manifesto. A project map depicts the relationships among subprojects and researchers. 

 

Interaction Model at a Glance

The diagram below shows an interaction between three peers: p1, p2 and p3. Each peer knows different things:

 

 

The interaction we require is depicted by the numbered messages in the diagram:

 

Basic example

Let us first define an interaction model that does exactly the message passing defined above. There are two roles that agents take in this model: the role of a requester (which asks for information) and the role of an informer (which supplies information). We define a LCC clause for each role as shown below. For the requester (p1) we have simply given the sequence of four messages corresponding to those above. Then we have defined a clause for the role of informer that defines the behaviour expected of p2 and p3.

 


a(requester, A) ::
   ask(X1) => a(informer, p2) <-- query_from(X1, p2) then
   tell(X1) <= a(informer, p2) then
   ask(X2) => a(informer, p3) <-- query_from(X2, p3) then
   tell(X2) <= a(informer, p3)

a(informer, B) ::
   ask(X) <= a(requester, B) then
   tell(X) => a(requester, B) <-- know(X)

 

The LCC definition above covers the example but suppose we want a more general type of requester that takes a list, L, of the form [q(Query,Peer),..,], where Query is the query we want to make and Peer is an identifier for the peer to which we want to send the query. We want the requester to send an ask(Query) message to the appropriate Peer for each query and receive a tell(Query) reply each time. A standard way to do this is by giving L as a parameter to the requester role (so it becomes requester(L)) and making the definition of this role recursive, taking the first element of L and then applying the same definition to the remainder of the list, Lr, as shown below.

 


a(requester(L), A) ::
    (  ask(Query) => a(informer, Peer) <-- L = [q(Query,Peer) | Lr] then
       tell(Query) <= a(informer, Peer) then
       a(requester(Lr), A)  )
    or
null <-- L = [] a(informer, B) :: ask(X) <= a(requester(_), B) then tell(X) => a(requester(_), B) <-- know(X)

 

Project Partners

The core of OpenKnowledge (funded by the European Union) involves researchers in Amsterdam, Barcelona, Edinburgh, Open University, Southampton and Trento. Its coordinator is Dave Robertson. 

 

 

Contact

We welcome your enquiries and feedback. You may email general questions to our coordinator Dave Robertson (dr at inf.ed.ac.uk) and software issues of the OpenKnowledge Kernel to D. Guidi (d.guidi at open.ac.uk).