Yes, you're right.  I tried this way and it works and searches the
directory I wanted... the return just shows my search, and 10 uri's and 10
docs (for testing confirmation).

Thanks for the tips on the cleaner way to write that out - it was
perplexing because the query worked just fine on one set but not the other.



let $element-name := fn:QName ('http://www.incisivemedia.com/summary',
'PUBLICATION-DATE')
let $attribute-name := fn:QName ('', 'datetime')

let $search:=(
  cts:and-query((
   cts:directory-query("/data-sources/sbm/","infinity"),

   cts:element-attribute-range-query($element-name, $attribute-name,
'>', fn:current-dateTime () - xs:dayTimeDuration('P10D'))

  ))
)

return ($search, cts:uris("", "any", $search)[1 to 10], fn:doc(
cts:uris("", "any", $search)[1 to 10] ))

On Tue, Sep 26, 2017 at 9:09 AM, Christopher Hamlin <[email protected]>
wrote:

> I'd do it bit by bit.
>
> Just change the cts:uris to cts:search:
>
> cts:search (/,
>     cts:element-attribute-range-query($element-name, $attribute-name,
> '>', fn:current-dateTime () - xs:dayTimeDuration('P10D'))
> )
>
> That still worked for me.
>
> Then add in the other stuff gradually.  When something doesn't work,
> you'll know what it is.
>
> /ch
>
> On Tue, Sep 26, 2017 at 10:30 AM, Kari Cowan <[email protected]> wrote:
> > @chris put another way - how would I test your example using a cts:search
> > rather than displaying in the return option?
> >
> > On Mon, Sep 25, 2017 at 8:45 AM, Kari Cowan <[email protected]> wrote:
> >>
> >> Chris, Gert  - Thanks - I tried your test and I see that it does return
> >> uri's from the last 10 days, so that works - but now I am having
> difficulty
> >> incorporating that to a more complex query.
> >>
> >> When I tried dropping that into my cts:search query, it didn't return
> >> anything.  Anything you can suggest to make this work, or do you see
> >> anything glaringly wrong?
> >>
> >> let $element-name := fn:QName ('http://www.incisivemedia.com/summary',
> >> 'PUBLICATION-DATE')
> >> let $attribute-name := fn:QName ('', 'datetime')
> >>
> >>
> >> let $search:=(
> >>  cts:search(fn:collection(),
> >>    cts:and-query((
> >>     cts:directory-query("/data-sources/sbm/","infinity"),
> >>     cts:element-attribute-range-query($element-name, $attribute-name,
> >> '>', fn:current-dateTime () - xs:dayTimeDuration('P10D'))
> >>     ))
> >>   )
> >> )
> >>
> >> for $docs in $search/ir:ARTICLE
> >> order by xs:dateTime($docs//sum:PUBLICATION-DATE/@datetime) descending
> >> return $docs
> >>
> >>
> >>
> >> On Sat, Sep 23, 2017 at 12:32 PM, Geert Josten
> >> <[email protected]> wrote:
> >>>
> >>> I think the issue is in how you write the reference to the element you
> >>> want to query. You write
> >>> cts:element-attribute-range-query(xs:QName("PUBLICATION-DATE”), but
> like
> >>> Chris is suggesting, you better write xs:QName("PUBLICATION-DATE”) as
> >>> fn:QName(“http://www.incisivemedia.com/summary”, “PUBLICATION-DATE”),
> or you
> >>> should declare a namespace prefix in your code, and use that in
> xs:QName:
> >>>
> >>> declare namespace sum = “http://www.incisivemedia.com/summary”;
> >>>
> >>> xs:QName(“sum:PUBLICATION-DATE")
> >>>
> >>> Cheers
> >>>
> >>> From: <[email protected]> on behalf of Kari
> Cowan
> >>> <[email protected]>
> >>> Reply-To: MarkLogic Developer Discussion
> >>> <[email protected]>
> >>> Date: Friday, September 22, 2017 at 11:02 PM
> >>> To: MarkLogic Developer Discussion <[email protected]>
> >>> Subject: Re: [MarkLogic Dev General] Querying DateTime values
> >>>
> >>> Let me get your opinion on this.  I confirmed that there IS a dateTime
> >>> element-attribute range index.
> >>>
> >>> Where the query works correctly, the data is written like this
> >>> representation:
> >>>
> >>> <DOC-SUMMARY xmlns="http://www.incisivemedia.com/summary";>
> >>> <PUBLICATION-DATE date="2017-08-09"
> >>> datetime="2017-08-09T15:14:00-04:00">2017-08-09
> >>> 15:14:00:000</PUBLICATION-DATE>
> >>> </DOC-SUMMARY>
> >>>
> >>> Where it fails, the data is written this way - note the namespace
> >>> precedes the declaration - which seems wrong to me.
> >>>
> >>> If it's right or wrong, can you advise if that needs to be updated or
> if
> >>> there's a way to run the query to check a date range, returning docs
> within
> >>> say the last 10 days only?
> >>>
> >>> <summary:DOC-SUMMARY
> >>> xmlns:summary="http://www.incisivemedia.com/summary";>
> >>> <summary:PUBLICATION-DATE date="2017-09-21"
> >>> datetime="2017-09-21T17:47:00Z">2017-09-21T17:47:00Z</
> summary:PUBLICATION-DATE>
> >>> </summary:DOC-SUMMARY>
> >>>
> >>> On Fri, Sep 22, 2017 at 1:05 PM, Kari Cowan <[email protected]> wrote:
> >>>>
> >>>> Ahh, once i fixed the misplaced paren, I can get back a proper error
> >>>> that tells me something more useful -- No dateTime element-attribute
> range
> >>>> index for fn:QName("", "PUBLICATION-DATE") fn:QName("", "datetime")
> >>>>
> >>>> Thanks! - I think I know where to go from here :)
> >>>>
> >>>> XDMP-ELEMATTRRIDXNOTFOUND: cts:search(fn:collection(),
> >>>> cts:and-query((cts:directory-query("/data-sources/sbm/", "infinity"),
> >>>> cts:or-query((cts:element-query(xs:QName("sum:PUBLICATION-NAME"),
> >>>> cts:word-query("BenefitsPro.com", ("lang=en"), 1), ()),
> >>>> cts:element-query(xs:QName("sum:PUBLICATION-NAME"),
> >>>> cts:word-query("CUTimes", ("lang=en"), 1), ()),
> >>>> cts:element-query(xs:QName("sum:PUBLICATION-NAME"),
> cts:word-query("Treasury
> >>>> &amp; Risk", ("lang=en"), 1), ()), ...)),
> >>>> cts:element-attribute-range-query(fn:QName("", "PUBLICATION-DATE"),
> >>>> fn:QName("", "datetime"), ">=", xs:dateTime("2017-08-23T23:59:00Z"),
> (),
> >>>> 1)), ())) -- No dateTime element-attribute range index for
> fn:QName("",
> >>>> "PUBLICATION-DATE") fn:QName("", "datetime")
> >>>>
> >>>> On Fri, Sep 22, 2017 at 8:15 AM, Christopher Hamlin <
> [email protected]>
> >>>> wrote:
> >>>>>
> >>>>> I'm not sure what is the real problem.
> >>>>>
> >>>>> xs:dateTime ('2003-08-01T08:00:00Z') > xs:dateTime (fn:current-date()
> >>>>> - xs:dayTimeDuration("P30D"))
> >>>>> ,
> >>>>> xs:dateTime ('2017-09-28T00:00:00-04:00') > xs:dateTime
> >>>>> (fn:current-date() - xs:dayTimeDuration("P30D"))
> >>>>>
> >>>>> return false and true, no failure.  What type is the index, and what
> >>>>> is the failure?
> >>>>>
> >>>>> On Fri, Sep 22, 2017 at 11:10 AM, Geert Josten
> >>>>> <[email protected]> wrote:
> >>>>> > Hi Kari,
> >>>>> >
> >>>>> > Looks like you misplaced one of the parentheses. Make sure to wrap
> >>>>> > the
> >>>>> > string "2017-09-22T08:00:00Z” in xs:dateTime(..) before you try to
> >>>>> > substract
> >>>>> > the duration. In provided query you have the xs dateTime cast
> >>>>> > wrapping both
> >>>>> > current-date and the duration.
> >>>>> >
> >>>>> > Cheers,
> >>>>> > Geert
> >>>>> >
> >>>>> > From: <[email protected]> on behalf of Kari
> >>>>> > Cowan
> >>>>> > <[email protected]>
> >>>>> > Reply-To: MarkLogic Developer Discussion
> >>>>> > <[email protected]>
> >>>>> > Date: Friday, September 22, 2017 at 4:51 PM
> >>>>> > To: MarkLogic Developer Discussion <[email protected].
> com>
> >>>>> > Subject: [MarkLogic Dev General] Querying DateTime values
> >>>>> >
> >>>>> > I need some expert tips on this bug.
> >>>>> >
> >>>>> >
> >>>>> > cts:element-attribute-range-query(xs:QName("PUBLICATION-
> DATE"),xs:QName("datetime"),
> >>>>> > ">=", xs:dateTime(fn:current-date() - xs:dayTimeDuration("P30D")))
> >>>>> >
> >>>>> > The above query works fine when the publication-date is in this
> >>>>> > format:
> >>>>> > <PUBLICATION-DATE date="2017-09-28"
> >>>>> > datetime="2017-09-28T00:00:00-04:00">2017-09-28
> >>>>> > 00:00:00:000</PUBLICATION-DATE>
> >>>>> >
> >>>>> > But it fails when
> >>>>> > <PUBLICATION-DATE date="2003-08-01"
> >>>>> >
> >>>>> > datetime="2003-08-01T08:00:00Z">2003-08-01T08:00:00Z</
> summary:PUBLICATION-DATE>
> >>>>> >
> >>>>> > The datetime format is different, but if I manipulate the
> >>>>> > current-date to
> >>>>> > match that format, the query will fail with this message:
> >>>>> >
> >>>>> > [1.0-ml] XDMP-EXPR: (err:XPTY0004) "2017-09-22T08:00:00Z" -
> >>>>> > xs:dayTimeDuration("P30D") -- Invalid expression
> >>>>> >
> >>>>> > How would I write the query to properly compare the dates?
> >>>>> >
> >>>>> > The goal above was to return content from the last 30 days.
> >>>>> >
> >>>>> >
> >>>>> >
> >>>>> >
> >>>>> >
> >>>>> > _______________________________________________
> >>>>> > General mailing list
> >>>>> > [email protected]
> >>>>> > Manage your subscription at:
> >>>>> > http://developer.marklogic.com/mailman/listinfo/general
> >>>>> >
> >>>>> _______________________________________________
> >>>>> General mailing list
> >>>>> [email protected]
> >>>>> Manage your subscription at:
> >>>>> http://developer.marklogic.com/mailman/listinfo/general
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>>
> >>>> Kari Cowan :: Web Developer :: ALM Media
> >>>>
> >>>> 1035 Market St. Suite 550, San Francisco, CA 94103
> >>>>
> >>>> iPhone/Text/FaceTime: +1 4157 444 762
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>>
> >>> Kari Cowan :: Web Developer :: ALM Media
> >>>
> >>> 1035 Market St. Suite 550, San Francisco, CA 94103
> >>>
> >>> iPhone/Text/FaceTime: +1 4157 444 762
> >>>
> >>>
> >>> _______________________________________________
> >>> General mailing list
> >>> [email protected]
> >>> Manage your subscription at:
> >>> http://developer.marklogic.com/mailman/listinfo/general
> >>>
> >>
> >>
> >>
> >> --
> >>
> >> Kari Cowan :: Web Developer :: ALM Media
> >>
> >> 1035 Market St. Suite 550, San Francisco, CA 94103
> >>
> >> iPhone/Text/FaceTime: +1 4157 444 762
> >
> >
> >
> >
> > --
> >
> > Kari Cowan :: Web Developer :: ALM Media
> >
> > 1035 Market St. Suite 550, San Francisco, CA 94103
> >
> > iPhone/Text/FaceTime: +1 4157 444 762
> >
> >
> > _______________________________________________
> > General mailing list
> > [email protected]
> > Manage your subscription at:
> > http://developer.marklogic.com/mailman/listinfo/general
> >
> _______________________________________________
> General mailing list
> [email protected]
> Manage your subscription at:
> http://developer.marklogic.com/mailman/listinfo/general
>



-- 

Kari Cowan :: Web Developer :: ALM Media

1035 Market St. Suite 550, San Francisco, CA 94103

iPhone/Text/FaceTime: +1 4157 444 762
_______________________________________________
General mailing list
[email protected]
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to