pywrapper-devel Mailing List for pywrapper (Page 7)
Status: Alpha
Brought to you by:
jatorre
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(10) |
Apr
|
May
(4) |
Jun
|
Jul
(40) |
Aug
(20) |
Sep
|
Oct
(10) |
Nov
(112) |
Dec
(18) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(8) |
Feb
|
Mar
|
Apr
(6) |
May
(13) |
Jun
(12) |
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
(3) |
2008 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
(3) |
Jun
(3) |
Jul
(6) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Javier de la T. <ja...@gm...> - 2006-11-16 08:33:39
|
Hi Milko, > I think a count can be very useful, like getting the number of =20 > elements conforming to some condition. Also, it can be useful to =20 > have an idea of how many elements one must get, then use that =20 > number when setting the secondary paging parameters. > > I agree that search is enough for now, that covers most of the needs. > Then lets wait for someone to find a service where this is needed. I =20 dont want to implement things if they is noone considering using them. >> The count operation is not available for use with biomoby. There =20 >> is no way in TAPIR, apart of using XSLT on top of it, to modify =20 >> the response dynamically of a search result that has the count set =20= >> to true. > Does this mean that in an output model you don't have access to the =20= > response structure of a TAPIR result? for instance to this: > <summary start=3D"0" totalReturned=3D"0" totalMatched=3D"25008" /> > Thats right. you can not include in a response structure for example =20 the number of results that a query has produced. Javi. > Thanks! > > Milko > > On Nov 16, 2006, at 0:39 , Javier de la Torre wrote: > >> Hi Milko, >> >> As you correctly said the moby2TapirFilterXslt just transform a =20 >> biomoby message into a tapir filter, just the filter! not a full =20 >> TAPIR request. Take a look at the XSLT, is pretty simple. >> >> As it is implemented right now the only operations that can be =20 >> done is a search... >> >> I implemented it like because with search is the only operation =20 >> that you can do dynamic outputmodels and the only thing that it is =20= >> needed to trasnform is the filter. >> >> The count operation is not available for use with biomoby. There =20 >> is no way in TAPIR, apart of using XSLT on top of it, to modify =20 >> the response dynamically of a search result that has the count set =20= >> to true. >> >> So, again, it is not possible to create biomoby services in =20 >> pywrapper that uses a COUNT. What kind of services do you envision =20= >> to do this? If you really need it then we can think about other =20 >> possibilities but I dont know if this is necessary... >> >> Cheers. >> >> On 15/11/2006, at 19:50, Skofic A. Milko (IPGRI) wrote: >> >>> Javier, podr=EDas decirme cuando me podr=EDas dedicar un poco de =20 >>> tiempo para comprender unas cosas de como implementas el MOBY? >>> >>> Te indico las cosas que no me son claras: >>> >>> El <moby2TapirFilterXslt> que hace exactamente, transforma el =20 >>> input Moby mensaje en el filtro te b=FAsqueda TAPIR? Si eso es la =20= >>> verdad, solamente se necessita crear la parte <filter> de la =20 >>> b=FAsqueda, lo otro es automatico? >>> >>> Si yo quer=EDa hacer un MOBY service que me da el COUNT de cuantos =20= >>> registros ha encontrado como puedo hacer? El problema es que esta =20= >>> informaci=F3n me la devuelve el protocolo TAPIR, no el esquema que =20= >>> se utiliza. >>> >>> Yo har=EDa esta query; >>> >>> <?xml version=3D'1.0' encoding=3D'UTF-8'?> >>> <request> >>> <header> >>> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 >>> pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> >>> </header> >>> <search count=3D'true' start=3D'0' limit=3D'0'> >>> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 >>> output/MCPD_EURISCO_1.00.xml"/> >>> <filter> >>> <like> >>> <concept id=3D'GENUS@mcpd_eurisco_100' = /> >>> <literal value=3D'B*' /> >>> </like> >>> </filter> >>> <orderBy> >>> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> >>> </orderBy> >>> </search> >>> </request> >>> >>> Y TAPIR me devolver=EDa: >>> >>> <?xml version=3D"1.0" encoding=3D"utf-8"?> >>> <response xmlns=3D"http://rs.tdwg.org/tapir/1.0"> >>> <header> >>> <source sendtime=3D"2006-11-15T19:26:50.57" accesspoint=3D"http://= =20 >>> tapir.grinfo.net:8080/pywrapper/pywrapper?dsa=3DEURISCO_TEST"> >>> <software version=3D"2.1" name=3D"PyWrapper" /> >>> </source> >>> </header> >>> <!-- CONTENT START --> >>> <search> >>> <summary start=3D"0" totalReturned=3D"0" totalMatched=3D"25008" = /> >>> </search> >>> <!-- CONTENT END --> >>> <diagnostics></diagnostics> >>> </response> >>> >>> Ent=F3nces tendr=EDa que hacer un output model con la estructura del = =20 >>> <response> mapeado a el MOBY type? >>> >>> Ciao! >>> >>> Milko >> > > > Milko A. Skofic (IPGRI) > International Plant Genetic Resources Institute > Via dei Tre Denari, 472/a > 00057 Maccarese (RM) > ITALY > E-mail: m.s...@cg... > Tel: +30 06 6118286 > > |
From: Javier de la T. <ja...@gm...> - 2006-11-16 08:33:39
|
Here is working fine. But I am not behind a firewall. Javier. On 15/11/2006, at 16:13, Peter Brewer wrote: > I'm having problems connecting to the SVN server. Can anyone > confirm if > the server is up/down? > > Regards > > Peter > > ---------------------------------------------------------------------- > --- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to > share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php? > page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > PyWrapper-devel mailing list > PyW...@li... > https://lists.sourceforge.net/lists/listinfo/pywrapper-devel |
From: Javier de la T. <ja...@gm...> - 2006-11-16 08:33:33
|
Hey Markus, But does this solve the problem that with structure and mapping? I did not know we were caching configuration files... or is not that =20 they are cached but pickled? Javi. On 16/11/2006, at 1:14, Markus D=F6ring wrote: > alright, there is now a new config parameter cacheExpiration that =20 > is used for any webdownloaded cache file. > if the file was cached before that time (in minutes), it is refreshed. > by default its 60 minutes > markus > > > On 14.11.2006, at 17:23, Skofic A. Milko (IPGRI) wrote: > > When making changes to structure or mapping I have to always reset =20 > the cache (in the ConfigTool), if not TAPIR doesn't see any changes. > > Just to let you know. > |
From: Skofic A. M. (IPGRI) <m.s...@cg...> - 2006-11-16 08:18:20
|
I tried to install it on the server but TAPIR gave me errors when loading the structure, fortunately it left a dot file before crashing. Here is the structure of the database, I send you both the dot file and a .png |
From: Javier de la T. <ja...@gm...> - 2006-11-16 00:43:10
|
Good news, > Yesterday I must have done something and TAPIR refused to start, > maybe some strange character in one of the data source files, I > don't know. Today I rebuilt the data source and TAPIR starts and > works fine. This just to point out that if anything happens to some > configuration files it is very difficult to figure out what is > wrong, so it could be a good thing to provide more feedback when > you are unable to startup TAPIR, at least list the file that breaks > the startup process. Thats true, there is always the debug, but I know it can be hard... maybe the start script should say in which part did it fail to load more clearly... > > Regarding MOBy I have been trying the existing service and all > seems to work well, fast also. Now, what about the MOBY features > that TAPIR doesn't still support, I mean the ability to send more > than one query at the time and the ability to accept collections as > a query parameter? > The multiple invocations option I think is discarded for this version of PyWrapper. I dont think is that complicate to implement but I dont think is necessary to work on this in this version. The ability to accept collections as a query parameter, although not tested, I think is possible to use it the way it is now... I dont see the problem transforming the moby request with a collection into a TAPIR filter with multiple conditions... but as I said I dont have any service with collections to test. > Also users need the ability to refer to a custom MOBY central > registry. > Yes... thats true... do you need it now or can we wait a bit for me to be more free? I see an incredible boost in your TAPIR and PyWrapper knowledge on the last two weeks! Javi. |
From: <wi...@go...> - 2006-11-16 00:26:12
|
milko, can you install & configure graphviz to understand the db structure? too many aliases... i got the feeling there might be the reason. in EURISCO its working. m On 16.11.2006, at 00:14, Skofic A. Milko (IPGRI) wrote: If you try it on dsa=3DEURISCO_TEST it will not work <?xml version=3D'1.0' encoding=3D'UTF-8'?> <request> <header> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 pywrapper?dsa=3DEURISCO_TEST" sendtime=3D"2006-11-13T12:54:29.43"/> </header> <search count=3D'true' start=3D'0' limit=3D'50'> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 output/MCPD_EURISCO_1.00.xml"/> <filter> <and> <like> <concept = id=3D'GENUS@mcpd_eurisco_100' /> <literal value=3D'B*' /> </like> <not> <isNull> <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> </isNull> </not> <not> <isNull> <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> </isNull> </not> </and> </filter> <orderBy> <concept id=3D'INSTCODE@mcpd_eurisco_100' /> <concept id=3D'GENUS@mcpd_eurisco_100' /> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> </orderBy> </search> </request> It returns: <diagnostic code=3D"DBS_SQL_EXEC" time=3D"2006-11-16T00:14:13.41" =20 level=3D"error"> The following SQL statement produced a DB error: SELECT COUNT=20 (DISTINCT ACC.AccessionID) FROM acc AS ACC JOIN acc_tax AS TAXA ON =20 ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE (TAXA.GENUS LIKE %s AND NOT =20 COORDINATES.LATITUDE is NULL AND NOT COORDINATES.LONGITUDE is NULL) </diagnostic> On Nov 15, 2006, at 23:56 , Markus D=F6ring wrote: > well, the request you posted works too. > so where's the problem? > ___ > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 > pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> > </header> > <search count=3D'true' start=3D'0' limit=3D'50'> > <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 > output/MCPD_EURISCO_1.00.xml"/> > <filter> > <and> > <like> > <concept = id=3D'GENUS@mcpd_eurisco_100' /> > <literal value=3D'B*' /> > </like> > <not> > <isNull> > <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> > </isNull> > </not> > <not> > <isNull> > <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> > </isNull> > </not> > </and> > </filter> > <orderBy> > <concept id=3D'INSTCODE@mcpd_eurisco_100' /> > <concept id=3D'GENUS@mcpd_eurisco_100' /> > <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> > </orderBy> > </search> > </request> > --- > > markus > > > > > > > On 15.11.2006, at 23:17, Skofic A. Milko (IPGRI) wrote: > > I tried it in the training database and it works. > > You can try queries directly on my site, the address is > http://tapir.grinfo.net:8080/pywrapper > the passwords are all the default one. > > On Nov 15, 2006, at 22:38 , Markus D=F6ring wrote: > >> Milko, >> can you try this request with the training database? >> just paste it into the queryform and submit: >> ----- >> <?xml version=3D'1.0' encoding=3D'UTF-8'?> >> <request> >> <header> >> <source accesspoint=3D"http://localhost:8080/pywrapper/=20 >> pywrapper?dsa=3Dtraining" sendtime=3D"2006-11-15T22:29:30.26"/> >> </header> >> <search count=3D'true' start=3D'0' limit=3D'5'> >> <externalOutputModel = location=3D'http://rs.tdwg.org/tapir/cs/dwc2/=20 >> model/dwc2.xml'/> >> <filter> >> <not> >> <isNull> >> <concept = id=3D'http://digir.net/schema/conceptual/darwin/=20 >> 2003/1.0/ScientificName' /> >> </isNull> >> </not> >> </filter> >> </search> >> </request> >> ----- >> >> Does this work? >> If so, does the same request work with your datasource? >> well, it needs darwincore mappings, so if you got abcd mapped, try =20= >> this: >> >> ----- >> <?xml version=3D'1.0' encoding=3D'UTF-8'?> >> <request> >> <header> >> <source = accesspoint=3D"http://localhost:8080/pywrapper/pywrapper?=20 >> dsa=3Dtraining" sendtime=3D"2006-11-15T22:29:30.26"/> >> </header> >> <search count=3D'false' start=3D'0' limit=3D'5'> >> <externalOutputModel = location=3D"http://rs.tdwg.org/tapir/cs/=20 >> abcd2.06/model/abcd206.xml"/> >> <filter> >> <and> >> <not> >> <isNull> >> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 >> DataSet/Units/Unit/Identifications/Identification/Result/=20 >> TaxonIdentified/ScientificName/FullScientificNameString' /> >> </isNull> >> </not> >> <not> >> <isNull> >> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 >> DataSet/Units/Unit/UnitID' /> >> </isNull> >> </not> >> </and> >> </filter> >> <orderBy> >> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 >> DataSet/Units/Unit/Identifications/Identification/Result/=20 >> TaxonIdentified/ScientificName/FullScientificNameString' /> >> </orderBy> >> </search> >> </request> >> ----- >> >> for me this all works. >> cant find any problem anywhere. >> >> markus >> >> >> >> >> On 15.11.2006, at 20:31, Markus D=F6ring wrote: >> >> hmm. the training db works with NOT isNull. >> can you try that too please? >> I cant see anything wrong... >> m >> >> >> On 15.11.2006, at 19:23, Skofic A. Milko (IPGRI) wrote: >> >> OK: >> >> MySQL version 5.0.15 >> >> SELECT COUNT(*) FROM ACC WHERE NOT LATITUDE IS NULL AND NOT =20 >> LONGITUDE IS NULL >> returns 63603 records (correct) >> >> SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL ) AND NOT=20 >> ( LONGITUDE IS NULL ) >> returns 63603 records (correct) >> >> SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL AND LONGITUDE =20= >> IS NULL ) >> returns 66650 records >> >> SELECT COUNT(*) FROM ACC WHERE LATITUDE IS NOT NULL AND LONGITUDE =20 >> IS NOT NULL >> returns 63603 records (correct) >> >> SELECT COUNT(*) FROM ACC WHERE( (LATITUDE IS NOT NULL) AND =20 >> (LONGITUDE IS NOT NULL) ) >> returns 63603 records (correct) >> >> Parenthesis are not needed because I guess "LATITUDE IS NOT NULL" =20 >> is a unary expression, >> >> I am sending the following query: >> >> <?xml version=3D'1.0' encoding=3D'UTF-8'?> >> <request> >> <header> >> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 >> pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> >> </header> >> <search count=3D'true' start=3D'0' limit=3D'50'> >> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 >> output/MCPD_EURISCO_1.00.xml"/> >> <filter> >> <and> >> <like> >> <concept = id=3D'GENUS@mcpd_eurisco_100' /> >> <literal value=3D'B*' /> >> </like> >> <not> >> <isNull> >> <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> >> </isNull> >> </not> >> <not> >> <isNull> >> <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> >> </isNull> >> </not> >> </and> >> </filter> >> <orderBy> >> <concept id=3D'INSTCODE@mcpd_eurisco_100' /> >> <concept id=3D'GENUS@mcpd_eurisco_100' /> >> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> >> </orderBy> >> </search> >> </request> >> >> The returned result has an SQL error: >> >> <diagnostic time=3D"2006-11-15T19:06:11.47" level=3D"info"> >> Executing SQL: 'SELECT COUNT(DISTINCT ACC.AccessionID) FROM acc AS =20= >> ACC JOIN acc_tax AS TAXA ON ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE =20= >> (TAXA.GENUS LIKE %s AND NOT COORDINATES.LATITUDE is NULL AND NOT =20 >> COORDINATES.LONGITUDE is NULL) ' with parameters: 'B%' >> </diagnostic> >> >> The error is that the parser does not consider the concepts =20 >> referenced in the isNull clause, not placing them in the FROM SQL =20 >> clause. >> >> Bye! >> >> milko >> >> On Nov 15, 2006, at 18:02 , Markus D=F6ring wrote: >> >>> Milko, >>> for programming it would be easier to have isNotNull. But we dont =20= >>> wanna change TAPIR and its really more consistent to NOT have it. >>> >>> So we gotta solve that. its a dbmod problem. >>> ive just tried with mysql5.0 and something like this works fine: >>> >>> SELECT * FROM taxon WHERE NOT synonyms IS NULL >>> >>> what version are you using? >>> can you try to do a simple statement like the above? >>> if it doesnt work, how about enclosing is null in brackets like =20 >>> this: >>> >>> SELECT * FROM taxon WHERE NOT (synonyms IS NULL) >>> >>> please let me know! >>> markus >>> >>> On 11/14/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: >>> I was looking at how TAPIR resolves the SQL syntax for selecting =20 >>> not null elements it does: >>> WHERE( NOT table.field IS NULL ) >>> the problem is that it is not the correct syntax, the correct one =20= >>> is: >>> WHERE( table.field IS NOT NULL ) >>> >>> Wouldn't it be easier to add "isNotNull" to the unary operators? >>> >> >> >> > > > Milko A. Skofic (IPGRI) > International Plant Genetic Resources Institute > Via dei Tre Denari, 472/a > 00057 Maccarese (RM) > ITALY > E-mail: m.s...@cg... > Tel: +30 06 6118286 > > > Milko A. Skofic (IPGRI) International Plant Genetic Resources Institute Via dei Tre Denari, 472/a 00057 Maccarese (RM) ITALY E-mail: m.s...@cg... Tel: +30 06 6118286 |
From: <wi...@go...> - 2006-11-16 00:14:21
|
alright, there is now a new config parameter cacheExpiration that is used for any webdownloaded cache file. if the file was cached before that time (in minutes), it is refreshed. by default its 60 minutes markus On 14.11.2006, at 17:23, Skofic A. Milko (IPGRI) wrote: When making changes to structure or mapping I have to always reset the cache (in the ConfigTool), if not TAPIR doesn't see any changes. Just to let you know. |
From: Skofic A. M. (IPGRI) <m.s...@cg...> - 2006-11-15 23:56:19
|
I think a count can be very useful, like getting the number of =20 elements conforming to some condition. Also, it can be useful to have =20= an idea of how many elements one must get, then use that number when =20 setting the secondary paging parameters. I agree that search is enough for now, that covers most of the needs. > The count operation is not available for use with biomoby. There is =20= > no way in TAPIR, apart of using XSLT on top of it, to modify the =20 > response dynamically of a search result that has the count set to =20 > true. Does this mean that in an output model you don't have access to the =20 response structure of a TAPIR result? for instance to this: <summary start=3D"0" totalReturned=3D"0" totalMatched=3D"25008" /> Thanks! Milko On Nov 16, 2006, at 0:39 , Javier de la Torre wrote: > Hi Milko, > > As you correctly said the moby2TapirFilterXslt just transform a =20 > biomoby message into a tapir filter, just the filter! not a full =20 > TAPIR request. Take a look at the XSLT, is pretty simple. > > As it is implemented right now the only operations that can be done =20= > is a search... > > I implemented it like because with search is the only operation =20 > that you can do dynamic outputmodels and the only thing that it is =20 > needed to trasnform is the filter. > > The count operation is not available for use with biomoby. There is =20= > no way in TAPIR, apart of using XSLT on top of it, to modify the =20 > response dynamically of a search result that has the count set to =20 > true. > > So, again, it is not possible to create biomoby services in =20 > pywrapper that uses a COUNT. What kind of services do you envision =20 > to do this? If you really need it then we can think about other =20 > possibilities but I dont know if this is necessary... > > Cheers. > > On 15/11/2006, at 19:50, Skofic A. Milko (IPGRI) wrote: > >> Javier, podr=EDas decirme cuando me podr=EDas dedicar un poco de =20 >> tiempo para comprender unas cosas de como implementas el MOBY? >> >> Te indico las cosas que no me son claras: >> >> El <moby2TapirFilterXslt> que hace exactamente, transforma el =20 >> input Moby mensaje en el filtro te b=FAsqueda TAPIR? Si eso es la =20 >> verdad, solamente se necessita crear la parte <filter> de la =20 >> b=FAsqueda, lo otro es automatico? >> >> Si yo quer=EDa hacer un MOBY service que me da el COUNT de cuantos =20= >> registros ha encontrado como puedo hacer? El problema es que esta =20 >> informaci=F3n me la devuelve el protocolo TAPIR, no el esquema que =20= >> se utiliza. >> >> Yo har=EDa esta query; >> >> <?xml version=3D'1.0' encoding=3D'UTF-8'?> >> <request> >> <header> >> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 >> pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> >> </header> >> <search count=3D'true' start=3D'0' limit=3D'0'> >> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 >> output/MCPD_EURISCO_1.00.xml"/> >> <filter> >> <like> >> <concept id=3D'GENUS@mcpd_eurisco_100' = /> >> <literal value=3D'B*' /> >> </like> >> </filter> >> <orderBy> >> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> >> </orderBy> >> </search> >> </request> >> >> Y TAPIR me devolver=EDa: >> >> <?xml version=3D"1.0" encoding=3D"utf-8"?> >> <response xmlns=3D"http://rs.tdwg.org/tapir/1.0"> >> <header> >> <source sendtime=3D"2006-11-15T19:26:50.57" accesspoint=3D"http://=20= >> tapir.grinfo.net:8080/pywrapper/pywrapper?dsa=3DEURISCO_TEST"> >> <software version=3D"2.1" name=3D"PyWrapper" /> >> </source> >> </header> >> <!-- CONTENT START --> >> <search> >> <summary start=3D"0" totalReturned=3D"0" totalMatched=3D"25008" = /> >> </search> >> <!-- CONTENT END --> >> <diagnostics></diagnostics> >> </response> >> >> Ent=F3nces tendr=EDa que hacer un output model con la estructura del =20= >> <response> mapeado a el MOBY type? >> >> Ciao! >> >> Milko > Milko A. Skofic (IPGRI) International Plant Genetic Resources Institute Via dei Tre Denari, 472/a 00057 Maccarese (RM) ITALY E-mail: m.s...@cg... Tel: +30 06 6118286 |
From: Javier de la T. <ja...@gm...> - 2006-11-15 23:39:59
|
Hi Milko, As you correctly said the moby2TapirFilterXslt just transform a =20 biomoby message into a tapir filter, just the filter! not a full =20 TAPIR request. Take a look at the XSLT, is pretty simple. As it is implemented right now the only operations that can be done =20 is a search... I implemented it like because with search is the only operation that =20 you can do dynamic outputmodels and the only thing that it is needed =20 to trasnform is the filter. The count operation is not available for use with biomoby. There is =20 no way in TAPIR, apart of using XSLT on top of it, to modify the =20 response dynamically of a search result that has the count set to true. So, again, it is not possible to create biomoby services in pywrapper =20= that uses a COUNT. What kind of services do you envision to do this? =20 If you really need it then we can think about other possibilities but =20= I dont know if this is necessary... Cheers. On 15/11/2006, at 19:50, Skofic A. Milko (IPGRI) wrote: > Javier, podr=EDas decirme cuando me podr=EDas dedicar un poco de = tiempo =20 > para comprender unas cosas de como implementas el MOBY? > > Te indico las cosas que no me son claras: > > El <moby2TapirFilterXslt> que hace exactamente, transforma el =20 > input Moby mensaje en el filtro te b=FAsqueda TAPIR? Si eso es la =20 > verdad, solamente se necessita crear la parte <filter> de la =20 > b=FAsqueda, lo otro es automatico? > > Si yo quer=EDa hacer un MOBY service que me da el COUNT de cuantos =20 > registros ha encontrado como puedo hacer? El problema es que esta =20 > informaci=F3n me la devuelve el protocolo TAPIR, no el esquema que se =20= > utiliza. > > Yo har=EDa esta query; > > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 > pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> > </header> > <search count=3D'true' start=3D'0' limit=3D'0'> > <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 > output/MCPD_EURISCO_1.00.xml"/> > <filter> > <like> > <concept id=3D'GENUS@mcpd_eurisco_100' = /> > <literal value=3D'B*' /> > </like> > </filter> > <orderBy> > <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> > </orderBy> > </search> > </request> > > Y TAPIR me devolver=EDa: > > <?xml version=3D"1.0" encoding=3D"utf-8"?> > <response xmlns=3D"http://rs.tdwg.org/tapir/1.0"> > <header> > <source sendtime=3D"2006-11-15T19:26:50.57" accesspoint=3D"http://=20= > tapir.grinfo.net:8080/pywrapper/pywrapper?dsa=3DEURISCO_TEST"> > <software version=3D"2.1" name=3D"PyWrapper" /> > </source> > </header> > <!-- CONTENT START --> > <search> > <summary start=3D"0" totalReturned=3D"0" totalMatched=3D"25008" /> > </search> > <!-- CONTENT END --> > <diagnostics></diagnostics> > </response> > > Ent=F3nces tendr=EDa que hacer un output model con la estructura del =20= > <response> mapeado a el MOBY type? > > Ciao! > > Milko |
From: Skofic A. M. (IPGRI) <m.s...@cg...> - 2006-11-15 23:14:51
|
If you try it on dsa=3DEURISCO_TEST it will not work <?xml version=3D'1.0' encoding=3D'UTF-8'?> <request> <header> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 pywrapper?dsa=3DEURISCO_TEST" sendtime=3D"2006-11-13T12:54:29.43"/> </header> <search count=3D'true' start=3D'0' limit=3D'50'> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 output/MCPD_EURISCO_1.00.xml"/> <filter> <and> <like> <concept = id=3D'GENUS@mcpd_eurisco_100' /> <literal value=3D'B*' /> </like> <not> <isNull> <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> </isNull> </not> <not> <isNull> <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> </isNull> </not> </and> </filter> <orderBy> <concept id=3D'INSTCODE@mcpd_eurisco_100' /> <concept id=3D'GENUS@mcpd_eurisco_100' /> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> </orderBy> </search> </request> It returns: <diagnostic code=3D"DBS_SQL_EXEC" time=3D"2006-11-16T00:14:13.41" =20 level=3D"error"> The following SQL statement produced a DB error: SELECT COUNT=20 (DISTINCT ACC.AccessionID) FROM acc AS ACC JOIN acc_tax AS TAXA ON =20 ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE (TAXA.GENUS LIKE %s AND NOT =20 COORDINATES.LATITUDE is NULL AND NOT COORDINATES.LONGITUDE is NULL) </diagnostic> On Nov 15, 2006, at 23:56 , Markus D=F6ring wrote: > well, the request you posted works too. > so where's the problem? > ___ > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 > pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> > </header> > <search count=3D'true' start=3D'0' limit=3D'50'> > <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 > output/MCPD_EURISCO_1.00.xml"/> > <filter> > <and> > <like> > <concept = id=3D'GENUS@mcpd_eurisco_100' /> > <literal value=3D'B*' /> > </like> > <not> > <isNull> > <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> > </isNull> > </not> > <not> > <isNull> > <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> > </isNull> > </not> > </and> > </filter> > <orderBy> > <concept id=3D'INSTCODE@mcpd_eurisco_100' /> > <concept id=3D'GENUS@mcpd_eurisco_100' /> > <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> > </orderBy> > </search> > </request> > --- > > markus > > > > > > > On 15.11.2006, at 23:17, Skofic A. Milko (IPGRI) wrote: > > I tried it in the training database and it works. > > You can try queries directly on my site, the address is > http://tapir.grinfo.net:8080/pywrapper > the passwords are all the default one. > > On Nov 15, 2006, at 22:38 , Markus D=F6ring wrote: > >> Milko, >> can you try this request with the training database? >> just paste it into the queryform and submit: >> ----- >> <?xml version=3D'1.0' encoding=3D'UTF-8'?> >> <request> >> <header> >> <source accesspoint=3D"http://localhost:8080/pywrapper/=20 >> pywrapper?dsa=3Dtraining" sendtime=3D"2006-11-15T22:29:30.26"/> >> </header> >> <search count=3D'true' start=3D'0' limit=3D'5'> >> <externalOutputModel = location=3D'http://rs.tdwg.org/tapir/cs/dwc2/=20 >> model/dwc2.xml'/> >> <filter> >> <not> >> <isNull> >> <concept = id=3D'http://digir.net/schema/conceptual/darwin/=20 >> 2003/1.0/ScientificName' /> >> </isNull> >> </not> >> </filter> >> </search> >> </request> >> ----- >> >> Does this work? >> If so, does the same request work with your datasource? >> well, it needs darwincore mappings, so if you got abcd mapped, try =20= >> this: >> >> ----- >> <?xml version=3D'1.0' encoding=3D'UTF-8'?> >> <request> >> <header> >> <source = accesspoint=3D"http://localhost:8080/pywrapper/pywrapper?=20 >> dsa=3Dtraining" sendtime=3D"2006-11-15T22:29:30.26"/> >> </header> >> <search count=3D'false' start=3D'0' limit=3D'5'> >> <externalOutputModel = location=3D"http://rs.tdwg.org/tapir/cs/=20 >> abcd2.06/model/abcd206.xml"/> >> <filter> >> <and> >> <not> >> <isNull> >> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 >> DataSet/Units/Unit/Identifications/Identification/Result/=20 >> TaxonIdentified/ScientificName/FullScientificNameString' /> >> </isNull> >> </not> >> <not> >> <isNull> >> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 >> DataSet/Units/Unit/UnitID' /> >> </isNull> >> </not> >> </and> >> </filter> >> <orderBy> >> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 >> DataSet/Units/Unit/Identifications/Identification/Result/=20 >> TaxonIdentified/ScientificName/FullScientificNameString' /> >> </orderBy> >> </search> >> </request> >> ----- >> >> for me this all works. >> cant find any problem anywhere. >> >> markus >> >> >> >> >> On 15.11.2006, at 20:31, Markus D=F6ring wrote: >> >> hmm. the training db works with NOT isNull. >> can you try that too please? >> I cant see anything wrong... >> m >> >> >> On 15.11.2006, at 19:23, Skofic A. Milko (IPGRI) wrote: >> >> OK: >> >> MySQL version 5.0.15 >> >> SELECT COUNT(*) FROM ACC WHERE NOT LATITUDE IS NULL AND NOT =20 >> LONGITUDE IS NULL >> returns 63603 records (correct) >> >> SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL ) AND NOT=20 >> ( LONGITUDE IS NULL ) >> returns 63603 records (correct) >> >> SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL AND LONGITUDE =20= >> IS NULL ) >> returns 66650 records >> >> SELECT COUNT(*) FROM ACC WHERE LATITUDE IS NOT NULL AND LONGITUDE =20 >> IS NOT NULL >> returns 63603 records (correct) >> >> SELECT COUNT(*) FROM ACC WHERE( (LATITUDE IS NOT NULL) AND =20 >> (LONGITUDE IS NOT NULL) ) >> returns 63603 records (correct) >> >> Parenthesis are not needed because I guess "LATITUDE IS NOT NULL" =20 >> is a unary expression, >> >> I am sending the following query: >> >> <?xml version=3D'1.0' encoding=3D'UTF-8'?> >> <request> >> <header> >> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 >> pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> >> </header> >> <search count=3D'true' start=3D'0' limit=3D'50'> >> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 >> output/MCPD_EURISCO_1.00.xml"/> >> <filter> >> <and> >> <like> >> <concept = id=3D'GENUS@mcpd_eurisco_100' /> >> <literal value=3D'B*' /> >> </like> >> <not> >> <isNull> >> <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> >> </isNull> >> </not> >> <not> >> <isNull> >> <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> >> </isNull> >> </not> >> </and> >> </filter> >> <orderBy> >> <concept id=3D'INSTCODE@mcpd_eurisco_100' /> >> <concept id=3D'GENUS@mcpd_eurisco_100' /> >> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> >> </orderBy> >> </search> >> </request> >> >> The returned result has an SQL error: >> >> <diagnostic time=3D"2006-11-15T19:06:11.47" level=3D"info"> >> Executing SQL: 'SELECT COUNT(DISTINCT ACC.AccessionID) FROM acc AS =20= >> ACC JOIN acc_tax AS TAXA ON ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE =20= >> (TAXA.GENUS LIKE %s AND NOT COORDINATES.LATITUDE is NULL AND NOT =20 >> COORDINATES.LONGITUDE is NULL) ' with parameters: 'B%' >> </diagnostic> >> >> The error is that the parser does not consider the concepts =20 >> referenced in the isNull clause, not placing them in the FROM SQL =20 >> clause. >> >> Bye! >> >> milko >> >> On Nov 15, 2006, at 18:02 , Markus D=F6ring wrote: >> >>> Milko, >>> for programming it would be easier to have isNotNull. But we dont =20= >>> wanna change TAPIR and its really more consistent to NOT have it. >>> >>> So we gotta solve that. its a dbmod problem. >>> ive just tried with mysql5.0 and something like this works fine: >>> >>> SELECT * FROM taxon WHERE NOT synonyms IS NULL >>> >>> what version are you using? >>> can you try to do a simple statement like the above? >>> if it doesnt work, how about enclosing is null in brackets like =20 >>> this: >>> >>> SELECT * FROM taxon WHERE NOT (synonyms IS NULL) >>> >>> please let me know! >>> markus >>> >>> On 11/14/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: >>> I was looking at how TAPIR resolves the SQL syntax for selecting =20 >>> not null elements it does: >>> WHERE( NOT table.field IS NULL ) >>> the problem is that it is not the correct syntax, the correct one =20= >>> is: >>> WHERE( table.field IS NOT NULL ) >>> >>> Wouldn't it be easier to add "isNotNull" to the unary operators? >>> >> >> >> > > > Milko A. Skofic (IPGRI) > International Plant Genetic Resources Institute > Via dei Tre Denari, 472/a > 00057 Maccarese (RM) > ITALY > E-mail: m.s...@cg... > Tel: +30 06 6118286 > > > Milko A. Skofic (IPGRI) International Plant Genetic Resources Institute Via dei Tre Denari, 472/a 00057 Maccarese (RM) ITALY E-mail: m.s...@cg... Tel: +30 06 6118286 |
From: <wi...@go...> - 2006-11-15 22:56:52
|
well, the request you posted works too. so where's the problem? ___ <?xml version=3D'1.0' encoding=3D'UTF-8'?> <request> <header> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> </header> <search count=3D'true' start=3D'0' limit=3D'50'> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 output/MCPD_EURISCO_1.00.xml"/> <filter> <and> <like> <concept = id=3D'GENUS@mcpd_eurisco_100' /> <literal value=3D'B*' /> </like> <not> <isNull> <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> </isNull> </not> <not> <isNull> <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> </isNull> </not> </and> </filter> <orderBy> <concept id=3D'INSTCODE@mcpd_eurisco_100' /> <concept id=3D'GENUS@mcpd_eurisco_100' /> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> </orderBy> </search> </request> --- markus On 15.11.2006, at 23:17, Skofic A. Milko (IPGRI) wrote: I tried it in the training database and it works. You can try queries directly on my site, the address is http://tapir.grinfo.net:8080/pywrapper the passwords are all the default one. On Nov 15, 2006, at 22:38 , Markus D=F6ring wrote: > Milko, > can you try this request with the training database? > just paste it into the queryform and submit: > ----- > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source = accesspoint=3D"http://localhost:8080/pywrapper/pywrapper?=20 > dsa=3Dtraining" sendtime=3D"2006-11-15T22:29:30.26"/> > </header> > <search count=3D'true' start=3D'0' limit=3D'5'> > <externalOutputModel = location=3D'http://rs.tdwg.org/tapir/cs/dwc2/=20 > model/dwc2.xml'/> > <filter> > <not> > <isNull> > <concept = id=3D'http://digir.net/schema/conceptual/darwin/2003/1.0/=20 > ScientificName' /> > </isNull> > </not> > </filter> > </search> > </request> > ----- > > Does this work? > If so, does the same request work with your datasource? > well, it needs darwincore mappings, so if you got abcd mapped, try =20 > this: > > ----- > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source = accesspoint=3D"http://localhost:8080/pywrapper/pywrapper?=20 > dsa=3Dtraining" sendtime=3D"2006-11-15T22:29:30.26"/> > </header> > <search count=3D'false' start=3D'0' limit=3D'5'> > <externalOutputModel = location=3D"http://rs.tdwg.org/tapir/cs/=20 > abcd2.06/model/abcd206.xml"/> > <filter> > <and> > <not> > <isNull> > <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 > DataSet/Units/Unit/Identifications/Identification/Result/=20 > TaxonIdentified/ScientificName/FullScientificNameString' /> > </isNull> > </not> > <not> > <isNull> > <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 > DataSet/Units/Unit/UnitID' /> > </isNull> > </not> > </and> > </filter> > <orderBy> > <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 > DataSet/Units/Unit/Identifications/Identification/Result/=20 > TaxonIdentified/ScientificName/FullScientificNameString' /> > </orderBy> > </search> > </request> > ----- > > for me this all works. > cant find any problem anywhere. > > markus > > > > > On 15.11.2006, at 20:31, Markus D=F6ring wrote: > > hmm. the training db works with NOT isNull. > can you try that too please? > I cant see anything wrong... > m > > > On 15.11.2006, at 19:23, Skofic A. Milko (IPGRI) wrote: > > OK: > > MySQL version 5.0.15 > > SELECT COUNT(*) FROM ACC WHERE NOT LATITUDE IS NULL AND NOT =20 > LONGITUDE IS NULL > returns 63603 records (correct) > > SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL ) AND NOT=20 > ( LONGITUDE IS NULL ) > returns 63603 records (correct) > > SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL AND LONGITUDE =20 > IS NULL ) > returns 66650 records > > SELECT COUNT(*) FROM ACC WHERE LATITUDE IS NOT NULL AND LONGITUDE =20 > IS NOT NULL > returns 63603 records (correct) > > SELECT COUNT(*) FROM ACC WHERE( (LATITUDE IS NOT NULL) AND =20 > (LONGITUDE IS NOT NULL) ) > returns 63603 records (correct) > > Parenthesis are not needed because I guess "LATITUDE IS NOT NULL" =20 > is a unary expression, > > I am sending the following query: > > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 > pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> > </header> > <search count=3D'true' start=3D'0' limit=3D'50'> > <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 > output/MCPD_EURISCO_1.00.xml"/> > <filter> > <and> > <like> > <concept = id=3D'GENUS@mcpd_eurisco_100' /> > <literal value=3D'B*' /> > </like> > <not> > <isNull> > <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> > </isNull> > </not> > <not> > <isNull> > <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> > </isNull> > </not> > </and> > </filter> > <orderBy> > <concept id=3D'INSTCODE@mcpd_eurisco_100' /> > <concept id=3D'GENUS@mcpd_eurisco_100' /> > <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> > </orderBy> > </search> > </request> > > The returned result has an SQL error: > > <diagnostic time=3D"2006-11-15T19:06:11.47" level=3D"info"> > Executing SQL: 'SELECT COUNT(DISTINCT ACC.AccessionID) FROM acc AS =20 > ACC JOIN acc_tax AS TAXA ON ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE =20= > (TAXA.GENUS LIKE %s AND NOT COORDINATES.LATITUDE is NULL AND NOT =20 > COORDINATES.LONGITUDE is NULL) ' with parameters: 'B%' > </diagnostic> > > The error is that the parser does not consider the concepts =20 > referenced in the isNull clause, not placing them in the FROM SQL =20 > clause. > > Bye! > > milko > > On Nov 15, 2006, at 18:02 , Markus D=F6ring wrote: > >> Milko, >> for programming it would be easier to have isNotNull. But we dont =20 >> wanna change TAPIR and its really more consistent to NOT have it. >> >> So we gotta solve that. its a dbmod problem. >> ive just tried with mysql5.0 and something like this works fine: >> >> SELECT * FROM taxon WHERE NOT synonyms IS NULL >> >> what version are you using? >> can you try to do a simple statement like the above? >> if it doesnt work, how about enclosing is null in brackets like this: >> >> SELECT * FROM taxon WHERE NOT (synonyms IS NULL) >> >> please let me know! >> markus >> >> On 11/14/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: >> I was looking at how TAPIR resolves the SQL syntax for selecting =20 >> not null elements it does: >> WHERE( NOT table.field IS NULL ) >> the problem is that it is not the correct syntax, the correct one is: >> WHERE( table.field IS NOT NULL ) >> >> Wouldn't it be easier to add "isNotNull" to the unary operators? >> > > > Milko A. Skofic (IPGRI) International Plant Genetic Resources Institute Via dei Tre Denari, 472/a 00057 Maccarese (RM) ITALY E-mail: m.s...@cg... Tel: +30 06 6118286 |
From: Skofic A. M. (IPGRI) <m.s...@cg...> - 2006-11-15 22:17:56
|
I tried it in the training database and it works. You can try queries directly on my site, the address is http://tapir.grinfo.net:8080/pywrapper the passwords are all the default one. On Nov 15, 2006, at 22:38 , Markus D=F6ring wrote: > Milko, > can you try this request with the training database? > just paste it into the queryform and submit: > ----- > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source = accesspoint=3D"http://localhost:8080/pywrapper/pywrapper?=20 > dsa=3Dtraining" sendtime=3D"2006-11-15T22:29:30.26"/> > </header> > <search count=3D'true' start=3D'0' limit=3D'5'> > <externalOutputModel = location=3D'http://rs.tdwg.org/tapir/cs/dwc2/=20 > model/dwc2.xml'/> > <filter> > <not> > <isNull> > <concept = id=3D'http://digir.net/schema/conceptual/darwin/2003/1.0/=20 > ScientificName' /> > </isNull> > </not> > </filter> > </search> > </request> > ----- > > Does this work? > If so, does the same request work with your datasource? > well, it needs darwincore mappings, so if you got abcd mapped, try =20 > this: > > ----- > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source = accesspoint=3D"http://localhost:8080/pywrapper/pywrapper?=20 > dsa=3Dtraining" sendtime=3D"2006-11-15T22:29:30.26"/> > </header> > <search count=3D'false' start=3D'0' limit=3D'5'> > <externalOutputModel = location=3D"http://rs.tdwg.org/tapir/cs/=20 > abcd2.06/model/abcd206.xml"/> > <filter> > <and> > <not> > <isNull> > <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 > DataSet/Units/Unit/Identifications/Identification/Result/=20 > TaxonIdentified/ScientificName/FullScientificNameString' /> > </isNull> > </not> > <not> > <isNull> > <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 > DataSet/Units/Unit/UnitID' /> > </isNull> > </not> > </and> > </filter> > <orderBy> > <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 > DataSet/Units/Unit/Identifications/Identification/Result/=20 > TaxonIdentified/ScientificName/FullScientificNameString' /> > </orderBy> > </search> > </request> > ----- > > for me this all works. > cant find any problem anywhere. > > markus > > > > > On 15.11.2006, at 20:31, Markus D=F6ring wrote: > > hmm. the training db works with NOT isNull. > can you try that too please? > I cant see anything wrong... > m > > > On 15.11.2006, at 19:23, Skofic A. Milko (IPGRI) wrote: > > OK: > > MySQL version 5.0.15 > > SELECT COUNT(*) FROM ACC WHERE NOT LATITUDE IS NULL AND NOT =20 > LONGITUDE IS NULL > returns 63603 records (correct) > > SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL ) AND NOT=20 > ( LONGITUDE IS NULL ) > returns 63603 records (correct) > > SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL AND LONGITUDE =20 > IS NULL ) > returns 66650 records > > SELECT COUNT(*) FROM ACC WHERE LATITUDE IS NOT NULL AND LONGITUDE =20 > IS NOT NULL > returns 63603 records (correct) > > SELECT COUNT(*) FROM ACC WHERE( (LATITUDE IS NOT NULL) AND =20 > (LONGITUDE IS NOT NULL) ) > returns 63603 records (correct) > > Parenthesis are not needed because I guess "LATITUDE IS NOT NULL" =20 > is a unary expression, > > I am sending the following query: > > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 > pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> > </header> > <search count=3D'true' start=3D'0' limit=3D'50'> > <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 > output/MCPD_EURISCO_1.00.xml"/> > <filter> > <and> > <like> > <concept = id=3D'GENUS@mcpd_eurisco_100' /> > <literal value=3D'B*' /> > </like> > <not> > <isNull> > <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> > </isNull> > </not> > <not> > <isNull> > <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> > </isNull> > </not> > </and> > </filter> > <orderBy> > <concept id=3D'INSTCODE@mcpd_eurisco_100' /> > <concept id=3D'GENUS@mcpd_eurisco_100' /> > <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> > </orderBy> > </search> > </request> > > The returned result has an SQL error: > > <diagnostic time=3D"2006-11-15T19:06:11.47" level=3D"info"> > Executing SQL: 'SELECT COUNT(DISTINCT ACC.AccessionID) FROM acc AS =20 > ACC JOIN acc_tax AS TAXA ON ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE =20= > (TAXA.GENUS LIKE %s AND NOT COORDINATES.LATITUDE is NULL AND NOT =20 > COORDINATES.LONGITUDE is NULL) ' with parameters: 'B%' > </diagnostic> > > The error is that the parser does not consider the concepts =20 > referenced in the isNull clause, not placing them in the FROM SQL =20 > clause. > > Bye! > > milko > > On Nov 15, 2006, at 18:02 , Markus D=F6ring wrote: > >> Milko, >> for programming it would be easier to have isNotNull. But we dont =20 >> wanna change TAPIR and its really more consistent to NOT have it. >> >> So we gotta solve that. its a dbmod problem. >> ive just tried with mysql5.0 and something like this works fine: >> >> SELECT * FROM taxon WHERE NOT synonyms IS NULL >> >> what version are you using? >> can you try to do a simple statement like the above? >> if it doesnt work, how about enclosing is null in brackets like this: >> >> SELECT * FROM taxon WHERE NOT (synonyms IS NULL) >> >> please let me know! >> markus >> >> On 11/14/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: >> I was looking at how TAPIR resolves the SQL syntax for selecting =20 >> not null elements it does: >> WHERE( NOT table.field IS NULL ) >> the problem is that it is not the correct syntax, the correct one is: >> WHERE( table.field IS NOT NULL ) >> >> Wouldn't it be easier to add "isNotNull" to the unary operators? >> > > > Milko A. Skofic (IPGRI) International Plant Genetic Resources Institute Via dei Tre Denari, 472/a 00057 Maccarese (RM) ITALY E-mail: m.s...@cg... Tel: +30 06 6118286 |
From: Skofic A. M. (IPGRI) <m.s...@cg...> - 2006-11-15 22:02:29
|
I tried this query with the three data sources in my TAPIR http://=20 tapir.grinfo.net:8080/pywrapper <?xml version=3D'1.0' encoding=3D'UTF-8'?> <request> <header> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 pywrapper?dsa=3Dtraining" sendtime=3D"2006-11-15T19:26:50.57"/> </header> <search count=3D'true' start=3D'0' limit=3D'50'> <externalOutputModel = location=3D"http://rs.tdwg.org/tapir/cs/abcd2.06/=20 model/abcd206.xml"/> <filter> <and> <like> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 DataSet/Units/Unit/Identifications/Identification/Result/=20 TaxonIdentified/ScientificName/FullScientificNameString' /> <literal value=3D'B*' /> </like> <not> <isNull> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 DataSet/Units/Unit/Gathering/SiteCoordinateSets/SiteCoordinates/=20 CoordinatesLatLong/LatitudeDecimal' /> </isNull> </not> <not> <isNull> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 DataSet/Units/Unit/Gathering/SiteCoordinateSets/SiteCoordinates/=20 CoordinatesLatLong/LongitudeeDecimal' /> </isNull> </not> </and> </filter> <orderBy> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 DataSet/Units/Unit/Identifications/Identification/Result/=20 TaxonIdentified/ScientificName/FullScientificNameString' /> </orderBy> </search> </request> The query works with training and EURISCO, but it doesn't work with =20 EURISCO_TEST. This is because in EURISCO, and I suspect in training, =20 the latitude and longitude are in the root table, in EURISCO_TEST =20 they are in a separate table. On Nov 15, 2006, at 20:31 , Markus D=F6ring wrote: > hmm. the training db works with NOT isNull. > can you try that too please? > I cant see anything wrong... > m > > > On 15.11.2006, at 19:23, Skofic A. Milko (IPGRI) wrote: > > OK: > > MySQL version 5.0.15 > > SELECT COUNT(*) FROM ACC WHERE NOT LATITUDE IS NULL AND NOT =20 > LONGITUDE IS NULL > returns 63603 records (correct) > > SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL ) AND NOT=20 > ( LONGITUDE IS NULL ) > returns 63603 records (correct) > > SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL AND LONGITUDE =20 > IS NULL ) > returns 66650 records > > SELECT COUNT(*) FROM ACC WHERE LATITUDE IS NOT NULL AND LONGITUDE =20 > IS NOT NULL > returns 63603 records (correct) > > SELECT COUNT(*) FROM ACC WHERE( (LATITUDE IS NOT NULL) AND =20 > (LONGITUDE IS NOT NULL) ) > returns 63603 records (correct) > > Parenthesis are not needed because I guess "LATITUDE IS NOT NULL" =20 > is a unary expression, > > I am sending the following query: > > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 > pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> > </header> > <search count=3D'true' start=3D'0' limit=3D'50'> > <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 > output/MCPD_EURISCO_1.00.xml"/> > <filter> > <and> > <like> > <concept = id=3D'GENUS@mcpd_eurisco_100' /> > <literal value=3D'B*' /> > </like> > <not> > <isNull> > <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> > </isNull> > </not> > <not> > <isNull> > <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> > </isNull> > </not> > </and> > </filter> > <orderBy> > <concept id=3D'INSTCODE@mcpd_eurisco_100' /> > <concept id=3D'GENUS@mcpd_eurisco_100' /> > <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> > </orderBy> > </search> > </request> > > The returned result has an SQL error: > > <diagnostic time=3D"2006-11-15T19:06:11.47" level=3D"info"> > Executing SQL: 'SELECT COUNT(DISTINCT ACC.AccessionID) FROM acc AS =20 > ACC JOIN acc_tax AS TAXA ON ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE =20= > (TAXA.GENUS LIKE %s AND NOT COORDINATES.LATITUDE is NULL AND NOT =20 > COORDINATES.LONGITUDE is NULL) ' with parameters: 'B%' > </diagnostic> > > The error is that the parser does not consider the concepts =20 > referenced in the isNull clause, not placing them in the FROM SQL =20 > clause. > > Bye! > > milko > > On Nov 15, 2006, at 18:02 , Markus D=F6ring wrote: > >> Milko, >> for programming it would be easier to have isNotNull. But we dont =20 >> wanna change TAPIR and its really more consistent to NOT have it. >> >> So we gotta solve that. its a dbmod problem. >> ive just tried with mysql5.0 and something like this works fine: >> >> SELECT * FROM taxon WHERE NOT synonyms IS NULL >> >> what version are you using? >> can you try to do a simple statement like the above? >> if it doesnt work, how about enclosing is null in brackets like this: >> >> SELECT * FROM taxon WHERE NOT (synonyms IS NULL) >> >> please let me know! >> markus >> >> On 11/14/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: >> I was looking at how TAPIR resolves the SQL syntax for selecting =20 >> not null elements it does: >> WHERE( NOT table.field IS NULL ) >> the problem is that it is not the correct syntax, the correct one is: >> WHERE( table.field IS NOT NULL ) >> >> Wouldn't it be easier to add "isNotNull" to the unary operators? >> > > Milko A. Skofic (IPGRI) International Plant Genetic Resources Institute Via dei Tre Denari, 472/a 00057 Maccarese (RM) ITALY E-mail: m.s...@cg... Tel: +30 06 6118286 |
From: <mar...@go...> - 2006-11-15 21:38:55
|
Milko, can you try this request with the training database? just paste it into the queryform and submit: ----- <?xml version=3D'1.0' encoding=3D'UTF-8'?> <request> <header> <source = accesspoint=3D"http://localhost:8080/pywrapper/pywrapper?=20 dsa=3Dtraining" sendtime=3D"2006-11-15T22:29:30.26"/> </header> <search count=3D'true' start=3D'0' limit=3D'5'> <externalOutputModel = location=3D'http://rs.tdwg.org/tapir/cs/dwc2/=20 model/dwc2.xml'/> <filter> <not> <isNull> <concept = id=3D'http://digir.net/schema/conceptual/darwin/2003/1.0/=20 ScientificName' /> </isNull> </not> </filter> </search> </request> ----- Does this work? If so, does the same request work with your datasource? well, it needs darwincore mappings, so if you got abcd mapped, try this: ----- <?xml version=3D'1.0' encoding=3D'UTF-8'?> <request> <header> <source = accesspoint=3D"http://localhost:8080/pywrapper/pywrapper?=20 dsa=3Dtraining" sendtime=3D"2006-11-15T22:29:30.26"/> </header> <search count=3D'false' start=3D'0' limit=3D'5'> <externalOutputModel = location=3D"http://rs.tdwg.org/tapir/cs/abcd2.06/=20 model/abcd206.xml"/> <filter> <and> <not> <isNull> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 DataSet/Units/Unit/Identifications/Identification/Result/=20 TaxonIdentified/ScientificName/FullScientificNameString' /> </isNull> </not> <not> <isNull> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 DataSet/Units/Unit/UnitID' /> </isNull> </not> </and> </filter> <orderBy> <concept = id=3D'http://www.tdwg.org/schemas/abcd/2.06/DataSets/=20 DataSet/Units/Unit/Identifications/Identification/Result/=20 TaxonIdentified/ScientificName/FullScientificNameString' /> </orderBy> </search> </request> ----- for me this all works. cant find any problem anywhere. markus On 15.11.2006, at 20:31, Markus D=F6ring wrote: hmm. the training db works with NOT isNull. can you try that too please? I cant see anything wrong... m On 15.11.2006, at 19:23, Skofic A. Milko (IPGRI) wrote: OK: MySQL version 5.0.15 SELECT COUNT(*) FROM ACC WHERE NOT LATITUDE IS NULL AND NOT LONGITUDE =20= IS NULL returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL ) AND NOT=20 ( LONGITUDE IS NULL ) returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL AND LONGITUDE IS =20= NULL ) returns 66650 records SELECT COUNT(*) FROM ACC WHERE LATITUDE IS NOT NULL AND LONGITUDE IS =20 NOT NULL returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE( (LATITUDE IS NOT NULL) AND (LONGITUDE =20= IS NOT NULL) ) returns 63603 records (correct) Parenthesis are not needed because I guess "LATITUDE IS NOT NULL" is =20 a unary expression, I am sending the following query: <?xml version=3D'1.0' encoding=3D'UTF-8'?> <request> <header> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> </header> <search count=3D'true' start=3D'0' limit=3D'50'> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 output/MCPD_EURISCO_1.00.xml"/> <filter> <and> <like> <concept = id=3D'GENUS@mcpd_eurisco_100' /> <literal value=3D'B*' /> </like> <not> <isNull> <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> </isNull> </not> <not> <isNull> <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> </isNull> </not> </and> </filter> <orderBy> <concept id=3D'INSTCODE@mcpd_eurisco_100' /> <concept id=3D'GENUS@mcpd_eurisco_100' /> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> </orderBy> </search> </request> The returned result has an SQL error: <diagnostic time=3D"2006-11-15T19:06:11.47" level=3D"info"> Executing SQL: 'SELECT COUNT(DISTINCT ACC.AccessionID) FROM acc AS =20 ACC JOIN acc_tax AS TAXA ON ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE =20 (TAXA.GENUS LIKE %s AND NOT COORDINATES.LATITUDE is NULL AND NOT =20 COORDINATES.LONGITUDE is NULL) ' with parameters: 'B%' </diagnostic> The error is that the parser does not consider the concepts =20 referenced in the isNull clause, not placing them in the FROM SQL =20 clause. Bye! milko On Nov 15, 2006, at 18:02 , Markus D=F6ring wrote: > Milko, > for programming it would be easier to have isNotNull. But we dont =20 > wanna change TAPIR and its really more consistent to NOT have it. > > So we gotta solve that. its a dbmod problem. > ive just tried with mysql5.0 and something like this works fine: > > SELECT * FROM taxon WHERE NOT synonyms IS NULL > > what version are you using? > can you try to do a simple statement like the above? > if it doesnt work, how about enclosing is null in brackets like this: > > SELECT * FROM taxon WHERE NOT (synonyms IS NULL) > > please let me know! > markus > > On 11/14/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: > I was looking at how TAPIR resolves the SQL syntax for selecting =20 > not null elements it does: > WHERE( NOT table.field IS NULL ) > the problem is that it is not the correct syntax, the correct one is: > WHERE( table.field IS NOT NULL ) > > Wouldn't it be easier to add "isNotNull" to the unary operators? > |
From: <wi...@go...> - 2006-11-15 19:31:54
|
hmm. the training db works with NOT isNull. can you try that too please? I cant see anything wrong... m On 15.11.2006, at 19:23, Skofic A. Milko (IPGRI) wrote: OK: MySQL version 5.0.15 SELECT COUNT(*) FROM ACC WHERE NOT LATITUDE IS NULL AND NOT LONGITUDE =20= IS NULL returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL ) AND NOT=20 ( LONGITUDE IS NULL ) returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL AND LONGITUDE IS =20= NULL ) returns 66650 records SELECT COUNT(*) FROM ACC WHERE LATITUDE IS NOT NULL AND LONGITUDE IS =20 NOT NULL returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE( (LATITUDE IS NOT NULL) AND (LONGITUDE =20= IS NOT NULL) ) returns 63603 records (correct) Parenthesis are not needed because I guess "LATITUDE IS NOT NULL" is =20 a unary expression, I am sending the following query: <?xml version=3D'1.0' encoding=3D'UTF-8'?> <request> <header> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> </header> <search count=3D'true' start=3D'0' limit=3D'50'> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 output/MCPD_EURISCO_1.00.xml"/> <filter> <and> <like> <concept = id=3D'GENUS@mcpd_eurisco_100' /> <literal value=3D'B*' /> </like> <not> <isNull> <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> </isNull> </not> <not> <isNull> <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> </isNull> </not> </and> </filter> <orderBy> <concept id=3D'INSTCODE@mcpd_eurisco_100' /> <concept id=3D'GENUS@mcpd_eurisco_100' /> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> </orderBy> </search> </request> The returned result has an SQL error: <diagnostic time=3D"2006-11-15T19:06:11.47" level=3D"info"> Executing SQL: 'SELECT COUNT(DISTINCT ACC.AccessionID) FROM acc AS =20 ACC JOIN acc_tax AS TAXA ON ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE =20 (TAXA.GENUS LIKE %s AND NOT COORDINATES.LATITUDE is NULL AND NOT =20 COORDINATES.LONGITUDE is NULL) ' with parameters: 'B%' </diagnostic> The error is that the parser does not consider the concepts =20 referenced in the isNull clause, not placing them in the FROM SQL =20 clause. Bye! milko On Nov 15, 2006, at 18:02 , Markus D=F6ring wrote: > Milko, > for programming it would be easier to have isNotNull. But we dont =20 > wanna change TAPIR and its really more consistent to NOT have it. > > So we gotta solve that. its a dbmod problem. > ive just tried with mysql5.0 and something like this works fine: > > SELECT * FROM taxon WHERE NOT synonyms IS NULL > > what version are you using? > can you try to do a simple statement like the above? > if it doesnt work, how about enclosing is null in brackets like this: > > SELECT * FROM taxon WHERE NOT (synonyms IS NULL) > > please let me know! > markus > > On 11/14/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: > I was looking at how TAPIR resolves the SQL syntax for selecting =20 > not null elements it does: > WHERE( NOT table.field IS NULL ) > the problem is that it is not the correct syntax, the correct one is: > WHERE( table.field IS NOT NULL ) > > Wouldn't it be easier to add "isNotNull" to the unary operators? > |
From: <wi...@go...> - 2006-11-15 19:18:58
|
ah, ok. so its not about the is null syntax but that its not being =20 considered for the FROM clause. thats a completely different thing. shouldnt be hard... m On 15.11.2006, at 19:23, Skofic A. Milko (IPGRI) wrote: OK: MySQL version 5.0.15 SELECT COUNT(*) FROM ACC WHERE NOT LATITUDE IS NULL AND NOT LONGITUDE =20= IS NULL returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL ) AND NOT=20 ( LONGITUDE IS NULL ) returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL AND LONGITUDE IS =20= NULL ) returns 66650 records SELECT COUNT(*) FROM ACC WHERE LATITUDE IS NOT NULL AND LONGITUDE IS =20 NOT NULL returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE( (LATITUDE IS NOT NULL) AND (LONGITUDE =20= IS NOT NULL) ) returns 63603 records (correct) Parenthesis are not needed because I guess "LATITUDE IS NOT NULL" is =20 a unary expression, I am sending the following query: <?xml version=3D'1.0' encoding=3D'UTF-8'?> <request> <header> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> </header> <search count=3D'true' start=3D'0' limit=3D'50'> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 output/MCPD_EURISCO_1.00.xml"/> <filter> <and> <like> <concept = id=3D'GENUS@mcpd_eurisco_100' /> <literal value=3D'B*' /> </like> <not> <isNull> <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> </isNull> </not> <not> <isNull> <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> </isNull> </not> </and> </filter> <orderBy> <concept id=3D'INSTCODE@mcpd_eurisco_100' /> <concept id=3D'GENUS@mcpd_eurisco_100' /> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> </orderBy> </search> </request> The returned result has an SQL error: <diagnostic time=3D"2006-11-15T19:06:11.47" level=3D"info"> Executing SQL: 'SELECT COUNT(DISTINCT ACC.AccessionID) FROM acc AS =20 ACC JOIN acc_tax AS TAXA ON ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE =20 (TAXA.GENUS LIKE %s AND NOT COORDINATES.LATITUDE is NULL AND NOT =20 COORDINATES.LONGITUDE is NULL) ' with parameters: 'B%' </diagnostic> The error is that the parser does not consider the concepts =20 referenced in the isNull clause, not placing them in the FROM SQL =20 clause. Bye! milko On Nov 15, 2006, at 18:02 , Markus D=F6ring wrote: > Milko, > for programming it would be easier to have isNotNull. But we dont =20 > wanna change TAPIR and its really more consistent to NOT have it. > > So we gotta solve that. its a dbmod problem. > ive just tried with mysql5.0 and something like this works fine: > > SELECT * FROM taxon WHERE NOT synonyms IS NULL > > what version are you using? > can you try to do a simple statement like the above? > if it doesnt work, how about enclosing is null in brackets like this: > > SELECT * FROM taxon WHERE NOT (synonyms IS NULL) > > please let me know! > markus > > On 11/14/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: > I was looking at how TAPIR resolves the SQL syntax for selecting =20 > not null elements it does: > WHERE( NOT table.field IS NULL ) > the problem is that it is not the correct syntax, the correct one is: > WHERE( table.field IS NOT NULL ) > > Wouldn't it be easier to add "isNotNull" to the unary operators? > |
From: Skofic A. M. (IPGRI) <m.s...@cg...> - 2006-11-15 18:24:08
|
OK: MySQL version 5.0.15 SELECT COUNT(*) FROM ACC WHERE NOT LATITUDE IS NULL AND NOT LONGITUDE =20= IS NULL returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL ) AND NOT=20 ( LONGITUDE IS NULL ) returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE NOT( LATITUDE IS NULL AND LONGITUDE IS =20= NULL ) returns 66650 records SELECT COUNT(*) FROM ACC WHERE LATITUDE IS NOT NULL AND LONGITUDE IS =20 NOT NULL returns 63603 records (correct) SELECT COUNT(*) FROM ACC WHERE( (LATITUDE IS NOT NULL) AND (LONGITUDE =20= IS NOT NULL) ) returns 63603 records (correct) Parenthesis are not needed because I guess "LATITUDE IS NOT NULL" is =20 a unary expression, I am sending the following query: <?xml version=3D'1.0' encoding=3D'UTF-8'?> <request> <header> <source = accesspoint=3D"http://tapir.grinfo.net:8080/pywrapper/=20 pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> </header> <search count=3D'true' start=3D'0' limit=3D'50'> <externalOutputModel = location=3D"http://eurisco.ecpgr.org/models/=20 output/MCPD_EURISCO_1.00.xml"/> <filter> <and> <like> <concept = id=3D'GENUS@mcpd_eurisco_100' /> <literal value=3D'B*' /> </like> <not> <isNull> <concept = id=3D'LATITUDED@mcpd_eurisco_100' /> </isNull> </not> <not> <isNull> <concept = id=3D'LONGITUDED@mcpd_eurisco_100' /> </isNull> </not> </and> </filter> <orderBy> <concept id=3D'INSTCODE@mcpd_eurisco_100' /> <concept id=3D'GENUS@mcpd_eurisco_100' /> <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> </orderBy> </search> </request> The returned result has an SQL error: <diagnostic time=3D"2006-11-15T19:06:11.47" level=3D"info"> Executing SQL: 'SELECT COUNT(DISTINCT ACC.AccessionID) FROM acc AS =20 ACC JOIN acc_tax AS TAXA ON ACC.TaxonomyID =3D TAXA.TaxonomyID WHERE =20 (TAXA.GENUS LIKE %s AND NOT COORDINATES.LATITUDE is NULL AND NOT =20 COORDINATES.LONGITUDE is NULL) ' with parameters: 'B%' </diagnostic> The error is that the parser does not consider the concepts =20 referenced in the isNull clause, not placing them in the FROM SQL =20 clause. Bye! milko On Nov 15, 2006, at 18:02 , Markus D=F6ring wrote: > Milko, > for programming it would be easier to have isNotNull. But we dont =20 > wanna change TAPIR and its really more consistent to NOT have it. > > So we gotta solve that. its a dbmod problem. > ive just tried with mysql5.0 and something like this works fine: > > SELECT * FROM taxon WHERE NOT synonyms IS NULL > > what version are you using? > can you try to do a simple statement like the above? > if it doesnt work, how about enclosing is null in brackets like this: > > SELECT * FROM taxon WHERE NOT (synonyms IS NULL) > > please let me know! > markus > > On 11/14/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: > I was looking at how TAPIR resolves the SQL syntax for selecting =20 > not null elements it does: > WHERE( NOT table.field IS NULL ) > the problem is that it is not the correct syntax, the correct one is: > WHERE( table.field IS NOT NULL ) > > Wouldn't it be easier to add "isNotNull" to the unary operators? > |
From: Peter B. <p.w...@re...> - 2006-11-15 17:28:35
|
Humm.... The problem must be our dreaded proxy server as I checked out PyWrapper fine on my laptop from outside the University last week. I've set all the normal proxy settings in the svn servers file but still no luck. Could it be because the PyWrapper SVN server is running on port 80? Has anyone else checked out successfully from behind a proxy? In the mean time I'll continue googling... Peter Döring, Markus wrote: > Peter, > I am able to commit and update. > The server is running by a commercial host in the US by the way. > > Are you trying to checkout? > Did you try this: > %> svn co svn://svn.pywrapper.org:80/pywrapper/trunk pywrapper > > Http is unfortunately not supported by this SVN, so make sure you use the svn protocol. > > Markus > > > > >> -----Original Message----- >> From: pyw...@li... >> [mailto:pyw...@li...] On >> Behalf Of Peter Brewer >> Sent: Mittwoch, 15. November 2006 16:13 >> To: PyWrapper Developers mailing list >> Subject: [PyWrapper-devel] SVN Server >> >> >> I'm having problems connecting to the SVN server. Can anyone >> confirm if >> the server is up/down? >> >> Regards >> >> Peter >> >> -------------------------------------------------------------- >> ----------- >> Take Surveys. Earn Cash. Influence the Future of IT >> Join SourceForge.net's Techsay panel and you'll get the >> chance to share your opinions on IT & business topics through >> brief surveys - and earn cash >> http://www.techsay.com/default.php?page=join.php&p=sourceforge >> > &CID=DEVDEV > _______________________________________________ > PyWrapper-devel mailing list PyW...@li... > https://lists.sourceforge.net/lists/listinfo/pywrapper-devel > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > PyWrapper-devel mailing list > PyW...@li... > https://lists.sourceforge.net/lists/listinfo/pywrapper-devel > |
From: <wi...@go...> - 2006-11-15 17:02:50
|
Milko, for programming it would be easier to have isNotNull. But we dont wanna change TAPIR and its really more consistent to NOT have it. So we gotta solve that. its a dbmod problem. ive just tried with mysql5.0 and something like this works fine: SELECT * FROM taxon WHERE NOT synonyms IS NULL what version are you using? can you try to do a simple statement like the above? if it doesnt work, how about enclosing is null in brackets like this: SELECT * FROM taxon WHERE NOT (synonyms IS NULL) please let me know! markus On 11/14/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: > > I was looking at how TAPIR resolves the SQL syntax for selecting not nullelements it does:WHERE( > *NOT* table.field IS NULL ) > the problem is that it is not the correct syntax, the correct one is: > WHERE( table.field IS *NOT* NULL ) > > Wouldn't it be easier to add "isNotNull" to the unary operators? > |
From: <m.d...@BG...> - 2006-11-15 16:27:17
|
Peter, I am able to commit and update.=20 The server is running by a commercial host in the US by the way. Are you trying to checkout?=20 Did you try this: %> svn co svn://svn.pywrapper.org:80/pywrapper/trunk pywrapper Http is unfortunately not supported by this SVN, so make sure you use = the svn protocol. Markus > -----Original Message----- > From: pyw...@li...=20 > [mailto:pyw...@li...] On=20 > Behalf Of Peter Brewer > Sent: Mittwoch, 15. November 2006 16:13 > To: PyWrapper Developers mailing list > Subject: [PyWrapper-devel] SVN Server >=20 >=20 > I'm having problems connecting to the SVN server. Can anyone=20 > confirm if=20 > the server is up/down? >=20 > Regards >=20 > Peter >=20 > -------------------------------------------------------------- > ----------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the=20 > chance to share your opinions on IT & business topics through=20 > brief surveys - and earn cash=20 > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge &CID=3DDEVDEV _______________________________________________ PyWrapper-devel mailing list PyW...@li... https://lists.sourceforge.net/lists/listinfo/pywrapper-devel |
From: Peter B. <p.w...@re...> - 2006-11-15 15:12:44
|
I'm having problems connecting to the SVN server. Can anyone confirm if the server is up/down? Regards Peter |
From: <wi...@go...> - 2006-11-14 10:01:23
|
just quick: - just ot avoid confusion. the root"table" is a root Alias! - not available I am working on. it means the following: for a given model pywrapper analyses the mappings and comes up with a list of aliases used fo= r the IndexingRecord. If this list includes the preferred alias, it uses this to build the tablealias tree from, otherwise just picks one randomly. So no= t available means your alias is not usable for a record definition. otherwise a single datasource would only be allowed to represent one kind of object. = a specimen with identifications could also serve taxon data in theory for example - with a different root alias. we maybe should have avoided this in TAPIR, but its like this now. - pywrapper tries to reduce the list of available aliases. This gives bette= r performance. For example if a metadata table and a specimen table both are found to be used as root aliases, but the specimen table contains a FK to metadata, pywrapper knows it can ignore the metadata table, cause its ID will depend on the specimen ID. I gotta check this routine again to be sure it makes sense. And: in the configtools mapping pane (overview) there is now a section that lists all shared models if there are any configured. Together with the number of dontrepeats, the preferred and required root alias. Markus On 11/14/06, Skofic A. Milko (IPGRI) <M.S...@cg...> wrote: > > OK I added the preferredRootTable to the preferences and it sees it > alright, except that it says it cannot use it: > <diagnostic time=3D"2006-11-14T09:44:05.92" level=3D"warn"> > Preferred root alias 'ACC' not available. Use alias 'ACC_STORAGE' out > of [u'ACC_STORAGE'] > </diagnostic> > > What does "not available" mean? If you want to try for yourself the > address is: > http://tapir.grinfo.net:8080/pywrapper > the passwords are the usual ACDC, the data source is EURISCO and the > query I use is: > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source accesspoint=3D" > http://tapir.grinfo.net:8080/pywrapper/ > pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-13T12:54:29.43"/> > </header> > <search count=3D'true' start=3D'0' limit=3D'50'> > <externalOutputModel location=3D" > http://eurisco.ecpgr.org/schemas/ > MCPD_EURISCO_1.00.xml"/> > <filter> > <like> > <concept id=3D'GENUS@mcpd_eurisco_100' /> > <literal value=3D'B*' /> > </like> > </filter> > <orderBy> > <concept id=3D'INSTCODE@mcpd_eurisco_100' /> > <concept id=3D'GENUS@mcpd_eurisco_100' /> > <concept id=3D'ACCENUMB@mcpd_eurisco_100' /> > </orderBy> > </search> > </request> > > Hope it helps! > > Milko > > P.S. Shouldn't the preferredRootTable be set in the structure pane, > like it was with BioCASE? > > > On Nov 13, 2006, at 23:57 , Markus D=F6ring wrote: > > > alright. > > looks as if it works. can you try milko? > > m > > > > > > On 13.11.2006, at 23:43, Markus D=F6ring wrote: > > > > ahh man. > > its close to work but not yet. but I removed the serious error with > > models. you can update now, but the preferred root alias selection > > doesnt yet work fully. > > the idea is that you can assign a preferred root alias in the > > dsa_prefs for a shared model. but it will only be used if the alias > > is one of the potential ones. Otherwise you can also assign a > > "requiredRootAlias" which is always added to the root alias list no > > matter what. but that still doesnt work... > > > > heres what it look likes in the prefs: > > > > <model location=3D"http://rs.tdwg.org/tapir/cs/abcd2.06/model/ > > abcd206.xml" preferredRootAlias=3D"herbariumsheets"> > > > > good night gringos, > > markus > > > > > > > > On 13.11.2006, at 21:41, Javier de la Torre wrote: > > > > Thats the biocase way by the way. > > > > We will not be able to solve this problem at the TAPIR level > > without a more complete mapping... the idea of being able to map > > tables, or kind of objects, to the XML tree will solve that... but > > thats TAPIR 1.5 > > > > Cheers. > > > > On 13/11/2006, at 18:54, Markus D=F6ring wrote: > > > >> for fixed models we could surely cheat that way. assign a root > >> table that HAS to be used first. > >> should be the easiest (still requires some hours Id suspect). > >> markus > >> > >> > >> On 13.11.2006, at 18:17, Skofic A. Milko (IPGRI) wrote: > >> > >> I finally fixed the alias file: the strange thing is that the > >> TAPIR schema parser gave something like: > >> > >> NICODE http:// > >> www.ipgri.org/schemas/mcpd_eurisco/1.00::NICODE > >> INSTCODE http:// > >> www.ipgri.org/schemas/mcpd_eurisco/1.00::INSTCODE > >> ACCENUMB http:// > >> www.ipgri.org/schemas/mcpd_eurisco/1.00::ACCENUMB > >> > >> but it's OK, once one gets the feel for the alias file you can do > >> it by hand... except if you have a schema like ABCD... -:) > >> > >>> comment #1: try not to use :: in the full concepts but make them > >>> look like a simple URL. for example http://www.ipgri.org/schemas/ > >>> mcpd_eurisco/1.00/NICODE > >> I now have this form: > >> http://www.ipgri.org/schemas/mcpd_eurisco/1.00/Accessions/ > >> Accession/NICODE > >> > >>> commen #3: the idea is that the server CANNOT start up with > >>> conflicting or broken alias files. this shoulkd be fixed before. > >>> dont you agree with that? otherwise you could get unforseen weird > >>> results. > >> I agree, alias files are usually not going to be managed by users, > >> so this error is not too problematic. > >> > >> Now, regarding the structure, I did a bunch of tests, I managed to > >> create an output model from ABCD to EURISCO and it works. The only > >> problem is trying to use directly the EURISCO model. EURISCO has > >> ACC as the main table, but ACC is linked to other tables with > >> repeating values, although no required field is in these tables. > >> > >> When I try to query and look at the SQL it produces, it uses the > >> repeating tables as the origin of the joins, which is correct if > >> you translate the database graph into a tree, but there must be > >> some way to indicate that the root of the joins is ACC, not the > >> other tables. > >> > >> After some testing I realised that when you clear the cache files > >> from the ConfigTool, it doesn't cleat the http cache files, so I > >> could make any change in the schema and it would not be reflected > >> in TAPIR. > >> > >> So, let me know if you have some ideas about the structure problem > >> we have, there should be some way to indicate or force the main > >> table (Table A, in this case) to be the root of the tree. > >> > >> Thanks! > >> > >> Milko > >> > >> > >> On Nov 13, 2006, at 16:25 , Markus D=F6ring wrote: > >> > >>> Milko, > >>> > >>> comment #1: try not to use :: in the full concepts but make them > >>> look like a simple URL. for example http://www.ipgri.org/schemas/ > >>> mcpd_eurisco/1.00/NICODE > >>> > >>> comment #2: the error says: "biocase.CNS.NonUniqueConceptError". > >>> so it looks as if the aliases or qualified names are not unique. > >>> check. another problem could be that the alias.txt should have > >>> "=3D" between an alias and the qualified concept. But I think its > >>> not required. > >>> > >>> commen #3: the idea is that the server CANNOT start up with > >>> conflicting or broken alias files. this shoulkd be fixed before. > >>> dont you agree with that? otherwise you could get unforseen weird > >>> results. > >>> > >>> markus > >>> > >>> > >>> On 11/13/06, Skofic A. Milko (IPGRI) <M.S...@cg...> wrote: > >>> Hi guys, I am trying to create an alias file to use other schemas > >>> and test mapping and output models. I have created a schema, run > >>> it through TAPIR's schema parser and tried to set up another > >>> concept server. > >>> > >>> I get an error whenever I startup TAPIR, and I am sure it has to > >>> do with the alias file and its other related files. > >>> The error is: > >>> > >>> Traceback (most recent call last): > >>> File "../webapp/start_server.py", line 56, in ? > >>> import root, page > >>> File "/Library/WebServer/Services/pywrapper/webapp/root.py", > >>> line 17, in ? > >>> import page, biocase.configuration > >>> File "/Library/WebServer/Services/pywrapper/webapp/page.py", > >>> line 24, in ? > >>> class Page(object): > >>> File "/Library/WebServer/Services/pywrapper/webapp/page.py", > >>> line 26, in Page > >>> _dsaObjDict =3D biocase.pywrapper.datasource_factory.getDsaDict() > >>> File "/Library/WebServer/Services/pywrapper/lib/biocase/ > >>> pywrapper/datasource_factory.py", line 49, in getDsaDict > >>> dsaObj.readPrefsFile () > >>> File "/Library/WebServer/Services/pywrapper/lib/biocase/ > >>> pywrapper/datasource.py", line 218, in readPrefsFile > >>> parse(filename, handler) > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/site-packages/_xmlplus/sax/__init__.py", line 31, in parse > >>> parser.parse(filename_or_stream) > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/site-packages/_xmlplus/sax/expatreader.py", line 109, > >>> in parse > >>> xmlreader.IncrementalParser.parse(self, source) > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/site-packages/_xmlplus/sax/xmlreader.py", line 123, in > >>> parse > >>> self.feed(buffer) > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/site-packages/_xmlplus/sax/expatreader.py", line 216, > >>> in feed > >>> self._parser.Parse(data, isFinal) > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/site-packages/_xmlplus/sax/expatreader.py", line 312, > >>> in start_element > >>> self._cont_handler.startElement(name, AttributesImpl(attrs)) > >>> File "/Library/WebServer/Services/pywrapper/lib/biocase/ > >>> pywrapper/datasource_handler.py", line 73, in startElement > >>> self._lastConceptObj =3D buildConceptFromAttrs(attrs, > >>> ns=3Dself._lastSchemaNS) > >>> File "/Library/WebServer/Services/pywrapper/lib/biocase/ > >>> pywrapper/filter/concept.py", line 215, in buildConceptFromAttrs > >>> conceptObj =3D buildConcept(qname, ns) > >>> File "/Library/WebServer/Services/pywrapper/lib/biocase/ > >>> pywrapper/filter/concept.py", line 239, in buildConcept > >>> CNServer =3D createCNServer > >>> (aliasList=3DcfgObj.ConceptNameServer.AliasList, > >>> cachedir=3DcfgObj.cacheLocator) > >>> File "/Library/WebServer/Services/pywrapper/lib/biocase/ > >>> CNS.py", line 433, in createCNServer > >>> CNS.addAliasLocation(alias) > >>> File "/Library/WebServer/Services/pywrapper/lib/biocase/ > >>> CNS.py", line 168, in addAliasLocation > >>> self._read(fh) > >>> File "/Library/WebServer/Services/pywrapper/lib/biocase/ > >>> CNS.py", line 241, in _read > >>> self.addConcept( c, additionalAliases=3D[] ) > >>> File "/Library/WebServer/Services/pywrapper/lib/biocase/ > >>> CNS.py", line 346, in addConcept > >>> raise NonUniqueConcept(conceptObj) > >>> biocase.CNS.NonUniqueConceptError in atexit._run_exitfuncs: > >>> Traceback (most recent call last): > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/atexit.py", line 24, in _run_exitfuncs > >>> func(*targs, **kargs) > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/logging/__init__.py", line 1333, in shutdown > >>> h.close() > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/logging/__init__.py", line 674, in close > >>> del _handlers[self] > >>> KeyError: <logging.StreamHandler instance at 0x1385418> > >>> Error in sys.exitfunc: > >>> Traceback (most recent call last): > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/atexit.py", line 24, in _run_exitfuncs > >>> func(*targs, **kargs) > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/logging/__init__.py", line 1333, in shutdown > >>> h.close() > >>> File "/Library/WebServer/Services/pywrapper/tools/python/lib/ > >>> python2.4/logging/__init__.py", line 674, in close > >>> del _handlers[self] > >>> KeyError: <logging.StreamHandler instance at 0x1385418> > >>> > >>> This listing comes from the terminal. I am sure I did something > >>> wrong with the files, however it should not crash like this. > >>> Anyways here are the files: > >>> > >>> The alias file is at http://eurisco.ecpgr.org/schemas/alias.txt > >>> The schema file is at: http://eurisco.ecpgr.org/schemas/ > >>> MCPD_EURISCO_1.00.xsd > >>> And the model file is at: http://eurisco.ecpgr.org/schemas/ > >>> MCPD_EURISCO_1.00.xml > >>> > >>> I have now removed the reference to that alias file so the system > >>> can work. > >>> Looking at the alias file I see a strange syntax: is that > >>> correct? I only changed the label, alias and added the models > >>> section. > >>> > >>> Thanks! > >>> > >>> Milko > >>> > >> > >> > > > > > > > > |
From: Javier de la T. <ja...@gm...> - 2006-11-13 21:36:08
|
Thats really cool! I can not go for it, but I think this is definitely a great way of =20 improving pywrapper. Thanks Donald for this. For you information there is also an open call from TDWG for meetings =20= or projects related to TDWG standards, including TAPIR. The problem =20 is that the deadline is this wednesday... I didnt have time to pay =20 attention to this but I think a TAPIR developers meeting makes a lot =20 of sense... Who is interesting in joining us for this? Javi. On 13/11/2006, at 14:44, D=F6ring, Markus wrote: > FYI > > If anyone is interested in this, > please go ahead with the application! > > > -----Original Message----- > From: dh...@gb... [mailto:dh...@gb...] > Sent: Freitag, 10. November 2006 12:24 > To: All users > Cc: dh...@gb... > Subject: Call: Taxonomic Data Provider Tool Developer > > > Call: Taxonomic Data Provider Tool Developer > -------------------------------------------- > > GBIF is seeking to simplify the integration of data relating to > nomenclature (scientific names) and taxonomy (classification of > organisms using scientific names) by developing tools to connect such > data more easily to the GBIF network. > > GBIF is addressing this issue in several ways: > > 1. Working with the Species 2000 & ITIS Catalogue of Life partnership > (http://www.sp2000.org/) to promote the development of a network of > global species databases > 2. Enhancing the GBIF data portal (http://www.gbif.net/) to index > nomenclatural and taxonomic resources served over the web as > tab-delimited data sets > 3. Developing a data provider tool based on TDWG (http://=20 > www.tdwg.org/) > data standards to support dynamic query of nomenclatural and taxonomic > data sets over the web (more complex for data providers than 2. above, > but offering a search interface) > > GBIF is seeking the services of a software developer to develop the =20= > data > provider tool (item 3 above). > > The tool should have the following features: > > 1. Relational database (two version of same model in Access and MySQL) > corresponding to TDWG Taxon Concept Schema (TCS) v. 1.01 > (http://www.tdwg.org/subgroups/tnc/tcs-schema-repository/) > 2. Customised provider tool using either the Python implementation > (pyWrapper, http://trac.pywrapper.org/) or the PHP implementation > (forthcoming) of the TAPIR protocol, with five endpoints =20 > configured, one > for each class of data obect in TCS (Specimen, Publication, TaxonName, > TaxonConcept, TaxonRelationshipAssertion) > 3. Customisation of TAPIR configuration interfaces as required 4. =20 > Interface to import tab-delimited file formats adopted by GBIF (see > item 2, above) into the TCS relational database > > The developer should have the following skills: > > 1. Experience in web development using PHP or Python. > 2. Experience in modeling data structures using a relational database > (specifically MySQL and/or Access) > 3. Familiarity with TAPIR or one of the earlier TDWG data access > protocols (DiGIR, http://digir.sourceforge.net/, or BioCASe, > http://www.biocase.org/products/protocols/index.shtml) > 4. Ability to plan and organise development work > > Familarity with the TDWG Taxon Concept Schema and general =20 > understanding > of the principles of nomenclature and taxonomy will be an advantage. > > The GBIF Secretariat expects to place a contract for a period of > approximately four months' work. > > How to apply > ------------ > > Interested applicants should send the following by e-mail to Donald > Hobern, GBIF Deputy Director for Informatics (dh...@gb...) by 30 > November 2006: > > 1. Curriculum vitae > 2. Description of relevant experience and skills > 3. Details on availability > 4. Expected remuneration > > ------------------------------------------------------------ > Donald Hobern (dh...@gb...) > Deputy Director for Informatics > Global Biodiversity Information Facility Secretariat =20 > Universitetsparken 15, DK-2100 Copenhagen, Denmark > Tel: +45-35321483 Mobile: +45-28751483 Fax: +45-35321480 > ------------------------------------------------------------ > > ----------------------------------------------------------------------=20= > --- > Using Tomcat but need to do more? Need to support web services, =20 > security? > Get stuff done quickly with pre-integrated technology to make your =20 > job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache =20 > Geronimo > http://sel.as-us.falkag.net/sel?=20 > cmd=3Dlnk&kid=3D120709&bid=3D263057&dat=3D121642 > _______________________________________________ > PyWrapper-devel mailing list > PyW...@li... > https://lists.sourceforge.net/lists/listinfo/pywrapper-devel |
From: <wi...@go...> - 2006-11-13 20:01:31
|
From: "Skofic A. Milko (IPGRI)" <M.S...@cg...> Subject: Re: Use of aliases Just tried, it works! On Nov 10, 2006, at 17:37 , Markus D=F6ring wrote: > the aliases use the form CONCEPT_ALIAS@NS_ALIAS so > > FullScientificName@abcd206 > > not sure if they work in xml requests; i think they should. > m > > > > On 11/10/06, Skofic A. Milko (IPGRI) < M.S...@cg...> wrote: > A short question: i saw that I can use aliases in the query =20 > parameters instead of full IDs I tried this: > > <?xml version=3D'1.0' encoding=3D'UTF-8'?> > <request> > <header> > <source accesspoint=3D" http://tapir.grinfo.net:8080/pywrapper/=20 > pywrapper?dsa=3DEURISCO" sendtime=3D"2006-11-10T14:41:31.03"/> > </header> > <search count=3D'true' start=3D'0' limit=3D'50'> > <externalOutputModel location=3D" http://rs.tdwg.org/tapir/cs/=20 > abcd2.06/model/abcd206.xml"/> > <filter> > <like> > <concept path=3D'abcd206:/FullScientificName' /> > <literal value=3D'B*' /> > </like> > </filter> > </search> > </request> > > But it says: > > <diagnostic time=3D"2006-11-10T14:55:46.27" level=3D"info"> > Datasource does not contain concept abcd206:/FullScientificName > </diagnostic> > > Did I do anything wrong? I took the alias by searching for the ID =20 > in the alias file. > > Thanks. > |
From: <mar...@go...> - 2006-11-13 19:33:49
|
well, not without parsing the model. but if you only want the count without anything else just set limit=0, thats the trick! m On 11/10/06, Skofic A. Milko (IPGRI) <m.s...@cg...> wrote: Just a short question: in BioCASE you could send a count request in a query, it would not return records but just the count; in TAPIR the count attribute is in the search element, is there any form of invoking the count without TAPIR parsing the output model? Thanks again. |