Re: Declare before use constraint in ontology editor.

James Rice <rice@HPP.Stanford.EDU>
Date: Wed, 15 Mar 1995 17:02:04 -0800 (PST)
From: James Rice <rice@HPP.Stanford.EDU>
Sender: rice@HPP.Stanford.EDU
Reply-To: rice@HPP.Stanford.EDU
Subject: Re: Declare before use constraint in ontology editor.
To: ontolingua@HPP.Stanford.EDU
cc: Robert MacGregor <macgregor@ISI.EDU>
In-reply-to: Robert MacGregor's message of Wed, 15 Mar 1995 16:52:52 -0800: <ab8d23c11a0210049b4e@[]>
Message-id: <XLView.795316776.3834.rice@hpp-ss10-1>
MIME-Version: 1.0
>>I agree with possibly everything Jim Rice said in his response,

Hey, perhaps I should stop just here.

>>modulo, I'm not sure of what kinds of forward references are
>>allowed by Ontolingua, and which are not.

I should clarify this:

Ontolingua (5.0) the language allows you to make as many forward
references as you like, and as a consequence it does very little
in the way of constraint checking.  The Ontology Editor as an
interface layer on top of Ontolingua will not allow you to enter
the name of a Class/Instance/Function/Relation/Slot/Axiom in
any context that is expecting a Class/... without that thing
being already defined.

Thus, if you are editing the subclass-of slot of a definition,
the only values that you can provide are already extant classes.
The only place where input is not constrained like this is in the
typein box for the name of a Class/... on the creation page
(obvious, when you think about it).

A consequence of this is that, if you import an ontology in
Ontolingua source code form (using the Import Definitions
command on the LIbrary menu), you can end up with undefined
terms.  If, for example, you ended up with (subclass-of foo bar),
and bar was undefined then bar would appear as a non-blue term
as a value of the subclass-of slot of foo.  If you edit the slot
and change bar to bar2 (let's say that bar2 actually exists), then
the word bar2 will be blue.  If you click on the UNDO button you
will get an error because the system will not let you do an undo
(or redo) that will result in a constaint violation.  We think
that this is a feature, not a bug.

The bottom line is that you are always at liberty to hack up
your ontology in emacs and import it and use the Analyse command
(on the Ontology menu) to try to find the bugs for you, but
our goal in writing the editor in the first place was very much
to try to produce a tool that would help you avoid the sorts of
errors that end up in your ontologies when you develop it
monolithically.  You rally can't have a useful user interface
that can do useful things like context-specific Find on slot
values if the system cannot make some non-trivial inferences.
This is only going to fly if the underlying representation is
reasonably coherent.  (Loom does a whole bunch more inferences
than we do, but the same principle applies, I think)