Bug with Full Text functions ?
Wednesday, 20 November 2013 · 2 messages
MI
Maud Ingarao20 Nov 2013 16:06 #
Hi everybody !
We are very excited that our BaseX kit for Digital Humanities Corpus is almost done and we look forward to presenting it to you !
We only have a last bug using the Full Text functions.
The very same function call works fine through the rest api but generates a 500 Servor Internal Error through our restxq files.
Example (you won't be able to access this private server) :
http://ahn-basex.cbp.ens-lyon.fr:8984/rest/Desanti?query=count(collection('Desanti')/*[local-name() = 'ead']/*[local-name() = 'archdesc']/*[local-name() = 'dsc'] //*[local-name() = 'c']/*[local-name() =
'controlaccess']/*[local-name() = 'persname'][text() contains text 'Aristote'])
works fine and returns the number of occurrences whereas
let $occurrences :=
count(collection("Desanti")/*[local-name() = 'ead']/*[local-name() = 'archdesc']/*[local-name() = 'dsc']//*[local-name() = 'c']
/*[local-name() = 'controlaccess']/*[local-name() =
'persname'][text() contains text 'Aristote'])
generates one of the two ERROR 500 below.
PS :
ft:count does't work and return 0 occurrences
Thanks a lot und bis bald !
Maud and Nathalie
HTTP ERROR 500
Problem accessing /desanti/catalogue. Reason:
Unexpected error: Improper use? Potential bug? Your feedback is welcome: Contact: basex-talk at mailman.uni-konstanz.de
Version: BaseX 7.7
Java: Sun Microsystems Inc., 1.6.0_27
OS: Linux, amd64
Stack Trace:
java.lang.NullPointerException
------------------------------------------------------------------------ /Powered by Jetty:///
or
HTTP ERROR 500
Problem accessing /brede/theme. Reason:
Unexpected error: Improper use? Potential bug? Your feedback is welcome:Contact: basex-talk at mailman.uni-konstanz.de
Version: BaseX 7.7
Java: Sun Microsystems Inc., 1.6.0_27
OS: Linux, amd64
Stack Trace:
java.lang.NullPointerException
at org.basex.query.ft.FTContainsExpr.item(FTContainsExpr.java:44)
at org.basex.query.ft.FTContainsExpr.item(FTContainsExpr.java:24)
at org.basex.query.expr.ParseExpr.ebv(ParseExpr.java:92)
at org.basex.query.expr.ParseExpr.test(ParseExpr.java:106)
at org.basex.query.expr.Preds.preds(Preds.java:133)
at org.basex.query.path.IterStep$1.next(IterStep.java:42)
at org.basex.query.path.CachedPath.iter(CachedPath.java:103)
at org.basex.query.path.CachedPath.iter(CachedPath.java:106)
at org.basex.query.path.CachedPath.iter(CachedPath.java:72)
at org.basex.query.expr.ParseExpr.ebv(ParseExpr.java:94)
at org.basex.query.expr.ParseExpr.test(ParseExpr.java:106)
at org.basex.query.expr.Preds.preds(Preds.java:133)
at org.basex.query.path.IterStep$1.next(IterStep.java:42)
at org.basex.query.path.IterStep$1.next(IterStep.java:31)
at org.basex.query.path.IterPath$1.next(IterPath.java:70)
at org.basex.query.path.IterPath$1.next(IterPath.java:41)
at org.basex.query.gflwor.For$1.next(For.java:71)
at org.basex.query.gflwor.Let$1.next(Let.java:74)
at org.basex.query.gflwor.GFLWOR$2.next(GFLWOR.java:72)
at org.basex.query.expr.Constr.add(Constr.java:66)
at org.basex.query.expr.CElem.item(CElem.java:91)
at org.basex.query.expr.CElem.item(CElem.java:23)
at org.basex.query.expr.ParseExpr.value(ParseExpr.java:68)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.gflwor.Let$1.next(Let.java:75)
at org.basex.query.gflwor.GFLWOR$2.next(GFLWOR.java:72)
at org.basex.query.iter.Iter.value(Iter.java:64)
at org.basex.query.expr.ParseExpr.value(ParseExpr.java:71)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.func.StaticFunc.invValue(StaticFunc.java:199)
at org.basex.query.func.BaseFuncCall.value(BaseFuncCall.java:62)
at org.basex.query.func.StaticFuncCall.iter(StaticFuncCall.java:84)
at org.basex.query.gflwor.GFLWOR$2.next(GFLWOR.java:76)
at org.basex.query.expr.Constr.add(Constr.java:66)
at org.basex.query.expr.CElem.item(CElem.java:91)
at org.basex.query.expr.CElem.item(CElem.java:23)
at org.basex.query.expr.ParseExpr.value(ParseExpr.java:68)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.gflwor.Let$1.next(Let.java:75)
at org.basex.query.gflwor.GFLWOR$2.next(GFLWOR.java:72)
at org.basex.query.expr.Constr.add(Constr.java:66)
at org.basex.query.expr.CElem.item(CElem.java:91)
at org.basex.query.expr.CElem.item(CElem.java:23)
at org.basex.query.expr.ParseExpr.value(ParseExpr.java:68)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.expr.Switch.value(Switch.java:91)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.gflwor.Let$1.next(Let.java:75)
at org.basex.query.gflwor.GFLWOR$2.next(GFLWOR.java:72)
at org.basex.query.expr.Constr.add(Constr.java:66)
at org.basex.query.expr.CElem.item(CElem.java:91)
at org.basex.query.expr.CElem.item(CElem.java:23)
at org.basex.query.expr.ParseExpr.iter(ParseExpr.java:46)
at org.basex.query.gflwor.GFLWOR$2.next(GFLWOR.java:76)
at org.basex.query.iter.Iter.value(Iter.java:64)
at org.basex.query.expr.ParseExpr.value(ParseExpr.java:71)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.func.StaticFunc.invValue(StaticFunc.java:199)
at org.basex.query.func.BaseFuncCall.value(BaseFuncCall.java:62)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.value.item.FuncItem.invValue(FuncItem.java:180)
at org.basex.query.func.DynFuncCall.value(DynFuncCall.java:58)
at org.basex.query.func.DynFuncCall.iter(DynFuncCall.java:63)
at org.basex.query.QueryContext.iter(QueryContext.java:328)
at org.basex.query.expr.Constr.add(Constr.java:65)
at org.basex.query.expr.CElem.item(CElem.java:91)
at org.basex.query.expr.CElem.item(CElem.java:23)
at org.basex.query.expr.ParseExpr.iter(ParseExpr.java:46)
at org.basex.query.QueryContext.iter(QueryContext.java:328)
at org.basex.query.expr.Constr.add(Constr.java:65)
at org.basex.query.expr.CElem.item(CElem.java:91)
at org.basex.query.expr.CElem.item(CElem.java:23)
at org.basex.query.expr.ParseExpr.iter(ParseExpr.java:46)
at org.basex.query.QueryContext.iter(QueryContext.java:328)
at org.basex.query.expr.Constr.add(Constr.java:65)
at org.basex.query.expr.CElem.item(CElem.java:91)
at org.basex.query.expr.CElem.item(CElem.java:23)
at org.basex.query.expr.ParseExpr.value(ParseExpr.java:68)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.func.StaticFunc.invValue(StaticFunc.java:199)
at org.basex.query.func.BaseFuncCall.value(BaseFuncCall.java:62)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.value.item.FuncItem.invValue(FuncItem.java:180)
at org.basex.query.func.DynFuncCall.value(DynFuncCall.java:58)
at org.basex.query.func.DynFuncCall.iter(DynFuncCall.java:63)
at org.basex.query.QueryContext.iter(QueryContext.java:328)
at org.basex.query.expr.List$1.next(List.java:120)
at org.basex.query.expr.Constr.add(Constr.java:66)
at org.basex.query.expr.CElem.item(CElem.java:91)
at org.basex.query.expr.CElem.item(CElem.java:23)
at org.basex.query.expr.ParseExpr.value(ParseExpr.java:68)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.func.StaticFunc.invValue(StaticFunc.java:199)
at org.basex.query.func.BaseFuncCall.value(BaseFuncCall.java:62)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.value.item.FuncItem.invValue(FuncItem.java:180)
at org.basex.query.func.DynFuncCall.value(DynFuncCall.java:58)
at org.basex.query.func.DynFuncCall.iter(DynFuncCall.java:63)
at org.basex.query.QueryContext.iter(QueryContext.java:328)
at org.basex.query.expr.List$1.next(List.java:120)
at org.basex.query.expr.Constr.add(Constr.java:66)
at org.basex.query.expr.CElem.item(CElem.java:91)
at org.basex.query.expr.CElem.item(CElem.java:23)
at org.basex.query.expr.ParseExpr.value(ParseExpr.java:68)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.func.StaticFunc.invValue(StaticFunc.java:199)
at org.basex.query.func.TailFuncCall.value(TailFuncCall.java:47)
at org.basex.query.QueryContext.value(QueryContext.java:339)
at org.basex.query.func.StaticFunc.invValue(StaticFunc.java:199)
at org.basex.query.func.BaseFuncCall.value(BaseFuncCall.java:62)
at org.basex.query.func.StaticFuncCall.iter(StaticFuncCall.java:84)
at org.basex.query.MainModule.iter(MainModule.java:93)
at org.basex.query.QueryContext.iter(QueryContext.java:282)
at org.basex.http.restxq.RestXqResponse.create(RestXqResponse.java:73)
at org.basex.http.restxq.RestXqModule.process(RestXqModule.java:108)
at org.basex.http.restxq.RestXqFunction.process(RestXqFunction.java:100)
at org.basex.http.restxq.RestXqServlet.run(RestXqServlet.java:31)
at org.basex.http.BaseXServlet.service(BaseXServlet.java:58)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:457)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:679)--
/« Ne travaillez jamais »/
*Maud Ingarao*
IHPC (UMR 5037)
Institut d'histoire de la pensée classique, de l'Humanisme aux Lumières Ecole Normale Supérieure de Lyon - Site Descartes - Bureau R322 15 Parvis René Descartes - BP7000 - 69342 Lyon CEDEX 07
+33 4 37 37 65 79 - maud.ingarao at ens-lyon.fr
/Je suis absente le vendredi | Out of office on Fridays/
http://pensee-classique.ens-lyon.fr
http://institutdesanti.ens-lyon.fr
http://ahn.ens-lyon.fr
http://www.mutec-shs.fr
http://www.projet-plume.org
http://www.cahier.paris-sorbonne.fr/
CG
Christian Grün20 Nov 2013 22:44 #
Hi Maud,
thanks for your e-mail. I’m pleased to hear you’ve nearly finished your work!
Quoted text · Maud Ingarao · 1 line
> We only have a last bug using the Full Text functions.
Out of curiosity: have you also tried 7.7.2 or the latest snapshot?
Quoted text · Maud Ingarao · 6 lines
> works fine and returns the number of occurrences whereas > let $occurrences := > count(collection("Desanti")/*[local-name() = 'ead']/*[local-name() = > 'archdesc']/*[local-name() = 'dsc']//*[local-name() = 'c'] > /*[local-name() = 'controlaccess']/*[local-name() = > 'persname'][text() contains text 'Aristote'])
…how does the full query look like? If I get it right, everything after "let $occurrences :=" is identical to the first query, and after that, something seems to be missing..
By the way, your query could probably be rewritten as follows:
count(collection('Desanti')/ead/archdesc/dsc/c/controlaccess/persname[text() contains text 'Aristote'])
If you use namespaces, and if you don’t want to specify them explicitly, you could prefix the local names with wildcards:
count(collection('Desanti')/*:ead/*:archdesc/*:dsc/*:c/*:controlaccess/*:persname[text() contains text 'Aristote'])
Looking forward to your feedback,
Christian
Written for BaseX 7.7. BaseX may have changed since: please check the current documentation.
⚡Generated with XQuery