Re: what does "portable" mean with respect to ontology?

Charles Petrie <petrie@informatik.uni-kl.de>
Date:     Thu, 20 Aug 92 14:07:02 MET DST
From: Charles Petrie <petrie@informatik.uni-kl.de>
To: Tom Gruber <Gruber@sumex-aim.stanford.edu>
Cc: Shared KB working group <srkb@ISI.EDU>
Subject:  Re:  what does "portable" mean with respect to ontology?
Message-id: <9208201407.aa01703@inti.informatik.uni-kl.de>
      What Ontolingua "understands" are the concepts common to
      object-centered representation systems, such as subclass,
      instance, and slot constraints.

Tom,
 You're very clear about what Ontolinqua is and isn't. Certainly it is
not *the* solution to the very hard problem of sharing knowledge. It's
a utility for investigating the problem.  But it is possibly more.

ABSTRACT: An ontology is useless unless one defines a use for it.  And
"portability" means "reuse".  "Use" can be interpreted as services,
which can be formally defined by a set of inferences.  Ontolingua
allows some inferences to be defined and needs to allow more to be
defined. (End of abstract.)

      I agree that procedural attachment is a source of meaning in
      many of today's ontologies.

      The hypothesis underlying the KSE's strategy is that it is
      possible to share and reuse knowledge written in declarative
      form.  This hypothesis can be false; it could be that the only
      way to share knowledge bases or provide interoperation among
      knowledge-based programs is to share programs.  If that turns
      out to be the case, then we should all start writing our
      programs in the same language on the same giant ontology.

This is the central point.  I want to clarify (come to agreement on
what we mean by) the difference between "declarative form" and
"program".

I'm in the camp that believes that an ontology is meaningless without
an associated theory. (By "theory", I mean the set of valid inferences
in the traditional computer science sense, not Guha's "contexts".)
The meaning of words in a natural language lies in their *use* - not
static descriptions; similarly with objects. The question here is how
to represent object use in a formal "declarative form". Let me explain
by proposing two ways in which the bibliography example is "portable".

The first way is *concurrent use*. Let's imagine that the bibliography
is a network server called BIB.  Its Ontolingua definition determines
its services.  It's "portable" in that anyone can use it if they
understand the ontology.  So what are the services?  Well, the client
sends in BIB objects, tells BIB what the types of the objects are, and
BIB does something.  If I tell BIB that a document is, say, a
JOURNAL-ARTICLE-REFERENCE, then BIB links it properly to the journal
and can respond properly to a later request for information about such
a reference.  If I give BIB an improperly defined object, presumably
BIB objects and tells me why (e.g., a JOURNAL-ARTICLE-REFERENCE cannot
have a REF.MONTH).  So BIB properly links objects, filters out
improper information, and responds to queries.  The Ontolingua
difinition is a formal representation of the definition of these
services.

The second, and perhaps more conventional, way in which the
bibliography might be "portable" is as part of a *library* of
ontologies.  We can imagine that if I want to build a biliography, I
will run out the local clearinghouse of ontologies and grab this one
to reuse.  How will I reuse it?  In much the same way that the network
server BIB provided services. I will build a local BIB. That's how I
am going to reuse the bibliography ontology. I need to know the
inferential semantics of the ontology. Ontolingua defines these.

      This hypothesis can be false; it could be that the only
      way to share knowledge bases or provide interoperation among
      knowledge-based programs is to share programs.  If that turns
      out to be the case, then we should all start writing our
      programs in the same language on the same giant ontology.

I think I'm not disagreeing with this, but I want to clarify it to be
sure.  I am claiming that one does have to "share programs" only to
the extent that one has to define the inferences associated with the
ontology.  This can be done declaratively, even if in KIF.  Ontolingua
provides (and should provide) some inferencing semantics.  To that,
limited, extent, if we use Ontolinqua to share ontologies, we are
"writing programs in the same language".

But I am distorting your language: what I think you mean by "writing
programs in the same language" is "coding".  We will all never use the
same implementation language; just the same language for semantic
definition.  We can implement BIB with LISP or SMALLTALK as long as
the program semantics conform to the Ontolingua definition.

Of course, now I want to say that the Ontolingua language needs to be
augmented, say, by general KIF constructs that allow one to more
completely define a theory.  For example, when I sent you my
description of REDUX', it included a set of concepts and a theory, in
standard PC, about the relationships between those concepts.  The
theory says how, for example, when some object of some type is added
to the database, the values of the attributes of other objects should
be changed.  The user of a network server REDUX' need only specify the
object types, but he/she must understand the semantics of those types.
And the semantics are defined by the theory.  

Ontolingua, as I understand its current state, needs at least a place
holder for a formal theory that is more than object definitions. I
could be wrong about the current state of Ontolingua, but I would like
to come to agreement on the general subject of whether an ontology
needs an associated theory to be useful.

Charles