Hashing, and Ted's concerns about wastefulness

Graham Klyne <[email protected]>
Newsgroups gmane.ietf.medfree
Message-ID <[email protected]>
At 22:52 29/01/99 PST, Larry Masinter wrote:
>> The lookup problem bothers me, because I believe there will be
>> relatively few cases where the hash as given would be instantly
>> recognizable (since it includes both features and feature values).
>
>   (SONY_VGA_MODELXXX) :-
>      (| (& (pix-x=640)
>            (pix-y=280)
>            (color=256))
>         (& (pix-x=1028)
>            (pix-y=1028)
>            (color=256)))
>is equivalent in this regard to
>   (fh=1aXb124AsDfg) :-
>       (| (& (pix-x=640) ...)
>
>i.e., there's a value that expands to other values, that you
>either know or have to look up. The advantage of "fh" is that
>if Sony's VGA display's features are the same as NEC's, you
>don't need to keep both in the table.

If I understand your approach correctly, you want to have a way of
expressing arbitrary aggregations that does not rely on some registration
mechanism to define its meaning, and also does not say anything about how
unknown aggregates are resolved.

I'd like to make a small counter-proposal to the that incorporates an idea
from Ted, overcomes some issues of compatibility with current syntax, and
still (I believe) achieves your goal:

#   (h.1aXb124AsDfg) :-
#       (| (& (pix-x=640) ...)

(What I have done is replaced the 'fh' tag with 'h.<hash>' as an auxiliary
predicate tag.)

Another approach that also permits some indication of retrieval mechanism:

#   (h.<URI>="<hash>")

within a capability expression (this conforms to current syntax rules),
where <hash> is calculated over the body of a notional auxiliary predicate:

#   (h.<URI>) :- 
#       (| (& (pix-x=640) ...)


[...]
>> So the question for the "fh" possibility is: how and when do we allow
>> for the hash to be disaggregated?
>
>Yes, but it's not so different for any of the other proposals
>for aggregated feature.

I agree.

A key advantage I see to the hash approach is that one has a way to
validate whatever disaggregated value one may have to hand without resort
to externally held reference information.


>> I suppose we can create a feature that is, in fact, a request for fh
>> to be disaggregated.  
>
>I think that's mixing descriptive information and protocol in
>an unfortunate way. I think disaggregation is likely to be
>protocol dependent, even though the semantics of "fh" is
>protocol independent.

Again, I agree.

If two expressions contain the same sub-expression:

#    (h.<hash>
or
#    (h.<URI>="<hash>")

then they are known to match at that point without disaggregation.  OTOH,
if they have different hash values then disaggregation is needed to
determine whether or not they truly match.  No additional "feature" is
required to trigger the disaggregation mechanism;  simply some kind of
"lazy evaluation" component in the feature set matching process.

Further, using my second proposal, two different tags:

#    (h.<URI1>="<hash>")
#    (h.<URI2>="<hash>")

can be assumed to match if the hash values are the same (e.g. for rebadged
versions of the same mobile phone).

An attractive property of this approach is that it can be used with the
current specification (with registration of the 'h.' facet), in many cases
will yield the correct result, and will never yield a false feature set
match.  Agents with additional knowledge can reconcile the apparently
different feature tags (this is also behaviour consistent with the current
specification.)

#g

------------
Graham Klyne
([email protected])
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.