OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

search-ws message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: RE: [search-ws] proximity exclusion flag

Prox has always been a modifier on a Boolean in my systems.  It is simply AND with extra qualifiers.  So, “fish adj chips” is a subset of “fish and chips”.  I’d represent it as something like “fish and/proxUnit=word,distance=1 chips”.  Your problem case becomes “fish and/proxUnit=word,distance!=1 chip”.


It is absolutely NOT the case that “fish not/prox chips” is a subset of “fish NOT chips”.  So, the not/prox should NOT be a modifier on the NOT Boolean.





From: Ray Denenberg, Library of Congress [mailto:rden@loc.gov]
Sent: Monday, September 08, 2008 5:14 PM
To: search-ws@lists.oasis-open.org
Subject: [search-ws] proximity exclusion flag


I've run across a problem with our proximity "proposal" in the message I posted last week, specifically:

-- Adding a boolean modifier 'prox' which acts the same as the current
boolean, however can be attached to either AND (the current style of
proximity) or  NOT for negative proximity.
* "fish and" not/prox chips
   ("fish and" followed by anything other than chips)

The problem is, I don't see how you can add proximity modifiers: if you put a slash after prox above, how do you know whether the modifier following the slash is a boolean modifier (modifying NOT) or a "modifier modifier" (modifying PROX). 

('m trying to come up with an example for the PPT I'm preparing, for the OGC meeting, something along the lines of "find cities with name 'washington' not within 50 miles of a city with name 'baltimore' ".)

Back up and recall (nearly 20 years ago) that we had this conversation for Z39.50 as reflected in:


-------------------------------------------------------- The Proximity Test
The proximity test, ProxTest, includes a Distance, Relation, Unit, and two boolean flags: Ordered and Exclusion.

  • Distance: Difference between the ordinal positional values of the two operands. (e.g., if unit is 'paragraph,' distance of zero means "same paragraph".) Distance is never negative.
  • Relation: LessThan, LessThanOrEqual, Equal, GreaterThanOrEqual, GreaterThan, or NotEqual.
  • Unit: Character, Word, Sentence, Paragraph, Section, Chapter, Document, Element, Subelement, ElementType, Byte, or a privately defined unit.
  • Ordered flag: if set, the test is for "right" proximity only (the left ordinal must not exceed the right ordinal and Distance is compared with the difference between the right and left ordinals); otherwise, the test is for "right" or "left" proximity. (Distance is compared with the absolute value of the difference between the left and right ordinals.)
  • Exclusion flag: if set, "not" is to be applied to the operation (for example if the test with Exclusion flag 'off' is "'cat' within 5 words of 'hat'," then the same test with Exclusion flag 'on' is "'cat' not within 5 words of 'hat'").



In other words, in Z39.50 we have an exclusion flag for this purpose, which we don't have in CQL.   (Thanks to Ralph, who first articulated the distinction. I still remember, after all these years.  Or was it Bob Waldstein.  Oh well. Many Mark Hinnebusch.)  So I think that rather than changing proximity from a boolean to a boolean modifier, maybe we should just add this "exclusion" flag.


Anyone agree with me on this?






[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]