Amendment to KIF's unary-relation and binary-relation

Message-id: <>
Date: Wed, 25 Aug 1993 13:39:27 -0800
To: interlingua@ISI.EDU
From: macgregor@ISI.EDU
Subject: Amendment to KIF's unary-relation and binary-relation

Apparently, I failed for some time to read some of the fine print in
the KIF document, and I've only just discovered a new problem with it. The
definitions of unary-relation and binary-relation include a "non-empty"
clause, e.g., it is supposed to be impossible to define a non-empty
unary-relation in KIF. This restriction needs to be remedied.

The principal problem with the current document is that
"unary-relation" and "binary-relation" as currently defined have
unreasonably low applicability. Suppose I have a knowledge base
consisting of the single statement

   (defrelation A (?a) :=> (Thing ?a))

(I am assuming that a top-level concept "Thing" is built-in to
the system, but thats not really relevant).  Is "A" a unary-relation?
Well, we can't tell, since we have no axioms available asserting
that A is not empty.  That means among other things that we cannot
confidently translate the definition of "A" into a Loom "defconcept" 
or to some other frame system's equivalent of "defclass".

The current definition also means that we would be incautious if we
were to incorporate "unary-relation" into a sugar-coated construct like
Ontolingua's "define-class", i.e., the statement

   (define-class A (?a) :def (Thing ?a))

ought not to presume that instances that satisfy "A" necessarily
exist (currently Ontolingua does presuppose the existence of 
members of its classes -- this is unfortunate).

I propose that unary-relation and binary-relation be redefined in KIF
as partial relations that DO NOT imply that their arguments are
non-empty, i.e., define them as follows:

   (defrelation unary-relation (?r)
       :=> (forall (?l) (=> (member ?l ?r) (single ?l))))
   (defrelation binary-relation (?r)
       :=> (forall (?l) (=> (member ?l ?r) (double ?l))))

With this redefinition, it is still the case that the bare definition
   (defrelation A (?a) :=> (Thing ?a))
cannot be interpreted as a definition of a concept A, but we can
assume that an accompanying axiom  (unary-relation A) would
be generated by translators that translate concepts into KIF.

Next, I would prefer that the property of being a unary- or binary-relation
be considered analytic.  However, this may not matter to KIF.  Using
the amended definition for "unary-relation" I can correctly translate
the Loom statement
   (defconcept A :is-primitive Thing)
into KIF as
   (defrelation A (?a) :=> (Thing ?a))
   (defining-axiom 'A '(unary-relation A))

This raises a question about defining axioms.  If a constant is
bound to multiple defining axioms, is that equivalent to stating
a single defining axiom that and's together all of the others?  For
example, are the two KIF statements just above equivalent to 
   (defining-axiom 'A
     '(and (=> (member ?t A) (= (length ?t) 1))
           (=> (A ?x) (Thing ?x))
           (unary-relation A)))
Cheers, Bob

Robert M. MacGregor                           
USC/ISI, 4676 Admiralty Way, Marina del Rey, CA 90292      (310) 822-1511