[Bug 8407] New: [XQFTTS] MildNot test cases

http://www.w3.org/Bugs/Public/show_bug.cgi?id=8407

           Summary: [XQFTTS] MildNot test cases
           Product: XPath / XQuery / XSLT
           Version: Candidate Recommendation
          Platform: PC
        OS/Version: Windows NT
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Full Text 1.0
        AssignedTo: jim.melton@acm.org
        ReportedBy: peter.fischer@inf.ethz.ch
         QAContact: public-qt-comments@w3.org


The following cases might be errors in the test suite, related to mildNot:

- FTMildNot-q2/FTMildNot-unconstrained-q2:
$input-context/books/book[para contains text "usability studies" not in
"usability"]/title

(against ftbookexample)

The expected result is "Ninja Coder", but I think that the correct result
should be empty. "usability studies" is indeed found in the "ninja coder" book,
but one of the matches of "usability" is found inside "usability studies",
therefore fulfilling the FTMildNot requirement for removing this match from the
result.
(I reported this problem in a private mail to Jim Melton before, the answer
might have been lost)

- FTMildNot-bad3: The intent of the query seems to generate a StringExclude by
using a FTTimes, triggering an error in FTMildNot. 

If I understand the semantics of FTTimes and FTUnaryNot correctly, in this
specific case no StringExclude will be generated:
- The FTTimes is applied on the Matches for "ninja", within the search context
of $input-context/books/book/para there is only a single Match with a single
StringInclude (in the "para" element in the "Ninja Coder" book)

- According to the FTTimes semantics (4.2.6.10 FTTimes),
fts:FormRange((M(S("Ninja"))), 1, 1, $allMatches/@stokenNum) is invoked,

- In FormRange, fts:FormCombinationsAtLeast() is invoked for $times values of 1
and 2, the result of the latter is then negated using FTUnaryNot

- The invocation (denoted as $am1) with $times eq 1 yields M(S("Ninja"))
- The invocation (denoted as $am2) with $times eq 2 yields (), since the number
of elements in the match sequence is smaller than $times (and the for clause in
FormCombinationsAtLeast will therefore not produce anything)

- FTUnaryNot is applied on $am2 (with the an () value), resulting in an
AllMatch containing a match without any StringExcludes or StringIncludes (see 
UnaryNotHelper: if (fn:empty($matches)) then <fts:match/>


-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Received on Tuesday, 1 December 2009 08:51:31 UTC