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
>>>> & 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]>
>>>>> > 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