Hello,
The support of jsonp would be very welcomed here, since several projects on tge-adonis use or will use the basex.tge-adonis.fr/rest service...
For now, I went on with the proxy solution : http://hyperdonat.tge-adonis.fr/basex/basex.html
Cheers, Maud
On Sat, Oct 22, 2011 at 12:07 AM, < basex-talk-request@mailman.uni-konstanz.de> wrote:
Send BaseX-Talk mailing list submissions to basex-talk@mailman.uni-konstanz.de
To subscribe or unsubscribe via the World Wide Web, visit https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk or, via email, send a message with subject or body 'help' to basex-talk-request@mailman.uni-konstanz.de
You can reach the person managing the list at basex-talk-owner@mailman.uni-konstanz.de
When replying, please edit your Subject line so it is more specific than "Re: Contents of BaseX-Talk digest..."
Today's Topics:
- Re: Performance of Basex 7.0 XQuery execution (Leo W?rteler)
- Re: Problems in using BaseX REST server - IncompatibleClassChangeError javax.ws.rs.core.Response$Status does not implement the requested interface (Pushkaraj Thorat)
- Re: ajax and http server - cross-domain, jsonp or proxy? (Godmar Back)
- Re: ajax and http server - cross-domain, jsonp or proxy? (Michael Seiferle)
Message: 1 Date: Fri, 21 Oct 2011 14:12:50 +0200 From: Leo W?rteler lw@basex.org To: Constantine Hondros Constantine.Hondros@tomtom.com Cc: basex-talk basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] Performance of Basex 7.0 XQuery execution Message-ID: 4EA161C2.3060908@basex.org Content-Type: text/plain; charset=UTF-8; format=flowed
Dear Constantine,
Am 20.10.2011 09:44, schrieb Constantine Hondros:
Of course, I am really interested in more useful queries such as:
//tns:poi[not(tns:id = preceding-sibling::tns:poi/tns:id)]
this query basically compiles to two nested loops, the outer one iterating over //tns:poi and the inner one over all preceding-siblings. So it has an O(n^2) runtime.
I guess what I am asking is ... while most XPath queries I run are quick
to resolve, anything using preceding::, preceding-sibling:: or following::, following-sibling:: essentially runs too slowly to be workable - at least, on my sample dataset with about 100K sibling children of the root element.
Well, that's an extreme example, 100'000^2 is a huge number of nodes to traverse. I performed some tests with a) 10'000 sibling elements inside the root: <root> <item id="1"/> <item id="2"/> [...] <item id="10000"/> </root>
and the query //item[not(preceding-sibling::*)]
b) 10'000 nested elements: <root> <item id="1"> <item id="2"> [...] <item id="10000"/> [...] </item> </item> </root>
and the query //item[not(ancestor::*)]
The timings I get are almost identical, replacing "preceding" with "following" or "ancestor" with "descendant" doesn't change much.
So is this any sort of known issue? Should I be looking at any sort of
configuration options? Is there any way to profile the execution of the Xpath?
My guess is that the number of nodes on the *-sibling-axes is usually much bigger than on the vertical axes, so an expensive algorithm gets unusable earlier.
To return to your example query, you could drastically reduce its runtime by only traversing the database once, comparing each node only to the nodes with unique tns:ids found before. I'll use a left fold [1][2]:
fold-left( function($seq, $x) { if($seq/tns:id = $x/tns:id) then $seq else ($seq, $x) }, (), //tns:poi )
If you're OK with using not-yet-standard XQuery extensions, a map [3] instead of a sequence can potentially be even faster:
let $map := fold-left( function($map, $x) { let $key := $x/tns:id return if(map:contains($map, $key)) then $map else map:new(($map, map:entry($key, $x))) }, map:new(), //tns:poi ) for $key in map:keys($map) return $map($key)
But this won't preserve the relative ordering of the results.
Hope that helped, Cheers Leo __________
[1] http://www.w3.org/TR/xpath-functions-30/#func-fold-left [2] http://en.wikipedia.org/wiki/Fold_%28higher-order_function%29 [3] http://docs.basex.org/wiki/Map_Functions
Message: 2 Date: Sat, 22 Oct 2011 01:40:23 +0530 From: Pushkaraj Thorat pushkaraj.thorat.devl@gmail.com To: Rositsa Shadura rositsa.shadura@uni-konstanz.de Cc: basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] Problems in using BaseX REST server - IncompatibleClassChangeError javax.ws.rs.core.Response$Status does not implement the requested interface Message-ID: <CAH5ngE_gf655mnLuTCAjStd2X1cmWKJQk8xYTErMyFv4QnMYeQ@mail.gmail.com
Content-Type: text/plain; charset="iso-8859-1"
Thanks Rositsa! It is bit late to reply, but indeed it is a good to know.
Regards Pushkaraj
On Fri, Mar 4, 2011 at 3:01 AM, Rositsa Shadura < rositsa.shadura@uni-konstanz.de> wrote:
Hi all,
I've just managed accidentally to reproduce the error. I noticed that the class javax.ws.rs.core.Response.**Status is defined in both jsr311-api-1.0.jar and jersey-core-1.4.jar but only the class in the jersey-core JAR implements the interface
javax.ws.rs.core.Response.**StatusType.
This is why it is important that the jersey-core JAR appears before the jsr311-api JAR in the classpath. When not the error occurs.
Greetings, Rositsa
On Thu, 20 Jan 2011 12:03:45 +0100, Michael Seiferle < michael.seiferle@uni-**konstanz.de michael.seiferle@uni-konstanz.de> wrote:
Hi Pushkaraj,
thanks in return for your response. I will see if I can reproduce that in my VM; so far you are the first
one
to report this issue, I'll let you know what I can find.
Kind regards
Michael
Am 19.01.2011 um 20:19 schrieb Pushkaraj Thorat:
Thanks for your response Michael,
I am using java 1.6
pushkaraj@toothless:~$ java -version java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode) pushkaraj@toothless:~$
Just to update, the rest server ran successfully on my windows machine. Not sure what problem faced on the linux(ubuntu) machine. I will debug
once
I get some time.
Thanks, Pushkaraj
On Tue, Jan 18, 2011 at 3:46 AM, Michael Seiferle
<michael.seiferle@uni-
**konstanz.de michael.seiferle@uni-konstanz.de> wrote: Dear Pushkaraj,
I am deeply sorry for you having to mess around with that erroneous startup scripts. We fixed them in both the ZIP & DMG distribution, feel free to download them again.
java.lang.**IncompatibleClassChangeError
We have been trying to reproduce this error - but to no avail. Your error message might have to do something with your Java Version; please make sure you are running the latest version.
Hope this helps! In case it does not, feel free to ask for more.
Kind regards
Michael
Am 17.01.2011 um 22:00 schrieb Pushkaraj Thorat:
I am doing setup for REST enabled basex database with procedure
mentioned in http://docs.basex.org/wiki/**JAX-RX_API<
http://docs.basex.org/wiki/JAX-RX_API%3EURL.
Configuring & starting server and running failed due to class not
found, but later I've modified the ./basexrest script as: (Included
all the
jars in lib folder)
######START #!/bin/bash # Path to this script PWD=`dirname $0` # Paths to distributed files or source directories BASEX=$PWD/BaseX.jar BASEXAPI=$PWD/../lib/basex-**api.jar # Classpath LIB=$PWD/../lib LIB_CP="" for JAR_FILE in $LIB/*.jar do LIB_CP="$LIB/$JAR_FILE:$LIB_**CP" done CP=$BASEX:$BASEXAPI:$LIB_CP # Options for virtual machine VM=-Xmx1g # Run REST server java -cp "$CP" $VM org.basex.api.jaxrx.**JaxRxServer "$@"
######END
after this, server started successfully, hit the URL -
http://localhost:8984/basex/jax-rx%3EI am getting following exception:
java.lang.**IncompatibleClassChangeError: Class
javax.ws.rs.core.Response$**Status does not implement the requested interface javax.ws.rs.core.Response$**StatusType
at
com.sun.jersey.spi.container.**ContainerResponse.getStatus(**
ContainerResponse.java:548)
at com.sun.jersey.spi.container.**ContainerResponse$**
CommittingOutputStream.**commitWrite(ContainerResponse.**java:156)
at com.sun.jersey.spi.container.**ContainerResponse$**
CommittingOutputStream.write(**ContainerResponse.java:133)
at org.basex.io.BufferedOutput.**flush(BufferedOutput.java:50) at org.basex.io.PrintOutput.**flush(PrintOutput.java:126) at org.basex.data.XMLSerializer.**cls(XMLSerializer.java:206) at org.basex.data.Serializer.**close(Serializer.java:219) at org.basex.api.jaxrx.BXJaxRx$1.**code(BXJaxRx.java:96) at org.basex.api.jaxrx.BXCode.**run(BXCode.java:53) at org.basex.api.jaxrx.BXOutput.**write(BXOutput.java:53) at com.sun.jersey.core.impl.**provider.entity.**
StreamingOutputProvider.**writeTo(**StreamingOutputProvider.java:**71)
at com.sun.jersey.core.impl.**provider.entity.**
StreamingOutputProvider.**writeTo(**StreamingOutputProvider.java:**57)
at com.sun.jersey.spi.container.**ContainerResponse.write(**
ContainerResponse.java:299)
______________________________**_________________
BaseX-Talk mailing list BaseX-Talk@mailman.uni-**konstanz.de <BaseX-Talk@mailman.uni-konstanz.de
https://mailman.uni-konstanz.**de/mailman/listinfo/basex-talk<
https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk%3E
basex-talk@mailman.uni-konstanz.de