Re: Meaning

Although you and me have in mind the same domain 
(i.e., web services), it seems that we are talking 
about two different languages and different semantics. 

Your point of view:  
From: Drew McDermott (drew.mcdermott@yale.edu)
Date: Wed, May 21 2003  
"... 
So what is to be done?  The answer is that we formalize 
concepts like ownership as thoroughly as it is possible to do.  
We provide ontologies in which "ownership," "payment," 
"delivery," "promissory notes," and such are all related 
together in various ways.  These relationships, expressed 
as axioms, _constrain_ the meanings of the symbols being 
defined, but they can never fully specify them.  So what?
The important point is that a vocabulary provide the 
necessary lubrication for interagent discourse.  
If everyone uses it, and everyone agrees on the meanings 
of the terms, or agrees 99% of the time, then web services 
will be useful and roboust.  On occasions when uncertainty 
creeps in, the committee in charge of the ontology
gets together and edits or adds axioms to reflect a 
consensus. 
 ... "
 
I agree that it is hopeless to construct the 
explicit meaning of natural language however 
some approximations may be interesting and important. 
The language must be open, i.e., it has to evolve. 
Moreover, in my opinion, it should be of 
distributive use, i.e., anyone can introduce new 
concepts to the language. However, there is a problem 
with implementing such distributive use, if there are 
"the committees in charge of ontology" that decide how  
and what is added to "the ontology". Even if we agree 
on "the committees" there is another problem how to 
scale this solution. If the ontology is closed and 
its consistency is verified, then it seems it is OK 
even if the ontology is large. What if an ontology is 
evolving and expanding so that it contains thousands, 
... or millions of axioms? How to maintain such ontology? 
Anyway, there was a DARPA project dealing with such kind 
of problems; I wonder what the results are.  

Now, let me explain my point of view. 
Your solution conveys the concepts from natural language 
(used in human world) immediately into a language of the 
emerging world of web services (ws-world for short). 
I propose to separate the ws-world from the human world, 
and construct a language only for ws-world along with 
precise semantics. It is clear that this language must 
relate to the human world but this will be discussed 
later on. 

The ws-world (called also cyberspace) consists of 
networked (TCP/IP) applications that exchange electronic 
data and process them; that's all what can happen there. 
Humans can influence the ws-world only by user interfaces 
(e.g., browsers, ssh, email, etc. ). Usually web services 
as well as user interfaces are placed in the border between 
these two worlds; they have interfaces to the human world 
as well as to the ws-world. It may look like science 
fiction, however I am interested merely in communication 
language for the ws-world. 

Requests as well as data are sent to the ws-world 
via user interfaces. A web service processes input data, 
and then sends output data to another service; this is 
what happens on the side of ws-world. On the other side 
the service may influence the real world as the result of 
processing this input data. 

The question is where the language is needed, used, and 
what its semantics is? 
It is clear that the language is needed to express 
requests and the types of operation the services perform. 
There is straightforward interrelation between requests 
and operation types. i.e., a request is to be realized by 
(a composition of) services. Hence, there must be a 
semantic equivalence of a request and of the types of 
operations that may realize this request. However, 
this semantics is always in the human world, i.e., 
on the side of users and the side of service providers; 
they must know what they want to realize, and what 
their services perform. 

The key point is to determine what the language must 
describe, i.e., what is going on in the ws-world. 
It seems that nothing but data of some types are 
processed by operations implemented by services into 
some other data. How to describe this in the language? 
The description should abstract from specific data 
and specific operations. In order to do so, names 
for data types and names for operation types are needed.  
The operation type is intended to have the generic 
meaning, i.e., to be represented by pair of formulas: 
precondition and effect (postcondition). 
These conditions should describe operation interface 
as well as what this operation does perform; a generic
way to do so is by using names that denote abstract 
functions as in mathematics. 

We can introduce names for new types and names 
for new functions to our language, so it would be nice 
to introducing also names for new primitive relations. 
The critical point of our approach is that this is not 
necessary. Relations describe some (local) situations 
in the ws-world. What happens in ws-world is, 
roughly speaking, only sending and processing data, so  
this can be described in terms of data types and 
operation types. Hence, the relations can also be 
defined in terms of data types and functions. 
A relation can be defined as a class of situations 
that take place if data of some types were processed 
by (composition of) functions, and then the result 
was sent to some place. A small number of primitive 
relations is needed to express equality, the fact that 
a data is in some place, etc..  

The resulting language is extremely simple; it is a 
version of the language of first order logic with types, 
and without quantifiers. It seems that explicit negation 
is not needed. The important requirement is that all 
names must be URIs. The language is open; it means that 
names for new primitive data types and functions can be 
introduced to the language. New complex functions and 
relations can be defined in the very similar way as it is 
done in mathematics, i.e., using definiens, definiendum, etc.. 

Since the axioms were not even mentioned, the question is 
about the meaning of the language. How do the names get 
the meaning in this language? The answer is extremely 
simple. A name gets its meaning by pointing into the 
place where it was originally defined either as primitive 
concept or as a complex concept. This very name contains the 
pointer to this original place. If it denotes a complex concept, 
then its meaning is defined in the definiendum. If it denotes a 
primitive concept, then the definition consists only of 
definiens. Since the name of this primitive concept 
is unique and points to the very place where it was originally 
defined (only by definiens), the meaning of this concept is fixed. 
Anyone who uses this name refers to this very place where 
it was originally defined. Informal meaning of this concept 
may be described in a natural language also in this place.  
You may say that it is a trick, nothing new, and no  
(machine readable) semantics at all. However, it works. 
The critical point is to grasp who can create formulas and 
who (rather what) processes them. 
In fact, the semantics, or language understanding is always on 
the side of humans, i.e., users and service providers. 
Only they can create formulas, so that they must understand 
what the formulas mean. Inside the ws-world the formulas are only 
processed in the very similar way as data are. 

It seems that the idea is extremely simple. However, it took 
three years for me to understand that it is so simple. 
More details at http://www.ipipan.waw.pl/mas/enTish/
 
-- Stanislaw Ambroszkiewicz

Received on Saturday, 21 June 2003 14:45:13 UTC