From: Dan Connolly ([email protected])
Date: 02/08/01
pat hayes wrote:
> PPS. Any objections to putting this discussion onto rdf-logic? It
> seems to belong there.
no, no objection.
[...]
> >Another way to state this principle is that
> >the knowledge contained in two documents, X and Y,
> >is always the conjunction of the knowledge in X with
> >the knowledge in Y. To allow X to change what Y says
> >in some non-monotonic way doesn't seem scalable/workable
> >to me.
>
> two points:
>
> (1) you need to get clear about what counts as a document and what
> you take X and Y to be *about*. (content language or meta-language,
> see above.) If 'documents' are any amount of information about
> anything, then this is an impossible requirement. (Suppose I want to
> say 'either X or Y'. If I conjoin X or Y then I've said too much; if
> I don't include them then nobody is going to know what I'm talking
> about.)
>
> (2) Jim Hendler is right. If the meaning of Y depends in part on the
> meaning of X, that doesnt automatically produce nonmonotonicity. It
> just means that one has to use X to figure out the meaning of Y. The
> monotonicity would be produced, maybe, if one insisted on making
> assumptions about the meaning of Y without knowing X, which might
> later turn out to be wrong. But sometimes you can wait until you do
> know, or report back to something else that you can't make progress
> until you are told, or whatever. I agree these complexities make for
> boring reading, but I don't think that there is any way out, in
> general: we are going to have to deal with things like this whether
> we want to or not, ultimately because INFORMATION is like this. It
> just is, however we encode it. Life is not a monotonic conjunction of
> cherries.
I am not convinced; I'm not even quite sure we're talking
about the same thing. I'm not talking about any deep
sense of what the formulas mean; I'm just talking about
knowing what formula you're looking at without having
to look anywhere else.
Let me try a few mundane examples
from programming langauges to illustrate...
Consider ex1.c:
#include "otherThingy.h"
#include <stdio.h>
main(int argc; char **argv)
{
if(OTHER_THINGY_CONSTANT < 10){
printf("x");
}else{
printf("y");
}
}
The meaning of ex1.c -- what program it contains, or how
to compile it to ex1.o -- depends on otherThingy.h. It's
either a program that prints "x" or a program that prints "y", but
we're not sure which without looking in otherThingy.h.
On the other hand, consider ex2.c:
int printf(const char*, ...);
int otherThing();
main(int argc)
{
if(otherThing() < 10){
printf("a");
}else{
printf("b");
}
}
we can tell what this compilation unit means; we can
compile it to ex2.o. It's a program that calls the otherThing()
function, and depending on the result, prints "a" or "b".
I'm happy to have one RDF/DAML+OIL document interact with
another in ex2 style, but I'm not happy for the syntactic
meaning of an RDF/DAML+OIL document to be dependent on another
in the way that ex1.c depends on otherThingy.h.
I don't see how you can claim that there is something fundamental
about information that forces our language to include
garbage like the C preprocessor. Surely we can design our
language so that the formulas contained in each document
are syntactically evident, no?
KIF has this property, after all. You either write
(size x "10")
or
(size x 10)
and there's nothing that can be written in some other
file (or some other part of this file, for that matter)
that will change the formula that a given piece
of KIF represents.
CycL is an example of making the choice the
other way: the syntax of formulas depends on context;
this
(both (tall Fred) (green TheCar))
might be a two-place predicate applied to two
function terms, or a new logical connective
applied to two predicates, depending on whether
(isa both Connective) is true when it's parsed.
cf http://www.cyc.com/cycl.html#logical_connectives
A related issue came up in the design of
XML namespaces. It might seem more convenient
if you could just open a bunch of namespaces
and use names from any of them ala:
<aDoc xmlnss="http://example/fruits
http://example/vegetables
http://example/minerals">
<apple/>
<tomatoe/>
<sandstone/>
</aDoc>
but that's no good because it's not syntactically
evident wither tomatoe is a fruit or a vegetable
(or... if you're a dumb computer: a mineral).
This was part of a whole requirements document
about extensible languages:
Lack of ambiguity
Some programming languages allow one to introduce
identifiers from new name spaces in such a way that
it is not possible to know which namespace a local identifier
belongs to without accessing both the module interface
specifications and checking which one has with the highest
priority, or most recently in the document, redefined a given
local identifier.
This may have some uses in a programming language such
as Java[Java], but it has a serious flaw in that when one
module changes (without the knowledge of the designers of the
other module), it can unwittingly redefine a local identifier
used by the second module, completely changing the meaning of
a previously written document. Clearly, in the Web world in
which modules evolve but documents must have clearly defined
meanings, this is unacceptable. Contrast with Modula-3,
where all names are either lexically scoped or fully
qualified [SPwM3].
-- http://www.w3.org/TR/NOTE-webarch-extlang#Ambiguity
> > > In particular, it seems to me that your proposal has exactly the same
> > > problem. You also depend on external information on how properties should
> > > work.
> >
> >But the various bits of information accumulate in
> >the normal monotonic fashion; I don't have
> >the situation where I initially parsed it as
> >a string, but then I discover I was wrong or something
> >and I have to undo stuff.
>
> If you don't parse until you know how to parse, you won't get into
> this position. So what you really want, I think, is to know (locally
> and absolutely, ie monotonically with respect to new info. from
> elsewhere) whether or not you do have enough information to parse
> monotonically. (In many languages, for example, a parser on finding
> an identifier will look it up in a table of declared forms and if it
> isnt there, will post an error condition and refuse to compile.) But
> that's not the same as requiring that you must have, locally, enough
> information to parse. Same point applies to other things as well as
> parsing, of course.
Yes, we could go there without introducing the problem
I'm trying to avoid, but I don't see sufficient reason to.
> Pat Hayes
>
> PS. Dan, thanks for stating these design principles in black and
> white. I think that more discussions at this level about what people
> see as their over-riding aims and basic assumptions would be very
> useful. Knowing them would have been very helpful to me in
> understanding the rationale for the RDF design decisions, for
> example.
OK.
--
Dan Connolly, W3C http://www.w3.org/People/Connolly/
office: tel:+1-913-491-0501
pager: mailto:[email protected]
(put return phone number in from/subject)
This archive was generated by hypermail 2.1.4 : 04/02/02 EST