[xwiki-users] XWQL query on several objects of the same class instantiated in the same doc
Hi!, I'm really impressed, again, with the performance and easiness of XWQL. Even though I'm using an old XWiki release, I'm able to follow almost all examples provided at... http://extensions.xwiki.org/xwiki/bin/view/Extension/Query+Module But I'm not able to figure out how to solve one problem: I would like to retrieve documents (and read their properties) based on a combination of values of comments objects. That is: I only want to retrieve a document when a combination of values stored in comments happens. I've tried this... #set ($xwlquery1 = "from doc.object(XWiki.XWikiComments) as comm where doc.translation = 0 and comm.comment like '%$doc.title%' and comm.comment not like '%Withdrawal:2011%'") But this query retrieve also, for instance, this document holding three comments: Ricardo Rodríguez Fernández, 2012/06/15 07:49 Reply Edit Delete Gender:male Yolanda Liste Martínez, 2012/06/15 09:18 Reply Delete Withdrawal:20111231 Ricardo Rodríguez Fernández, 2013/05/21 13:24 Reply Edit Delete Formely:XWiki.XWikiIDISE001 I'm not able to find a way of not to retrieve this document while all others with comm.comment like '%$doc.title%'. Please, could anybody help me with this issue? Thank you so much for your help, Ricardo -- Ricardo Rodríguez Research Management and Promotion Technician Technical Secretariat Health Research Institute of Santiago de Compostela (IDIS) http://www.idisantiago.es Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada. Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada. See more languages: http://www.sergas.es/aviso_confidencialidad.htm
Hi Ricardo You are only checking in one object. So there has to be one object that contains the doc name, but not the withdrawal part which is fulfilled by the third object in your example. Whilst I don't recall ever having tried checking for multiple objects in XWQL, I would suspect this should work: #set ($xwlquery1 = "from doc.object(XWiki.XWikiComments) as comm1, doc.object(XWiki.XWikiComments) as comm2 where doc.translation = 0 and comm1.comment like '%$doc.title%' and comm2.comment not like '%Withdrawal:2011%'") Hope this helps Edo On Wed, May 22, 2013 at 2:57 AM, < [email protected]> wrote:
Hi!,
I'm really impressed, again, with the performance and easiness of XWQL. Even though I'm using an old XWiki release, I'm able to follow almost all examples provided at...
http://extensions.xwiki.org/xwiki/bin/view/Extension/Query+Module
But I'm not able to figure out how to solve one problem: I would like to retrieve documents (and read their properties) based on a combination of values of comments objects. That is: I only want to retrieve a document when a combination of values stored in comments happens.
I've tried this...
#set ($xwlquery1 = "from doc.object(XWiki.XWikiComments) as comm where doc.translation = 0 and comm.comment like '%$doc.title%' and comm.comment not like '%Withdrawal:2011%'")
But this query retrieve also, for instance, this document holding three comments:
Ricardo Rodríguez Fernández, 2012/06/15 07:49 Reply Edit Delete Gender:male
Yolanda Liste Martínez, 2012/06/15 09:18 Reply Delete Withdrawal:20111231
Ricardo Rodríguez Fernández, 2013/05/21 13:24 Reply Edit Delete Formely:XWiki.XWikiIDISE001
I'm not able to find a way of not to retrieve this document while all others with comm.comment like '%$doc.title%'.
Please, could anybody help me with this issue?
Thank you so much for your help,
Ricardo
-- Ricardo Rodríguez Research Management and Promotion Technician Technical Secretariat Health Research Institute of Santiago de Compostela (IDIS) http://www.idisantiago.es
Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada.
Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada.
See more languages: http://www.sergas.es/aviso_confidencialidad.htm _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Hi Ricardo and Edo, 2013/5/22 Edo Beutler <[email protected]>
Hi Ricardo
You are only checking in one object. So there has to be one object that contains the doc name, but not the withdrawal part which is fulfilled by the third object in your example. Whilst I don't recall ever having tried checking for multiple objects in XWQL, I would suspect this should work:
#set ($xwlquery1 = "from doc.object(XWiki.XWikiComments) as comm1, doc.object(XWiki.XWikiComments) as comm2 where doc.translation = 0 and comm1.comment like '%$doc.title%' and comm2.comment not like '%Withdrawal:2011%'")
You are right. But I think you should add "comm1 <> comm2" in your query to make it work. Louis-Marie
Hi! Thanks you both for answering! I'm afraid that your proposals didn't solve the problem. Please, see here... http://www.idisantiago.es/bin/XWQL/SnapshotE0012012 Both users have three comments each. This way: XWD_ID:416379378 Gender:xxxxxxxx Withdrawal:20121017 Formely:XWiki.XWikiIDISE001 XWD_ID:946660794 Gender:xxxxxxxx Withdrawal:20111231 Formely:XWiki.XWikiIDISE001 Thus, I'm still not able to design a query to retrive ONLY user XWD_ID:416379378 based on comments :-( Your proposals answer with a list including both users n times. I'm not able neither of explain n in both cases... any idea will be welcome! Thank you very much for your help, Ricardo
________________________________________ From: [email protected] [[email protected]] On Behalf Of Guillaume "Louis-Marie" Delhumeau [[email protected]] Sent: 22 May 2013 13:02 To: XWiki Users Subject: Re: [xwiki-users] XWQL query on several objects of the same class instantiated in the same doc
Hi Ricardo and Edo,
2013/5/22 Edo Beutler <[email protected]>
Hi Ricardo
You are only checking in one object. So there has to be one object that contains the doc name, but not the withdrawal part which is fulfilled by the third object in your example. Whilst I don't recall ever having tried checking for multiple objects in XWQL, I would suspect this should work:
#set ($xwlquery1 = "from doc.object(XWiki.XWikiComments) as comm1, doc.object(XWiki.XWikiComments) as comm2 where doc.translation = 0 and comm1.comment like '%$doc.title%' and comm2.comment not like '%Withdrawal:2011%'")
You are right. But I think you should add "comm1 <> comm2" in your query to make it work.
Louis-Marie _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada. Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada. See more languages: http://www.sergas.es/aviso_confidencialidad.htm
Hi Ricardo I just realised that the problem is, that there are more than two comments. So the query will find two comments that satisfies your ristrictions, even though there are more objects which do not. So e.g. comm1 and comm2 are both objects of the type XWD_ID:416379378 Gender:xxxxxxxx Withdrawal:20121017 Formely:XWiki.XWikiIDISE001 The solution is to write a query like this (unfortunately I can't tell you the exact XWQL syntax, I'm not even sure if this is possible in XWQL. So this is just pseudo code): .... and comm1.comment like '%$doc.title%' and 0=(select count(*) ..... where comm2.comment not like '%Withdrawal:2011%') I hope this is possible and you (or somebody else) knows or finds the exact syntax Edo On Wed, May 22, 2013 at 5:26 PM, < [email protected]> wrote:
Hi! Thanks you both for answering!
I'm afraid that your proposals didn't solve the problem. Please, see here...
http://www.idisantiago.es/bin/XWQL/SnapshotE0012012
Both users have three comments each. This way:
XWD_ID:416379378 Gender:xxxxxxxx Withdrawal:20121017 Formely:XWiki.XWikiIDISE001
XWD_ID:946660794 Gender:xxxxxxxx Withdrawal:20111231 Formely:XWiki.XWikiIDISE001
Thus, I'm still not able to design a query to retrive ONLY user XWD_ID:416379378 based on comments :-( Your proposals answer with a list including both users n times. I'm not able neither of explain n in both cases... any idea will be welcome!
Thank you very much for your help,
Ricardo
________________________________________ From: [email protected] [[email protected]] On Behalf Of Guillaume "Louis-Marie" Delhumeau [[email protected]] Sent: 22 May 2013 13:02 To: XWiki Users Subject: Re: [xwiki-users] XWQL query on several objects of the same class instantiated in the same doc
Hi Ricardo and Edo,
2013/5/22 Edo Beutler <[email protected]>
Hi Ricardo
You are only checking in one object. So there has to be one object that contains the doc name, but not the withdrawal part which is fulfilled by the third object in your example. Whilst I don't recall ever having tried checking for multiple objects in XWQL, I would suspect this should work:
#set ($xwlquery1 = "from doc.object(XWiki.XWikiComments) as comm1, doc.object(XWiki.XWikiComments) as comm2 where doc.translation = 0 and comm1.comment like '%$doc.title%' and comm2.comment not like '%Withdrawal:2011%'")
You are right. But I think you should add "comm1 <> comm2" in your query to make it work.
Louis-Marie _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada.
Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada.
See more languages: http://www.sergas.es/aviso_confidencialidad.htm _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Hi. I'm not sure I really understood what you need to do, but let me propose a solution anyway. I think what you need is to get the all the documents that contains comments with "%doc.title%" content and where there is NO comment with '%Withdrawal:2011% in the content. So, that's how I would solve the problem: #set ($xwlquery1 = "FROM doc.object(XWiki. XWikiComments) AS commWHERE doc.translation = 0 AND and comm.comment LIKE :doctitle AND doc.fullName NOT IN (SELECT doc2.fullName FROM Document doc2, doc2.object(XWiki.XWikiComments) comm2 WHERE comm2.comment LIKE '%Withdrawal:2011%')") #set($results = $services.query.xwql($xwqlquery1).bindValue('doctitle', "%${doc.title}%")) I didn't test it but it should work. Louis-Marie. 2013/5/22 <[email protected]>
Hi! Thanks you both for answering!
I'm afraid that your proposals didn't solve the problem. Please, see here...
http://www.idisantiago.es/bin/XWQL/SnapshotE0012012
Both users have three comments each. This way:
XWD_ID:416379378 Gender:xxxxxxxx Withdrawal:20121017 Formely:XWiki.XWikiIDISE001
XWD_ID:946660794 Gender:xxxxxxxx Withdrawal:20111231 Formely:XWiki.XWikiIDISE001
Thus, I'm still not able to design a query to retrive ONLY user XWD_ID:416379378 based on comments :-( Your proposals answer with a list including both users n times. I'm not able neither of explain n in both cases... any idea will be welcome!
Thank you very much for your help,
Ricardo
________________________________________ From: [email protected] [[email protected]] On Behalf Of Guillaume "Louis-Marie" Delhumeau [[email protected]] Sent: 22 May 2013 13:02 To: XWiki Users Subject: Re: [xwiki-users] XWQL query on several objects of the same class instantiated in the same doc
Hi Ricardo and Edo,
2013/5/22 Edo Beutler <[email protected]>
Hi Ricardo
You are only checking in one object. So there has to be one object that contains the doc name, but not the withdrawal part which is fulfilled by the third object in your example. Whilst I don't recall ever having tried checking for multiple objects in XWQL, I would suspect this should work:
#set ($xwlquery1 = "from doc.object(XWiki.XWikiComments) as comm1, doc.object(XWiki.XWikiComments) as comm2 where doc.translation = 0 and comm1.comment like '%$doc.title%' and comm2.comment not like '%Withdrawal:2011%'")
You are right. But I think you should add "comm1 <> comm2" in your query to make it work.
Louis-Marie _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada.
Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada.
See more languages: http://www.sergas.es/aviso_confidencialidad.htm _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Ah ... exactly, NOT IN was what I was trying remember. So forget my count construct :) On Wed, May 22, 2013 at 5:51 PM, Guillaume "Louis-Marie" Delhumeau < [email protected]> wrote:
Hi.
I'm not sure I really understood what you need to do, but let me propose a solution anyway.
I think what you need is to get the all the documents that contains comments with "%doc.title%" content and where there is NO comment with '%Withdrawal:2011% in the content.
So, that's how I would solve the problem:
#set ($xwlquery1 = "FROM doc.object(XWiki. XWikiComments) AS commWHERE doc.translation = 0 AND and comm.comment LIKE :doctitle AND doc.fullName NOT IN (SELECT doc2.fullName FROM Document doc2, doc2.object(XWiki.XWikiComments) comm2 WHERE comm2.comment LIKE '%Withdrawal:2011%')") #set($results = $services.query.xwql($xwqlquery1).bindValue('doctitle', "%${doc.title}%"))
I didn't test it but it should work.
Louis-Marie.
2013/5/22 <[email protected]>
Hi! Thanks you both for answering!
I'm afraid that your proposals didn't solve the problem. Please, see here...
http://www.idisantiago.es/bin/XWQL/SnapshotE0012012
Both users have three comments each. This way:
XWD_ID:416379378 Gender:xxxxxxxx Withdrawal:20121017 Formely:XWiki.XWikiIDISE001
XWD_ID:946660794 Gender:xxxxxxxx Withdrawal:20111231 Formely:XWiki.XWikiIDISE001
Thus, I'm still not able to design a query to retrive ONLY user XWD_ID:416379378 based on comments :-( Your proposals answer with a list including both users n times. I'm not able neither of explain n in both cases... any idea will be welcome!
Thank you very much for your help,
Ricardo
________________________________________ From: [email protected] [[email protected]] On Behalf Of Guillaume "Louis-Marie" Delhumeau [[email protected]] Sent: 22 May 2013 13:02 To: XWiki Users Subject: Re: [xwiki-users] XWQL query on several objects of the same class instantiated in the same doc
Hi Ricardo and Edo,
2013/5/22 Edo Beutler <[email protected]>
Hi Ricardo
You are only checking in one object. So there has to be one object that contains the doc name, but not the withdrawal part which is fulfilled by the third object in your example. Whilst I don't recall ever having tried checking for multiple objects in XWQL, I would suspect this should work:
#set ($xwlquery1 = "from doc.object(XWiki.XWikiComments) as comm1, doc.object(XWiki.XWikiComments) as comm2 where doc.translation = 0 and comm1.comment like '%$doc.title%' and comm2.comment not like '%Withdrawal:2011%'")
You are right. But I think you should add "comm1 <> comm2" in your query to make it work.
Louis-Marie _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada.
Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada.
See more languages: http://www.sergas.es/aviso_confidencialidad.htm _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
_______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Louis-Marie, Edo, thanks again! Louis-Marie, you perfectly understand what I'm trying to get: to use comments on documents as criteria for selection. I understand comments are not intended to satisfy this objetive, but, at least for me, they are extremely useful to "draft" data models to be implemented in new XWiki classes. Just a kind of "extreme development" tool! :-) I think the "only" problem we are facing with this use is the kind of queries combining comments on the same document to retrive documents and properties of any class there instantiated. I'm truly learning a lot! I think I can understand the construction and it must answer the well-formed question Louis-Marie wrote down in his message, but I'm not able to understand the result. Here what I get... org.xwiki.query.internal.DefaultQuery@70687068 The integer after the @ changes it time I reload the page. I din't get neither a document fullName, nor an object. You can always check it in the same link posted before... http://www.idisantiago.es/bin/XWQL/SnapshotE0012012 In found DefaultQuery code here... http://maven.xwiki.org/site/clover/20120701/clover-platform-20120702/org/xwi... Perhaps this construct doesn't work in my plain old XWIKI ENTERPRISE 2.4.30451 installation? Thanks for your help! Ricardo
________________________________________ From: [email protected] [[email protected]] On Behalf Of Guillaume "Louis-Marie" Delhumeau [[email protected]] Sent: 22 May 2013 17:51 To: XWiki Users Subject: Re: [xwiki-users] XWQL query on several objects of the same class instantiated in the same doc
Hi.
I'm not sure I really understood what you need to do, but let me propose a solution anyway.
I think what you need is to get the all the documents that contains comments with "%doc.title%" content and where there is NO comment with '%Withdrawal:2011% in the content.
So, that's how I would solve the problem:
#set ($xwlquery1 = "FROM doc.object(XWiki. XWikiComments) AS commWHERE doc.translation = 0 AND and comm.comment LIKE :doctitle AND doc.fullName NOT IN (SELECT doc2.fullName FROM Document doc2, doc2.object(XWiki.XWikiComments) comm2 WHERE comm2.comment LIKE '%Withdrawal:2011%')") #set($results = $services.query.xwql($xwqlquery1).bindValue('doctitle', "%${doc.title}%"))
I didn't test it but it should work.
Louis-Marie.
2013/5/22 <[email protected]>
Hi! Thanks you both for answering!
I'm afraid that your proposals didn't solve the problem. Please, see here...
http://www.idisantiago.es/bin/XWQL/SnapshotE0012012
Both users have three comments each. This way:
XWD_ID:416379378 Gender:xxxxxxxx Withdrawal:20121017 Formely:XWiki.XWikiIDISE001
XWD_ID:946660794 Gender:xxxxxxxx Withdrawal:20111231 Formely:XWiki.XWikiIDISE001
Thus, I'm still not able to design a query to retrive ONLY user XWD_ID:416379378 based on comments :-( Your proposals answer with a list including both users n times. I'm not able neither of explain n in both cases... any idea will be welcome!
Thank you very much for your help,
Ricardo
________________________________________ From: [email protected] [[email protected]] On Behalf Of Guillaume "Louis-Marie" Delhumeau [[email protected]] Sent: 22 May 2013 13:02 To: XWiki Users Subject: Re: [xwiki-users] XWQL query on several objects of the same class instantiated in the same doc
Hi Ricardo and Edo,
2013/5/22 Edo Beutler <[email protected]>
Hi Ricardo
You are only checking in one object. So there has to be one object that contains the doc name, but not the withdrawal part which is fulfilled by the third object in your example. Whilst I don't recall ever having tried checking for multiple objects in XWQL, I would suspect this should work:
#set ($xwlquery1 = "from doc.object(XWiki.XWikiComments) as comm1, doc.object(XWiki.XWikiComments) as comm2 where doc.translation = 0 and comm1.comment like '%$doc.title%' and comm2.comment not like '%Withdrawal:2011%'")
You are right. But I think you should add "comm1 <> comm2" in your query to make it work.
Louis-Marie
Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada. Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada. See more languages: http://www.sergas.es/aviso_confidencialidad.htm
participants (3)
-
Edo Beutler -
Guillaume "Louis-Marie" Delhumeau -
Ricardo.Julio.Rodriguez.Fernandez@sergas.es