From: Keith F. <Kei...@pn...> - 2009-03-19 23:25:53
|
I¹ve got several thousand pages that we imported into our MediaWiki that each contain a Location¹ property of type string. We would like to be able to use the Google geocoder to lookup the coordinates of that property, and then use those coordinates to display the locations using the SemanticGoogleMaps extension. All of this within an ask query. The issue is that SemanticGoogleMaps is looking for a property of type Geographic coordinate¹ and we don¹t have that information in our imported documents. If there were some way to generate that property on the fly during the ask query, and feed it into the map, it would save us the trouble of having to process, and reimport the data. It seems like someone must have butt up against the problem in the past, we just can¹t find any reference to a solution. Does anyone have any idea of how we might be able to get this done? Thanks for any help, - Keith |
From: Thomas F. <tho...@gm...> - 2009-03-20 12:28:31
|
hey keith, first, things to look at: http://www.mediawiki.org/wiki/Extension:Google_Geocoder http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses There are two ways to do it - if your imported data is displayed using a template, you can create the geographic coordinate property by adding to the template something like [[Has coordinate::{{{Street Address}}}]] (or if it's separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, {{{State}}}]] etc. -- wait for everything to refresh and your data should now have a property. the more "on the fly" way of doing it (from the site above) - "{{#semantic_google_map:{{#geocode:{{{Street address}}}, {{{City}}}, {{{State}}}, {{{Country}}}}}}}" I'm not sure if there is a way to geocode q 2009/3/19 Keith Fligg <Kei...@pn...> > I’ve got several thousand pages that we imported into our MediaWiki that > each contain a ‘Location’ property of type string. We would like to be able > to use the Google geocoder to lookup the coordinates of that property, and > then use those coordinates to display the locations using the > SemanticGoogleMaps extension. All of this within an ask query. > > The issue is that SemanticGoogleMaps is looking for a property of type > ‘Geographic coordinate’ and we don’t have that information in our imported > documents. If there were some way to generate that property on the fly > during the ask query, and feed it into the map, it would save us the trouble > of having to process, and reimport the data. > > It seems like someone must have butt up against the problem in the past, we > just can’t find any reference to a solution. Does anyone have any idea of > how we might be able to get this done? > > Thanks for any help, > > - Keith > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |
From: Thomas F. <tho...@gm...> - 2009-03-20 12:31:00
|
Oops: I'm not sure if there is a way to geocode through an ask query (e.g., geocode a list of results on the fly). If someone has an idea on how to do this, I'd be interested! The way I understand to do it is the first method of adding the property. Hope this helps a little -tom On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows <tho...@gm...>wrote: > hey keith, > first, things to look at: > > http://www.mediawiki.org/wiki/Extension:Google_Geocoder > > http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses > > There are two ways to do it - if your imported data is displayed using a > template, you can create the geographic coordinate property by adding to the > template something like [[Has coordinate::{{{Street Address}}}]] (or if it's > separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, {{{State}}}]] > etc. -- wait for everything to refresh and your data should now have a > property. > > the more "on the fly" way of doing it (from the site above) - "{{#semantic_google_map:{{#geocode:{{{Street > address}}}, {{{City}}}, {{{State}}}, {{{Country}}}}}}}" > > > I'm not sure if there is a way to geocode q > > > 2009/3/19 Keith Fligg <Kei...@pn...> > >> I’ve got several thousand pages that we imported into our MediaWiki that >> each contain a ‘Location’ property of type string. We would like to be able >> to use the Google geocoder to lookup the coordinates of that property, and >> then use those coordinates to display the locations using the >> SemanticGoogleMaps extension. All of this within an ask query. >> >> The issue is that SemanticGoogleMaps is looking for a property of type >> ‘Geographic coordinate’ and we don’t have that information in our imported >> documents. If there were some way to generate that property on the fly >> during the ask query, and feed it into the map, it would save us the trouble >> of having to process, and reimport the data. >> >> It seems like someone must have butt up against the problem in the past, >> we just can’t find any reference to a solution. Does anyone have any idea >> of how we might be able to get this done? >> >> Thanks for any help, >> >> - Keith >> >> >> ------------------------------------------------------------------------------ >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >> software that enables intelligent coding and step-through debugging. >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> _______________________________________________ >> Semediawiki-user mailing list >> Sem...@li... >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >> > |
From: Sergey C. <ser...@gm...> - 2009-03-20 21:05:42
|
I would not recommend to do it on the fly simply because you don't want to run requests to Google service every time some data in the query changes - it's better to just simply augment pages with coordinates in your original documents, after all, if address didn't change, coordinates didn't either, right? Sergey -- Sergey Chernyshev http://www.sergeychernyshev.com/ 2009/3/20 Thomas Fellows <tho...@gm...> > Oops: > I'm not sure if there is a way to geocode through an ask query (e.g., > geocode a list of results on the fly). If someone has an idea on how to do > this, I'd be interested! The way I understand to do it is the first method > of adding the property. > > Hope this helps a little > > -tom > > On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows <tho...@gm...>wrote: > >> hey keith, >> first, things to look at: >> >> http://www.mediawiki.org/wiki/Extension:Google_Geocoder >> >> http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses >> >> There are two ways to do it - if your imported data is displayed using a >> template, you can create the geographic coordinate property by adding to the >> template something like [[Has coordinate::{{{Street Address}}}]] (or if it's >> separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, {{{State}}}]] >> etc. -- wait for everything to refresh and your data should now have a >> property. >> >> the more "on the fly" way of doing it (from the site above) - "{{#semantic_google_map:{{#geocode:{{{Street >> address}}}, {{{City}}}, {{{State}}}, {{{Country}}}}}}}" >> >> >> I'm not sure if there is a way to geocode q >> >> >> 2009/3/19 Keith Fligg <Kei...@pn...> >> >>> I’ve got several thousand pages that we imported into our MediaWiki >>> that each contain a ‘Location’ property of type string. We would like to be >>> able to use the Google geocoder to lookup the coordinates of that property, >>> and then use those coordinates to display the locations using the >>> SemanticGoogleMaps extension. All of this within an ask query. >>> >>> The issue is that SemanticGoogleMaps is looking for a property of type >>> ‘Geographic coordinate’ and we don’t have that information in our imported >>> documents. If there were some way to generate that property on the fly >>> during the ask query, and feed it into the map, it would save us the trouble >>> of having to process, and reimport the data. >>> >>> It seems like someone must have butt up against the problem in the past, >>> we just can’t find any reference to a solution. Does anyone have any idea >>> of how we might be able to get this done? >>> >>> Thanks for any help, >>> >>> - Keith >>> >>> >>> ------------------------------------------------------------------------------ >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based >>> development >>> software that enables intelligent coding and step-through debugging. >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>> _______________________________________________ >>> Semediawiki-user mailing list >>> Sem...@li... >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>> >>> >> > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |
From: Keith F. <Kei...@pn...> - 2009-03-20 21:12:06
|
Agreed, it wouldn¹t be courteous to request the data from Google multiple times for the same location. I guess what I was hoping for was a means of acquiring the lat/lng from Google if it was missing, and then turning it into a Property of the appropriate type, and then storing the property with the original record. Then subsequent attempts to map the record would use the (stored) property. On 3/20/09 2:05 PM, "Sergey Chernyshev" <ser...@gm...> wrote: > I would not recommend to do it on the fly simply because you don't want to run > requests to Google service every time some data in the query changes - it's > better to just simply augment pages with coordinates in your original > documents, after all, if address didn't change, coordinates didn't either, > right? > > Sergey > > > -- > Sergey Chernyshev > http://www.sergeychernyshev.com/ > > > 2009/3/20 Thomas Fellows <tho...@gm...> >> Oops: >> >> I'm not sure if there is a way to geocode through an ask query (e.g., geocode >> a list of results on the fly). If someone has an idea on how to do this, I'd >> be interested! The way I understand to do it is the first method of adding >> the property. >> >> Hope this helps a little >> >> -tom >> >> On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows <tho...@gm...> >> wrote: >>> hey keith, >>> >>> first, things to look at: >>> >>> http://www.mediawiki.org/wiki/Extension:Google_Geocoder >>> http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addre >>> sses >>> >>> There are two ways to do it - if your imported data is displayed using a >>> template, you can create the geographic coordinate property by adding to the >>> template something like [[Has coordinate::{{{Street Address}}}]] (or if it's >>> separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, {{{State}}}]] >>> etc. -- wait for everything to refresh and your data should now have a >>> property. >>> >>> the more "on the fly" way of doing it (from the site above) - >>> "{{#semantic_google_map:{{#geocode:{{{Street address}}}, {{{City}}}, >>> {{{State}}}, {{{Country}}}}}}}" >>> >>> >>> I'm not sure if there is a way to geocode q >>> >>> >>> 2009/3/19 Keith Fligg <Kei...@pn...> >>>> I¹ve got several thousand pages that we imported into our MediaWiki that >>>> each contain a Location¹ property of type string. We would like to be >>>> able to use the Google geocoder to lookup the coordinates of that property, >>>> and then use those coordinates to display the locations using the >>>> SemanticGoogleMaps extension. All of this within an ask query. >>>> >>>> The issue is that SemanticGoogleMaps is looking for a property of type >>>> Geographic coordinate¹ and we don¹t have that information in our imported >>>> documents. If there were some way to generate that property on the fly >>>> during the ask query, and feed it into the map, it would save us the >>>> trouble of having to process, and reimport the data. >>>> >>>> It seems like someone must have butt up against the problem in the past, we >>>> just can¹t find any reference to a solution. Does anyone have any idea of >>>> how we might be able to get this done? >>>> >>>> Thanks for any help, >>>> >>>> - Keith >>>> >>>> --------------------------------------------------------------------------- >>>> --- >>>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >>>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >>>> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >>>> software that enables intelligent coding and step-through debugging. >>>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>>> _______________________________________________ >>>> Semediawiki-user mailing list >>>> Sem...@li... >>>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>>> >>> >> >> >> ----------------------------------------------------------------------------->> - >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >> software that enables intelligent coding and step-through debugging. >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> _______________________________________________ >> Semediawiki-user mailing list >> Sem...@li... >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> > > |
From: Thomas F. <tho...@gm...> - 2009-03-20 21:21:57
|
I definitely agree -- you also want to make sure you don't break Google's API policy - which I believe limits Geocoding addresses to X number (if you're not paying them) before they blacklist you. I was talking with Yaron, and I believe the best way to do this would be to have the geocode extension do something similar to a template substitution - where once you ping google once for the coordinates, the {{#geocode:}} tag goes away after the first time and gets replcaed with the actual coordinates - because as mentioned before - the geocoordinates aren't changing! Anyone want to take a stab at this- or know of any extensions (tag/parser) that replace themselves with text after hitting save? -tom p.s. - i wonder if {{SUBS:#geocode:...}} works (or whatever the syntax is for template subs) On Fri, Mar 20, 2009 at 5:11 PM, Keith Fligg <Kei...@pn...> wrote: > Agreed, it wouldn’t be courteous to request the data from Google multiple > times for the same location. I guess what I was hoping for was a means of > acquiring the lat/lng from Google if it was missing, and then turning it > into a Property of the appropriate type, and then storing the property with > the original record. Then subsequent attempts to map the record would use > the (stored) property. > > > > On 3/20/09 2:05 PM, "Sergey Chernyshev" <ser...@gm...> > wrote: > > I would not recommend to do it on the fly simply because you don't want to > run requests to Google service every time some data in the query changes - > it's better to just simply augment pages with coordinates in your original > documents, after all, if address didn't change, coordinates didn't either, > right? > > Sergey > > > -- > Sergey Chernyshev > http://www.sergeychernyshev.com/ > > > 2009/3/20 Thomas Fellows <tho...@gm...> > > Oops: > > I'm not sure if there is a way to geocode through an ask query (e.g., > geocode a list of results on the fly). If someone has an idea on how to do > this, I'd be interested! The way I understand to do it is the first method > of adding the property. > > Hope this helps a little > > -tom > > On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows <tho...@gm...> > wrote: > > hey keith, > > first, things to look at: > > http://www.mediawiki.org/wiki/Extension:Google_Geocoder > > http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses > > There are two ways to do it - if your imported data is displayed using a > template, you can create the geographic coordinate property by adding to the > template something like [[Has coordinate::{{{Street Address}}}]] (or if it's > separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, {{{State}}}]] > etc. -- wait for everything to refresh and your data should now have a > property. > > the more "on the fly" way of doing it (from the site above) - "{{#semantic_google_map:{{#geocode:{{{Street > address}}}, {{{City}}}, {{{State}}}, {{{Country}}}}}}}" > > > I'm not sure if there is a way to geocode q > > > 2009/3/19 Keith Fligg <Kei...@pn...> > > I’ve got several thousand pages that we imported into our MediaWiki that > each contain a ‘Location’ property of type string. We would like to be able > to use the Google geocoder to lookup the coordinates of that property, and > then use those coordinates to display the locations using the > SemanticGoogleMaps extension. All of this within an ask query. > > The issue is that SemanticGoogleMaps is looking for a property of type > ‘Geographic coordinate’ and we don’t have that information in our imported > documents. If there were some way to generate that property on the fly > during the ask query, and feed it into the map, it would save us the trouble > of having to process, and reimport the data. > > It seems like someone must have butt up against the problem in the past, we > just can’t find any reference to a solution. Does anyone have any idea of > how we might be able to get this done? > > Thanks for any help, > > - Keith > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > > > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > > > |
From: Sergey C. <ser...@gm...> - 2009-03-22 06:02:11
|
Yes, {{subst:#geocode:Moscow, Russia}} works fine. Sergey On Fri, Mar 20, 2009 at 5:21 PM, Thomas Fellows <tho...@gm...>wrote: > I definitely agree -- you also want to make sure you don't break Google's > API policy - which I believe limits Geocoding addresses to X number (if > you're not paying them) before they blacklist you. I was talking with > Yaron, and I believe the best way to do this would be to have the geocode > extension do something similar to a template substitution - where once you > ping google once for the coordinates, the {{#geocode:}} tag goes away after > the first time and gets replcaed with the actual coordinates - because as > mentioned before - the geocoordinates aren't changing! > Anyone want to take a stab at this- or know of any extensions (tag/parser) > that replace themselves with text after hitting save? > > -tom > > p.s. - i wonder if {{SUBS:#geocode:...}} works (or whatever the syntax is > for template subs) > > > On Fri, Mar 20, 2009 at 5:11 PM, Keith Fligg <Kei...@pn...> wrote: > >> Agreed, it wouldn’t be courteous to request the data from Google >> multiple times for the same location. I guess what I was hoping for was a >> means of acquiring the lat/lng from Google if it was missing, and then >> turning it into a Property of the appropriate type, and then storing the >> property with the original record. Then subsequent attempts to map the >> record would use the (stored) property. >> >> >> >> On 3/20/09 2:05 PM, "Sergey Chernyshev" <ser...@gm...> >> wrote: >> >> I would not recommend to do it on the fly simply because you don't want to >> run requests to Google service every time some data in the query changes - >> it's better to just simply augment pages with coordinates in your original >> documents, after all, if address didn't change, coordinates didn't either, >> right? >> >> Sergey >> >> >> -- >> Sergey Chernyshev >> http://www.sergeychernyshev.com/ >> >> >> 2009/3/20 Thomas Fellows <tho...@gm...> >> >> Oops: >> >> I'm not sure if there is a way to geocode through an ask query (e.g., >> geocode a list of results on the fly). If someone has an idea on how to do >> this, I'd be interested! The way I understand to do it is the first method >> of adding the property. >> >> Hope this helps a little >> >> -tom >> >> On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows <tho...@gm...> >> wrote: >> >> hey keith, >> >> first, things to look at: >> >> http://www.mediawiki.org/wiki/Extension:Google_Geocoder >> >> http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses >> >> There are two ways to do it - if your imported data is displayed using a >> template, you can create the geographic coordinate property by adding to the >> template something like [[Has coordinate::{{{Street Address}}}]] (or if it's >> separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, {{{State}}}]] >> etc. -- wait for everything to refresh and your data should now have a >> property. >> >> the more "on the fly" way of doing it (from the site above) - "{{#semantic_google_map:{{#geocode:{{{Street >> address}}}, {{{City}}}, {{{State}}}, {{{Country}}}}}}}" >> >> >> I'm not sure if there is a way to geocode q >> >> >> 2009/3/19 Keith Fligg <Kei...@pn...> >> >> I’ve got several thousand pages that we imported into our MediaWiki that >> each contain a ‘Location’ property of type string. We would like to be able >> to use the Google geocoder to lookup the coordinates of that property, and >> then use those coordinates to display the locations using the >> SemanticGoogleMaps extension. All of this within an ask query. >> >> The issue is that SemanticGoogleMaps is looking for a property of type >> ‘Geographic coordinate’ and we don’t have that information in our imported >> documents. If there were some way to generate that property on the fly >> during the ask query, and feed it into the map, it would save us the trouble >> of having to process, and reimport the data. >> >> It seems like someone must have butt up against the problem in the past, >> we just can’t find any reference to a solution. Does anyone have any idea >> of how we might be able to get this done? >> >> Thanks for any help, >> >> - Keith >> >> >> ------------------------------------------------------------------------------ >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >> software that enables intelligent coding and step-through debugging. >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> _______________________________________________ >> Semediawiki-user mailing list >> Sem...@li... >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >> >> >> >> >> ------------------------------------------------------------------------------ >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >> software that enables intelligent coding and step-through debugging. >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> _______________________________________________ >> Semediawiki-user mailing list >> Sem...@li... >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >> >> >> > |
From: Yaron K. <ya...@gm...> - 2009-03-23 04:13:52
|
This is quite a thorny problem: trying to do some kind of automated insertion within wiki pages - I don't believe there's any functionality like it now. On the other hand, it would be quite a useful feature to have, since that Google Maps geocoding limit is a real problem, and renders the #geocode function nearly useless for large sites that use templates. I've been thinking about this problem, and I think I've found a reasonable solution, but first let me go through what I think won't work: - a parser function within a template - some kind of "#place_geocode_here" function that, wherever it was called from a template, placed the actual coordinate value in the page calling the template. Problems: I'm not sure that this is technically possible, and even if it were, it could only help with pages that were created or resaved after the function was added to the template; it won't do anything for pages previously created. Similarly, if you change that call in the template, the template can't go around modifying all the pages that call it. - in a form - you could imagine a new field parameter like "geocode on fields=", that took the names of other fields (like "geocode on fields=street address, city, country"), and placed the geocoded value in the resulting page. Problems:* *same as before - I don't know if it's technically possible, and it doesn't handle pages created before that geocoding was added. - directly in a page - as Sergey noted in a separate thread, you could tell users to add a #subst call within pages when they create them. Problems: not doable within a form, too complicated for users in any case. So that leaves what I think is the best solution: a command-line script that resaves pages, adding a coordinate value to template calls. It might look like: AddGeocodingToPages.php template-name address-fields coordinates-field So a sample call might be: AddGecodingToPages.php Company "Street Address, City, Country" Coordinates This script would go through every page that contained a call to the "Company" template, get the values for the fields labelled "Street Address", "City" and "Country", combine these values together and call Google's geocoding service on that, and if it got back a set of coordinates, add to the template call a new line, reading "|Coordinates=...". If the page already contained a "Coordinates=..." line, the script would check the page's value against what geocoding returned and update the page if necessary. The script could be made to wait several seconds between lookup calls; or whatever a safe interval is. It could also be set to stop after doing a set number of lookups, like 5,000, to avoid causing problems. You could also then create a "cron job" to run the script, say, once a day, to handle new pages that got added. I think the most logical place for such a script would be in the Google Geocoder extension - Sergey, any thoughts? :) -Yaron 2009/3/20 Thomas Fellows <tho...@gm...> > I definitely agree -- you also want to make sure you don't break Google's > API policy - which I believe limits Geocoding addresses to X number (if > you're not paying them) before they blacklist you. I was talking with > Yaron, and I believe the best way to do this would be to have the geocode > extension do something similar to a template substitution - where once you > ping google once for the coordinates, the {{#geocode:}} tag goes away after > the first time and gets replcaed with the actual coordinates - because as > mentioned before - the geocoordinates aren't changing! > Anyone want to take a stab at this- or know of any extensions (tag/parser) > that replace themselves with text after hitting save? > > -tom > > p.s. - i wonder if {{SUBS:#geocode:...}} works (or whatever the syntax is > for template subs) > > > On Fri, Mar 20, 2009 at 5:11 PM, Keith Fligg <Kei...@pn...> wrote: > >> Agreed, it wouldn’t be courteous to request the data from Google >> multiple times for the same location. I guess what I was hoping for was a >> means of acquiring the lat/lng from Google if it was missing, and then >> turning it into a Property of the appropriate type, and then storing the >> property with the original record. Then subsequent attempts to map the >> record would use the (stored) property. >> >> >> >> On 3/20/09 2:05 PM, "Sergey Chernyshev" <ser...@gm...> >> wrote: >> >> I would not recommend to do it on the fly simply because you don't want to >> run requests to Google service every time some data in the query changes - >> it's better to just simply augment pages with coordinates in your original >> documents, after all, if address didn't change, coordinates didn't either, >> right? >> >> Sergey >> >> >> -- >> Sergey Chernyshev >> http://www.sergeychernyshev.com/ >> >> >> 2009/3/20 Thomas Fellows <tho...@gm...> >> >> Oops: >> >> I'm not sure if there is a way to geocode through an ask query (e.g., >> geocode a list of results on the fly). If someone has an idea on how to do >> this, I'd be interested! The way I understand to do it is the first method >> of adding the property. >> >> Hope this helps a little >> >> -tom >> >> On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows <tho...@gm...> >> wrote: >> >> hey keith, >> >> first, things to look at: >> >> http://www.mediawiki.org/wiki/Extension:Google_Geocoder >> >> http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses >> >> There are two ways to do it - if your imported data is displayed using a >> template, you can create the geographic coordinate property by adding to the >> template something like [[Has coordinate::{{{Street Address}}}]] (or if it's >> separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, {{{State}}}]] >> etc. -- wait for everything to refresh and your data should now have a >> property. >> >> the more "on the fly" way of doing it (from the site above) - "{{#semantic_google_map:{{#geocode:{{{Street >> address}}}, {{{City}}}, {{{State}}}, {{{Country}}}}}}}" >> >> >> I'm not sure if there is a way to geocode q >> >> >> 2009/3/19 Keith Fligg <Kei...@pn...> >> >> I’ve got several thousand pages that we imported into our MediaWiki that >> each contain a ‘Location’ property of type string. We would like to be able >> to use the Google geocoder to lookup the coordinates of that property, and >> then use those coordinates to display the locations using the >> SemanticGoogleMaps extension. All of this within an ask query. >> >> The issue is that SemanticGoogleMaps is looking for a property of type >> ‘Geographic coordinate’ and we don’t have that information in our imported >> documents. If there were some way to generate that property on the fly >> during the ask query, and feed it into the map, it would save us the trouble >> of having to process, and reimport the data. >> >> It seems like someone must have butt up against the problem in the past, >> we just can’t find any reference to a solution. Does anyone have any idea >> of how we might be able to get this done? >> >> Thanks for any help, >> >> - Keith >> >> >> ------------------------------------------------------------------------------ >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >> software that enables intelligent coding and step-through debugging. >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> _______________________________________________ >> Semediawiki-user mailing list >> Sem...@li... >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >> >> >> >> >> ------------------------------------------------------------------------------ >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >> software that enables intelligent coding and step-through debugging. >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> _______________________________________________ >> Semediawiki-user mailing list >> Sem...@li... >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >> >> >> > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |
From: Dave L. <dl...@gm...> - 2009-03-23 04:35:39
|
I've found that whenever I modify a template, the previously-saved pages that use that template are updated with any corresponding changes in property values if I run runJobs.php. But I take it this (e.g. the #place_geocode_here example) is something different? 2009/3/22 Yaron Koren <ya...@gm...>: > This is quite a thorny problem: trying to do some kind of automated > insertion within wiki pages - I don't believe there's any functionality like > it now. On the other hand, it would be quite a useful feature to have, since > that Google Maps geocoding limit is a real problem, and renders the #geocode > function nearly useless for large sites that use templates. I've been > thinking about this problem, and I think I've found a reasonable solution, > but first let me go through what I think won't work: > > - a parser function within a template - some kind of "#place_geocode_here" > function that, wherever it was called from a template, placed the actual > coordinate value in the page calling the template. Problems: I'm not sure > that this is technically possible, and even if it were, it could only help > with pages that were created or resaved after the function was added to the > template; it won't do anything for pages previously created. Similarly, if > you change that call in the template, the template can't go around modifying > all the pages that call it. > > - in a form - you could imagine a new field parameter like "geocode on > fields=", that took the names of other fields (like "geocode on > fields=street address, city, country"), and placed the geocoded value in the > resulting page. Problems: same as before - I don't know if it's technically > possible, and it doesn't handle pages created before that geocoding was > added. > > - directly in a page - as Sergey noted in a separate thread, you could tell > users to add a #subst call within pages when they create them. Problems: not > doable within a form, too complicated for users in any case. > > So that leaves what I think is the best solution: a command-line script that > resaves pages, adding a coordinate value to template calls. It might look > like: > > AddGeocodingToPages.php template-name address-fields coordinates-field > > So a sample call might be: > > AddGecodingToPages.php Company "Street Address, City, Country" Coordinates > > This script would go through every page that contained a call to the > "Company" template, get the values for the fields labelled "Street Address", > "City" and "Country", combine these values together and call Google's > geocoding service on that, and if it got back a set of coordinates, add to > the template call a new line, reading "|Coordinates=...". If the page > already contained a "Coordinates=..." line, the script would check the > page's value against what geocoding returned and update the page if > necessary. > > The script could be made to wait several seconds between lookup calls; or > whatever a safe interval is. It could also be set to stop after doing a set > number of lookups, like 5,000, to avoid causing problems. You could also > then create a "cron job" to run the script, say, once a day, to handle new > pages that got added. > > I think the most logical place for such a script would be in the Google > Geocoder extension - Sergey, any thoughts? :) > > -Yaron > > > 2009/3/20 Thomas Fellows <tho...@gm...> >> >> I definitely agree -- you also want to make sure you don't break Google's >> API policy - which I believe limits Geocoding addresses to X number (if >> you're not paying them) before they blacklist you. I was talking with >> Yaron, and I believe the best way to do this would be to have the geocode >> extension do something similar to a template substitution - where once you >> ping google once for the coordinates, the {{#geocode:}} tag goes away after >> the first time and gets replcaed with the actual coordinates - because as >> mentioned before - the geocoordinates aren't changing! >> Anyone want to take a stab at this- or know of any extensions (tag/parser) >> that replace themselves with text after hitting save? >> -tom >> p.s. - i wonder if {{SUBS:#geocode:...}} works (or whatever the syntax is >> for template subs) >> >> On Fri, Mar 20, 2009 at 5:11 PM, Keith Fligg <Kei...@pn...> wrote: >>> >>> Agreed, it wouldn’t be courteous to request the data from Google multiple >>> times for the same location. I guess what I was hoping for was a means of >>> acquiring the lat/lng from Google if it was missing, and then turning it >>> into a Property of the appropriate type, and then storing the property with >>> the original record. Then subsequent attempts to map the record would use >>> the (stored) property. >>> >>> >>> On 3/20/09 2:05 PM, "Sergey Chernyshev" <ser...@gm...> >>> wrote: >>> >>> I would not recommend to do it on the fly simply because you don't want >>> to run requests to Google service every time some data in the query changes >>> - it's better to just simply augment pages with coordinates in your original >>> documents, after all, if address didn't change, coordinates didn't either, >>> right? >>> >>> Sergey >>> >>> >>> -- >>> Sergey Chernyshev >>> http://www.sergeychernyshev.com/ >>> >>> >>> 2009/3/20 Thomas Fellows <tho...@gm...> >>> >>> Oops: >>> >>> I'm not sure if there is a way to geocode through an ask query (e.g., >>> geocode a list of results on the fly). If someone has an idea on how to do >>> this, I'd be interested! The way I understand to do it is the first method >>> of adding the property. >>> >>> Hope this helps a little >>> >>> -tom >>> >>> On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows >>> <tho...@gm...> wrote: >>> >>> hey keith, >>> >>> first, things to look at: >>> >>> http://www.mediawiki.org/wiki/Extension:Google_Geocoder >>> >>> http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses >>> >>> There are two ways to do it - if your imported data is displayed using a >>> template, you can create the geographic coordinate property by adding to the >>> template something like [[Has coordinate::{{{Street Address}}}]] (or if it's >>> separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, {{{State}}}]] >>> etc. -- wait for everything to refresh and your data should now have a >>> property. >>> >>> the more "on the fly" way of doing it (from the site above) - >>> "{{#semantic_google_map:{{#geocode:{{{Street address}}}, {{{City}}}, >>> {{{State}}}, {{{Country}}}}}}}" >>> >>> >>> I'm not sure if there is a way to geocode q >>> >>> >>> 2009/3/19 Keith Fligg <Kei...@pn...> >>> >>> I’ve got several thousand pages that we imported into our MediaWiki that >>> each contain a ‘Location’ property of type string. We would like to be able >>> to use the Google geocoder to lookup the coordinates of that property, and >>> then use those coordinates to display the locations using the >>> SemanticGoogleMaps extension. All of this within an ask query. >>> >>> The issue is that SemanticGoogleMaps is looking for a property of type >>> ‘Geographic coordinate’ and we don’t have that information in our imported >>> documents. If there were some way to generate that property on the fly >>> during the ask query, and feed it into the map, it would save us the trouble >>> of having to process, and reimport the data. >>> >>> It seems like someone must have butt up against the problem in the past, >>> we just can’t find any reference to a solution. Does anyone have any idea >>> of how we might be able to get this done? >>> >>> Thanks for any help, >>> >>> - Keith >>> >>> >>> ------------------------------------------------------------------------------ >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based >>> development >>> software that enables intelligent coding and step-through debugging. >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>> _______________________________________________ >>> Semediawiki-user mailing list >>> Sem...@li... >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>> >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based >>> development >>> software that enables intelligent coding and step-through debugging. >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>> _______________________________________________ >>> Semediawiki-user mailing list >>> Sem...@li... >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>> >>> >>> >> >> >> >> ------------------------------------------------------------------------------ >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >> software that enables intelligent coding and step-through debugging. >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> _______________________________________________ >> Semediawiki-user mailing list >> Sem...@li... >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |
From: Yaron K. <ya...@gm...> - 2009-03-23 14:56:17
|
Yes, this is different - what's being talked about here is a change to the actual wiki text of the page. On Mon, Mar 23, 2009 at 12:35 AM, Dave Loomer <dl...@gm...> wrote: > I've found that whenever I modify a template, the previously-saved > pages that use that template are updated with any corresponding > changes in property values if I run runJobs.php. But I take it this > (e.g. the #place_geocode_here example) is something different? > > > 2009/3/22 Yaron Koren <ya...@gm...>: > > This is quite a thorny problem: trying to do some kind of automated > > insertion within wiki pages - I don't believe there's any functionality > like > > it now. On the other hand, it would be quite a useful feature to have, > since > > that Google Maps geocoding limit is a real problem, and renders the > #geocode > > function nearly useless for large sites that use templates. I've been > > thinking about this problem, and I think I've found a reasonable > solution, > > but first let me go through what I think won't work: > > > > - a parser function within a template - some kind of > "#place_geocode_here" > > function that, wherever it was called from a template, placed the actual > > coordinate value in the page calling the template. Problems: I'm not sure > > that this is technically possible, and even if it were, it could only > help > > with pages that were created or resaved after the function was added to > the > > template; it won't do anything for pages previously created. Similarly, > if > > you change that call in the template, the template can't go around > modifying > > all the pages that call it. > > > > - in a form - you could imagine a new field parameter like "geocode on > > fields=", that took the names of other fields (like "geocode on > > fields=street address, city, country"), and placed the geocoded value in > the > > resulting page. Problems: same as before - I don't know if it's > technically > > possible, and it doesn't handle pages created before that geocoding was > > added. > > > > - directly in a page - as Sergey noted in a separate thread, you could > tell > > users to add a #subst call within pages when they create them. Problems: > not > > doable within a form, too complicated for users in any case. > > > > So that leaves what I think is the best solution: a command-line script > that > > resaves pages, adding a coordinate value to template calls. It might look > > like: > > > > AddGeocodingToPages.php template-name address-fields coordinates-field > > > > So a sample call might be: > > > > AddGecodingToPages.php Company "Street Address, City, Country" > Coordinates > > > > This script would go through every page that contained a call to the > > "Company" template, get the values for the fields labelled "Street > Address", > > "City" and "Country", combine these values together and call Google's > > geocoding service on that, and if it got back a set of coordinates, add > to > > the template call a new line, reading "|Coordinates=...". If the page > > already contained a "Coordinates=..." line, the script would check the > > page's value against what geocoding returned and update the page if > > necessary. > > > > The script could be made to wait several seconds between lookup calls; or > > whatever a safe interval is. It could also be set to stop after doing a > set > > number of lookups, like 5,000, to avoid causing problems. You could also > > then create a "cron job" to run the script, say, once a day, to handle > new > > pages that got added. > > > > I think the most logical place for such a script would be in the Google > > Geocoder extension - Sergey, any thoughts? :) > > > > -Yaron > > > > > > 2009/3/20 Thomas Fellows <tho...@gm...> > >> > >> I definitely agree -- you also want to make sure you don't break > Google's > >> API policy - which I believe limits Geocoding addresses to X number (if > >> you're not paying them) before they blacklist you. I was talking with > >> Yaron, and I believe the best way to do this would be to have the > geocode > >> extension do something similar to a template substitution - where once > you > >> ping google once for the coordinates, the {{#geocode:}} tag goes away > after > >> the first time and gets replcaed with the actual coordinates - because > as > >> mentioned before - the geocoordinates aren't changing! > >> Anyone want to take a stab at this- or know of any extensions > (tag/parser) > >> that replace themselves with text after hitting save? > >> -tom > >> p.s. - i wonder if {{SUBS:#geocode:...}} works (or whatever the syntax > is > >> for template subs) > >> > >> On Fri, Mar 20, 2009 at 5:11 PM, Keith Fligg <Kei...@pn...> > wrote: > >>> > >>> Agreed, it wouldn’t be courteous to request the data from Google > multiple > >>> times for the same location. I guess what I was hoping for was a means > of > >>> acquiring the lat/lng from Google if it was missing, and then turning > it > >>> into a Property of the appropriate type, and then storing the property > with > >>> the original record. Then subsequent attempts to map the record would > use > >>> the (stored) property. > >>> > >>> > >>> On 3/20/09 2:05 PM, "Sergey Chernyshev" <ser...@gm...> > >>> wrote: > >>> > >>> I would not recommend to do it on the fly simply because you don't want > >>> to run requests to Google service every time some data in the query > changes > >>> - it's better to just simply augment pages with coordinates in your > original > >>> documents, after all, if address didn't change, coordinates didn't > either, > >>> right? > >>> > >>> Sergey > >>> > >>> > >>> -- > >>> Sergey Chernyshev > >>> http://www.sergeychernyshev.com/ > >>> > >>> > >>> 2009/3/20 Thomas Fellows <tho...@gm...> > >>> > >>> Oops: > >>> > >>> I'm not sure if there is a way to geocode through an ask query (e.g., > >>> geocode a list of results on the fly). If someone has an idea on how > to do > >>> this, I'd be interested! The way I understand to do it is the first > method > >>> of adding the property. > >>> > >>> Hope this helps a little > >>> > >>> -tom > >>> > >>> On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows > >>> <tho...@gm...> wrote: > >>> > >>> hey keith, > >>> > >>> first, things to look at: > >>> > >>> http://www.mediawiki.org/wiki/Extension:Google_Geocoder > >>> > >>> > http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses > >>> > >>> There are two ways to do it - if your imported data is displayed using > a > >>> template, you can create the geographic coordinate property by adding > to the > >>> template something like [[Has coordinate::{{{Street Address}}}]] (or if > it's > >>> separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, > {{{State}}}]] > >>> etc. -- wait for everything to refresh and your data should now have > a > >>> property. > >>> > >>> the more "on the fly" way of doing it (from the site above) - > >>> "{{#semantic_google_map:{{#geocode:{{{Street address}}}, {{{City}}}, > >>> {{{State}}}, {{{Country}}}}}}}" > >>> > >>> > >>> I'm not sure if there is a way to geocode q > >>> > >>> > >>> 2009/3/19 Keith Fligg <Kei...@pn...> > >>> > >>> I’ve got several thousand pages that we imported into our MediaWiki > that > >>> each contain a ‘Location’ property of type string. We would like to be > able > >>> to use the Google geocoder to lookup the coordinates of that property, > and > >>> then use those coordinates to display the locations using the > >>> SemanticGoogleMaps extension. All of this within an ask query. > >>> > >>> The issue is that SemanticGoogleMaps is looking for a property of type > >>> ‘Geographic coordinate’ and we don’t have that information in our > imported > >>> documents. If there were some way to generate that property on the fly > >>> during the ask query, and feed it into the map, it would save us the > trouble > >>> of having to process, and reimport the data. > >>> > >>> It seems like someone must have butt up against the problem in the > past, > >>> we just can’t find any reference to a solution. Does anyone have any > idea > >>> of how we might be able to get this done? > >>> > >>> Thanks for any help, > >>> > >>> - Keith > >>> > >>> > >>> > ------------------------------------------------------------------------------ > >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly > and > >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based > >>> development > >>> software that enables intelligent coding and step-through debugging. > >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > >>> _______________________________________________ > >>> Semediawiki-user mailing list > >>> Sem...@li... > >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user > >>> > >>> > >>> > >>> > >>> > >>> > ------------------------------------------------------------------------------ > >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly > and > >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based > >>> development > >>> software that enables intelligent coding and step-through debugging. > >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > >>> _______________________________________________ > >>> Semediawiki-user mailing list > >>> Sem...@li... > >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user > >>> > >>> > >>> > >> > >> > >> > >> > ------------------------------------------------------------------------------ > >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > >> easily build your RIAs with Flex Builder, the Eclipse(TM)based > development > >> software that enables intelligent coding and step-through debugging. > >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > >> _______________________________________________ > >> Semediawiki-user mailing list > >> Sem...@li... > >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user > >> > > > > > > > ------------------------------------------------------------------------------ > > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > > easily build your RIAs with Flex Builder, the Eclipse(TM)based > development > > software that enables intelligent coding and step-through debugging. > > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > > _______________________________________________ > > Semediawiki-user mailing list > > Sem...@li... > > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > > > > |
From: Sergey C. <ser...@gm...> - 2009-03-23 16:15:47
|
I don't know if adding this scripting functionality to Geocoder itself is needed. What you can do is edit pages with the script (using POM library is one option, although it's in very early stages of development and almost abandoned by me) to set some parameter in a template. For example, read this: *{{My template* *|address=Moscow, Russia* *}}* and write this back: *{{My template* *|address=Moscow, Russia* *|geo={{subst:#geocode:Moscow, Russia}}* *}}* Or something like that. Code to do this using POM ( http://www.mediawiki.org/wiki/Extension:Page_Object_Model) will be something like this: * **# Get document from MediaWiki server* *$pom = new POMPage($text);* *# Read value of address parameter* *$address = $pom->templates['Location'][0]->getParameter('address');* *# Set geo parameter* *$pom->templates['Location'][0]->setParameter('geo', "{{subst:#geocode:$address}}");* *# Retrieve final text of the page* *print $pom->asString();* I leave reading and writing to the wiki up to you (you can use *&action=raw*for reading and *maintenance/edit.php *script bundled with MediaWiki for writing, for example) Another approach is to use PageObjectModel MediaWiki extension (POM is just a librrary, PageObjectModel is extension that uses POM) and use MW API ( http://www.mediawiki.org/wiki/Extension:Page_Object_Model#MediaWiki_API_calls) making *pomgettplparam *and *pomsettplparam* calls: for reading the address: *api.php?action=pomgettplparam&page=PageName&tpl=Location¶m=address* for wriging geocoding value: * api.php?action=pomsettplparam&page=PageName&tpl=Location¶m=geo&value={{subst%3A%23geocode%3AMoscow%2C+Russia}}&summary=Geocoding+bot+update * You'll need to read up on MediaWiki API (http://www.mediawiki.org/wiki/API), bots and use appropriate response format. BTW, this is quite generic approach to scripting data with Wiki and not Geocoder specific. Sergey 2009/3/23 Yaron Koren <ya...@gm...> > Yes, this is different - what's being talked about here is a change to the > actual wiki text of the page. > > > > On Mon, Mar 23, 2009 at 12:35 AM, Dave Loomer <dl...@gm...> wrote: > >> I've found that whenever I modify a template, the previously-saved >> pages that use that template are updated with any corresponding >> changes in property values if I run runJobs.php. But I take it this >> (e.g. the #place_geocode_here example) is something different? >> >> >> 2009/3/22 Yaron Koren <ya...@gm...>: >> > This is quite a thorny problem: trying to do some kind of automated >> > insertion within wiki pages - I don't believe there's any functionality >> like >> > it now. On the other hand, it would be quite a useful feature to have, >> since >> > that Google Maps geocoding limit is a real problem, and renders the >> #geocode >> > function nearly useless for large sites that use templates. I've been >> > thinking about this problem, and I think I've found a reasonable >> solution, >> > but first let me go through what I think won't work: >> > >> > - a parser function within a template - some kind of >> "#place_geocode_here" >> > function that, wherever it was called from a template, placed the actual >> > coordinate value in the page calling the template. Problems: I'm not >> sure >> > that this is technically possible, and even if it were, it could only >> help >> > with pages that were created or resaved after the function was added to >> the >> > template; it won't do anything for pages previously created. Similarly, >> if >> > you change that call in the template, the template can't go around >> modifying >> > all the pages that call it. >> > >> > - in a form - you could imagine a new field parameter like "geocode on >> > fields=", that took the names of other fields (like "geocode on >> > fields=street address, city, country"), and placed the geocoded value in >> the >> > resulting page. Problems: same as before - I don't know if it's >> technically >> > possible, and it doesn't handle pages created before that geocoding was >> > added. >> > >> > - directly in a page - as Sergey noted in a separate thread, you could >> tell >> > users to add a #subst call within pages when they create them. Problems: >> not >> > doable within a form, too complicated for users in any case. >> > >> > So that leaves what I think is the best solution: a command-line script >> that >> > resaves pages, adding a coordinate value to template calls. It might >> look >> > like: >> > >> > AddGeocodingToPages.php template-name address-fields coordinates-field >> > >> > So a sample call might be: >> > >> > AddGecodingToPages.php Company "Street Address, City, Country" >> Coordinates >> > >> > This script would go through every page that contained a call to the >> > "Company" template, get the values for the fields labelled "Street >> Address", >> > "City" and "Country", combine these values together and call Google's >> > geocoding service on that, and if it got back a set of coordinates, add >> to >> > the template call a new line, reading "|Coordinates=...". If the page >> > already contained a "Coordinates=..." line, the script would check the >> > page's value against what geocoding returned and update the page if >> > necessary. >> > >> > The script could be made to wait several seconds between lookup calls; >> or >> > whatever a safe interval is. It could also be set to stop after doing a >> set >> > number of lookups, like 5,000, to avoid causing problems. You could also >> > then create a "cron job" to run the script, say, once a day, to handle >> new >> > pages that got added. >> > >> > I think the most logical place for such a script would be in the Google >> > Geocoder extension - Sergey, any thoughts? :) >> > >> > -Yaron >> > >> > >> > 2009/3/20 Thomas Fellows <tho...@gm...> >> >> >> >> I definitely agree -- you also want to make sure you don't break >> Google's >> >> API policy - which I believe limits Geocoding addresses to X number (if >> >> you're not paying them) before they blacklist you. I was talking with >> >> Yaron, and I believe the best way to do this would be to have the >> geocode >> >> extension do something similar to a template substitution - where once >> you >> >> ping google once for the coordinates, the {{#geocode:}} tag goes away >> after >> >> the first time and gets replcaed with the actual coordinates - because >> as >> >> mentioned before - the geocoordinates aren't changing! >> >> Anyone want to take a stab at this- or know of any extensions >> (tag/parser) >> >> that replace themselves with text after hitting save? >> >> -tom >> >> p.s. - i wonder if {{SUBS:#geocode:...}} works (or whatever the syntax >> is >> >> for template subs) >> >> >> >> On Fri, Mar 20, 2009 at 5:11 PM, Keith Fligg <Kei...@pn...> >> wrote: >> >>> >> >>> Agreed, it wouldn’t be courteous to request the data from Google >> multiple >> >>> times for the same location. I guess what I was hoping for was a >> means of >> >>> acquiring the lat/lng from Google if it was missing, and then turning >> it >> >>> into a Property of the appropriate type, and then storing the property >> with >> >>> the original record. Then subsequent attempts to map the record would >> use >> >>> the (stored) property. >> >>> >> >>> >> >>> On 3/20/09 2:05 PM, "Sergey Chernyshev" <ser...@gm...> >> >>> wrote: >> >>> >> >>> I would not recommend to do it on the fly simply because you don't >> want >> >>> to run requests to Google service every time some data in the query >> changes >> >>> - it's better to just simply augment pages with coordinates in your >> original >> >>> documents, after all, if address didn't change, coordinates didn't >> either, >> >>> right? >> >>> >> >>> Sergey >> >>> >> >>> >> >>> -- >> >>> Sergey Chernyshev >> >>> http://www.sergeychernyshev.com/ >> >>> >> >>> >> >>> 2009/3/20 Thomas Fellows <tho...@gm...> >> >>> >> >>> Oops: >> >>> >> >>> I'm not sure if there is a way to geocode through an ask query (e.g., >> >>> geocode a list of results on the fly). If someone has an idea on how >> to do >> >>> this, I'd be interested! The way I understand to do it is the first >> method >> >>> of adding the property. >> >>> >> >>> Hope this helps a little >> >>> >> >>> -tom >> >>> >> >>> On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows >> >>> <tho...@gm...> wrote: >> >>> >> >>> hey keith, >> >>> >> >>> first, things to look at: >> >>> >> >>> http://www.mediawiki.org/wiki/Extension:Google_Geocoder >> >>> >> >>> >> http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses >> >>> >> >>> There are two ways to do it - if your imported data is displayed using >> a >> >>> template, you can create the geographic coordinate property by adding >> to the >> >>> template something like [[Has coordinate::{{{Street Address}}}]] (or >> if it's >> >>> separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, >> {{{State}}}]] >> >>> etc. -- wait for everything to refresh and your data should now have >> a >> >>> property. >> >>> >> >>> the more "on the fly" way of doing it (from the site above) - >> >>> "{{#semantic_google_map:{{#geocode:{{{Street address}}}, {{{City}}}, >> >>> {{{State}}}, {{{Country}}}}}}}" >> >>> >> >>> >> >>> I'm not sure if there is a way to geocode q >> >>> >> >>> >> >>> 2009/3/19 Keith Fligg <Kei...@pn...> >> >>> >> >>> I’ve got several thousand pages that we imported into our MediaWiki >> that >> >>> each contain a ‘Location’ property of type string. We would like to >> be able >> >>> to use the Google geocoder to lookup the coordinates of that property, >> and >> >>> then use those coordinates to display the locations using the >> >>> SemanticGoogleMaps extension. All of this within an ask query. >> >>> >> >>> The issue is that SemanticGoogleMaps is looking for a property of type >> >>> ‘Geographic coordinate’ and we don’t have that information in our >> imported >> >>> documents. If there were some way to generate that property on the >> fly >> >>> during the ask query, and feed it into the map, it would save us the >> trouble >> >>> of having to process, and reimport the data. >> >>> >> >>> It seems like someone must have butt up against the problem in the >> past, >> >>> we just can’t find any reference to a solution. Does anyone have any >> idea >> >>> of how we might be able to get this done? >> >>> >> >>> Thanks for any help, >> >>> >> >>> - Keith >> >>> >> >>> >> >>> >> ------------------------------------------------------------------------------ >> >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) >> are >> >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly >> and >> >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based >> >>> development >> >>> software that enables intelligent coding and step-through debugging. >> >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> >>> _______________________________________________ >> >>> Semediawiki-user mailing list >> >>> Sem...@li... >> >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> ------------------------------------------------------------------------------ >> >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) >> are >> >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly >> and >> >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based >> >>> development >> >>> software that enables intelligent coding and step-through debugging. >> >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> >>> _______________________________________________ >> >>> Semediawiki-user mailing list >> >>> Sem...@li... >> >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >>> >> >>> >> >>> >> >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly >> and >> >> easily build your RIAs with Flex Builder, the Eclipse(TM)based >> development >> >> software that enables intelligent coding and step-through debugging. >> >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> >> _______________________________________________ >> >> Semediawiki-user mailing list >> >> Sem...@li... >> >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >> >> > >> > >> > >> ------------------------------------------------------------------------------ >> > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> > easily build your RIAs with Flex Builder, the Eclipse(TM)based >> development >> > software that enables intelligent coding and step-through debugging. >> > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> > _______________________________________________ >> > Semediawiki-user mailing list >> > Sem...@li... >> > https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> > >> > >> > > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |
From: Yaron K. <ya...@gm...> - 2009-03-23 16:57:05
|
Cool - POM could definitely be the way to go for this. Is there code for cycling through all the pages in a category? -Yaron On Mon, Mar 23, 2009 at 12:15 PM, Sergey Chernyshev < ser...@gm...> wrote: > I don't know if adding this scripting functionality to Geocoder itself is > needed. > > What you can do is edit pages with the script (using POM library is one > option, although it's in very early stages of development and almost > abandoned by me) to set some parameter in a template. > > For example, read this: > > *{{My template* > *|address=Moscow, Russia* > *}}* > > and write this back: > > *{{My template* > *|address=Moscow, Russia* > *|geo={{subst:#geocode:Moscow, Russia}}* > *}}* > > Or something like that. > > Code to do this using POM ( > http://www.mediawiki.org/wiki/Extension:Page_Object_Model) will be > something like this: > * > * *# Get document from MediaWiki server* > *$pom = new POMPage($text);* > > *# Read value of address parameter* > *$address = $pom->templates['Location'][0]->getParameter('address');* > > *# Set geo parameter* > *$pom->templates['Location'][0]->setParameter('geo', > "{{subst:#geocode:$address}}");* > > *# Retrieve final text of the page* > *print $pom->asString();* > > I leave reading and writing to the wiki up to you (you can use * > &action=raw* for reading and *maintenance/edit.php *script bundled with > MediaWiki for writing, for example) > > Another approach is to use PageObjectModel MediaWiki extension (POM is just > a librrary, PageObjectModel is extension that uses POM) and use MW API ( > http://www.mediawiki.org/wiki/Extension:Page_Object_Model#MediaWiki_API_calls) > making *pomgettplparam *and *pomsettplparam* calls: > > for reading the address: > > *api.php?action=pomgettplparam&page=PageName&tpl=Location¶m=address* > > for wriging geocoding value: > > * > api.php?action=pomsettplparam&page=PageName&tpl=Location¶m=geo&value={{subst%3A%23geocode%3AMoscow%2C+Russia}}&summary=Geocoding+bot+update > * > > You'll need to read up on MediaWiki API (http://www.mediawiki.org/wiki/API), > bots and use appropriate response format. > > BTW, this is quite generic approach to scripting data with Wiki and not > Geocoder specific. > > Sergey > > > 2009/3/23 Yaron Koren <ya...@gm...> > > Yes, this is different - what's being talked about here is a change to the >> actual wiki text of the page. >> >> >> >> On Mon, Mar 23, 2009 at 12:35 AM, Dave Loomer <dl...@gm...> wrote: >> >>> I've found that whenever I modify a template, the previously-saved >>> pages that use that template are updated with any corresponding >>> changes in property values if I run runJobs.php. But I take it this >>> (e.g. the #place_geocode_here example) is something different? >>> >>> >>> 2009/3/22 Yaron Koren <ya...@gm...>: >>> > This is quite a thorny problem: trying to do some kind of automated >>> > insertion within wiki pages - I don't believe there's any functionality >>> like >>> > it now. On the other hand, it would be quite a useful feature to have, >>> since >>> > that Google Maps geocoding limit is a real problem, and renders the >>> #geocode >>> > function nearly useless for large sites that use templates. I've been >>> > thinking about this problem, and I think I've found a reasonable >>> solution, >>> > but first let me go through what I think won't work: >>> > >>> > - a parser function within a template - some kind of >>> "#place_geocode_here" >>> > function that, wherever it was called from a template, placed the >>> actual >>> > coordinate value in the page calling the template. Problems: I'm not >>> sure >>> > that this is technically possible, and even if it were, it could only >>> help >>> > with pages that were created or resaved after the function was added to >>> the >>> > template; it won't do anything for pages previously created. Similarly, >>> if >>> > you change that call in the template, the template can't go around >>> modifying >>> > all the pages that call it. >>> > >>> > - in a form - you could imagine a new field parameter like "geocode on >>> > fields=", that took the names of other fields (like "geocode on >>> > fields=street address, city, country"), and placed the geocoded value >>> in the >>> > resulting page. Problems: same as before - I don't know if it's >>> technically >>> > possible, and it doesn't handle pages created before that geocoding was >>> > added. >>> > >>> > - directly in a page - as Sergey noted in a separate thread, you could >>> tell >>> > users to add a #subst call within pages when they create them. >>> Problems: not >>> > doable within a form, too complicated for users in any case. >>> > >>> > So that leaves what I think is the best solution: a command-line script >>> that >>> > resaves pages, adding a coordinate value to template calls. It might >>> look >>> > like: >>> > >>> > AddGeocodingToPages.php template-name address-fields coordinates-field >>> > >>> > So a sample call might be: >>> > >>> > AddGecodingToPages.php Company "Street Address, City, Country" >>> Coordinates >>> > >>> > This script would go through every page that contained a call to the >>> > "Company" template, get the values for the fields labelled "Street >>> Address", >>> > "City" and "Country", combine these values together and call Google's >>> > geocoding service on that, and if it got back a set of coordinates, add >>> to >>> > the template call a new line, reading "|Coordinates=...". If the page >>> > already contained a "Coordinates=..." line, the script would check the >>> > page's value against what geocoding returned and update the page if >>> > necessary. >>> > >>> > The script could be made to wait several seconds between lookup calls; >>> or >>> > whatever a safe interval is. It could also be set to stop after doing a >>> set >>> > number of lookups, like 5,000, to avoid causing problems. You could >>> also >>> > then create a "cron job" to run the script, say, once a day, to handle >>> new >>> > pages that got added. >>> > >>> > I think the most logical place for such a script would be in the Google >>> > Geocoder extension - Sergey, any thoughts? :) >>> > >>> > -Yaron >>> > >>> > >>> > 2009/3/20 Thomas Fellows <tho...@gm...> >>> >> >>> >> I definitely agree -- you also want to make sure you don't break >>> Google's >>> >> API policy - which I believe limits Geocoding addresses to X number >>> (if >>> >> you're not paying them) before they blacklist you. I was talking with >>> >> Yaron, and I believe the best way to do this would be to have the >>> geocode >>> >> extension do something similar to a template substitution - where once >>> you >>> >> ping google once for the coordinates, the {{#geocode:}} tag goes away >>> after >>> >> the first time and gets replcaed with the actual coordinates - because >>> as >>> >> mentioned before - the geocoordinates aren't changing! >>> >> Anyone want to take a stab at this- or know of any extensions >>> (tag/parser) >>> >> that replace themselves with text after hitting save? >>> >> -tom >>> >> p.s. - i wonder if {{SUBS:#geocode:...}} works (or whatever the syntax >>> is >>> >> for template subs) >>> >> >>> >> On Fri, Mar 20, 2009 at 5:11 PM, Keith Fligg <Kei...@pn...> >>> wrote: >>> >>> >>> >>> Agreed, it wouldn’t be courteous to request the data from Google >>> multiple >>> >>> times for the same location. I guess what I was hoping for was a >>> means of >>> >>> acquiring the lat/lng from Google if it was missing, and then turning >>> it >>> >>> into a Property of the appropriate type, and then storing the >>> property with >>> >>> the original record. Then subsequent attempts to map the record >>> would use >>> >>> the (stored) property. >>> >>> >>> >>> >>> >>> On 3/20/09 2:05 PM, "Sergey Chernyshev" <ser...@gm... >>> > >>> >>> wrote: >>> >>> >>> >>> I would not recommend to do it on the fly simply because you don't >>> want >>> >>> to run requests to Google service every time some data in the query >>> changes >>> >>> - it's better to just simply augment pages with coordinates in your >>> original >>> >>> documents, after all, if address didn't change, coordinates didn't >>> either, >>> >>> right? >>> >>> >>> >>> Sergey >>> >>> >>> >>> >>> >>> -- >>> >>> Sergey Chernyshev >>> >>> http://www.sergeychernyshev.com/ >>> >>> >>> >>> >>> >>> 2009/3/20 Thomas Fellows <tho...@gm...> >>> >>> >>> >>> Oops: >>> >>> >>> >>> I'm not sure if there is a way to geocode through an ask query (e.g., >>> >>> geocode a list of results on the fly). If someone has an idea on how >>> to do >>> >>> this, I'd be interested! The way I understand to do it is the first >>> method >>> >>> of adding the property. >>> >>> >>> >>> Hope this helps a little >>> >>> >>> >>> -tom >>> >>> >>> >>> On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows >>> >>> <tho...@gm...> wrote: >>> >>> >>> >>> hey keith, >>> >>> >>> >>> first, things to look at: >>> >>> >>> >>> http://www.mediawiki.org/wiki/Extension:Google_Geocoder >>> >>> >>> >>> >>> http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses >>> >>> >>> >>> There are two ways to do it - if your imported data is displayed >>> using a >>> >>> template, you can create the geographic coordinate property by adding >>> to the >>> >>> template something like [[Has coordinate::{{{Street Address}}}]] (or >>> if it's >>> >>> separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, >>> {{{State}}}]] >>> >>> etc. -- wait for everything to refresh and your data should now >>> have a >>> >>> property. >>> >>> >>> >>> the more "on the fly" way of doing it (from the site above) - >>> >>> "{{#semantic_google_map:{{#geocode:{{{Street address}}}, {{{City}}}, >>> >>> {{{State}}}, {{{Country}}}}}}}" >>> >>> >>> >>> >>> >>> I'm not sure if there is a way to geocode q >>> >>> >>> >>> >>> >>> 2009/3/19 Keith Fligg <Kei...@pn...> >>> >>> >>> >>> I’ve got several thousand pages that we imported into our MediaWiki >>> that >>> >>> each contain a ‘Location’ property of type string. We would like to >>> be able >>> >>> to use the Google geocoder to lookup the coordinates of that >>> property, and >>> >>> then use those coordinates to display the locations using the >>> >>> SemanticGoogleMaps extension. All of this within an ask query. >>> >>> >>> >>> The issue is that SemanticGoogleMaps is looking for a property of >>> type >>> >>> ‘Geographic coordinate’ and we don’t have that information in our >>> imported >>> >>> documents. If there were some way to generate that property on the >>> fly >>> >>> during the ask query, and feed it into the map, it would save us the >>> trouble >>> >>> of having to process, and reimport the data. >>> >>> >>> >>> It seems like someone must have butt up against the problem in the >>> past, >>> >>> we just can’t find any reference to a solution. Does anyone have any >>> idea >>> >>> of how we might be able to get this done? >>> >>> >>> >>> Thanks for any help, >>> >>> >>> >>> - Keith >>> >>> >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) >>> are >>> >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly >>> and >>> >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based >>> >>> development >>> >>> software that enables intelligent coding and step-through debugging. >>> >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>> >>> _______________________________________________ >>> >>> Semediawiki-user mailing list >>> >>> Sem...@li... >>> >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) >>> are >>> >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly >>> and >>> >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based >>> >>> development >>> >>> software that enables intelligent coding and step-through debugging. >>> >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>> >>> _______________________________________________ >>> >>> Semediawiki-user mailing list >>> >>> Sem...@li... >>> >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>> >>> >>> >>> >>> >>> >>> >> >>> >> >>> >> >>> >> >>> ------------------------------------------------------------------------------ >>> >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) >>> are >>> >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly >>> and >>> >> easily build your RIAs with Flex Builder, the Eclipse(TM)based >>> development >>> >> software that enables intelligent coding and step-through debugging. >>> >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>> >> _______________________________________________ >>> >> Semediawiki-user mailing list >>> >> Sem...@li... >>> >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>> >> >>> > >>> > >>> > >>> ------------------------------------------------------------------------------ >>> > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >>> > powering Web 2.0 with engaging, cross-platform capabilities. Quickly >>> and >>> > easily build your RIAs with Flex Builder, the Eclipse(TM)based >>> development >>> > software that enables intelligent coding and step-through debugging. >>> > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>> > _______________________________________________ >>> > Semediawiki-user mailing list >>> > Sem...@li... >>> > https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>> > >>> > >>> >> >> >> >> ------------------------------------------------------------------------------ >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >> software that enables intelligent coding and step-through debugging. >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> _______________________________________________ >> Semediawiki-user mailing list >> Sem...@li... >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >> > |
From: Sergey C. <ser...@gm...> - 2009-03-23 17:12:46
|
If you're using MW API, then there is *action=query&list=categorymembers* If you're writing PHP maintenance script, then it's a different question - I have no idea - you'll know the answer much better then I do ;) Sergey On Mon, Mar 23, 2009 at 12:57 PM, Yaron Koren <ya...@gm...> wrote: > Cool - POM could definitely be the way to go for this. Is there code for > cycling through all the pages in a category? > > -Yaron > > > > On Mon, Mar 23, 2009 at 12:15 PM, Sergey Chernyshev < > ser...@gm...> wrote: > >> I don't know if adding this scripting functionality to Geocoder itself is >> needed. >> >> What you can do is edit pages with the script (using POM library is one >> option, although it's in very early stages of development and almost >> abandoned by me) to set some parameter in a template. >> >> For example, read this: >> >> *{{My template* >> *|address=Moscow, Russia* >> *}}* >> >> and write this back: >> >> *{{My template* >> *|address=Moscow, Russia* >> *|geo={{subst:#geocode:Moscow, Russia}}* >> *}}* >> >> Or something like that. >> >> Code to do this using POM ( >> http://www.mediawiki.org/wiki/Extension:Page_Object_Model) will be >> something like this: >> * >> * *# Get document from MediaWiki server* >> *$pom = new POMPage($text);* >> >> *# Read value of address parameter* >> *$address = $pom->templates['Location'][0]->getParameter('address');* >> >> *# Set geo parameter* >> *$pom->templates['Location'][0]->setParameter('geo', >> "{{subst:#geocode:$address}}");* >> >> *# Retrieve final text of the page* >> *print $pom->asString();* >> >> I leave reading and writing to the wiki up to you (you can use * >> &action=raw* for reading and *maintenance/edit.php *script bundled with >> MediaWiki for writing, for example) >> >> Another approach is to use PageObjectModel MediaWiki extension (POM is >> just a librrary, PageObjectModel is extension that uses POM) and use MW API >> ( >> http://www.mediawiki.org/wiki/Extension:Page_Object_Model#MediaWiki_API_calls) >> making *pomgettplparam *and *pomsettplparam* calls: >> >> for reading the address: >> >> *api.php?action=pomgettplparam&page=PageName&tpl=Location¶m=address* >> >> for wriging geocoding value: >> >> * >> api.php?action=pomsettplparam&page=PageName&tpl=Location¶m=geo&value={{subst%3A%23geocode%3AMoscow%2C+Russia}}&summary=Geocoding+bot+update >> * >> >> You'll need to read up on MediaWiki API ( >> http://www.mediawiki.org/wiki/API), bots and use appropriate response >> format. >> >> BTW, this is quite generic approach to scripting data with Wiki and not >> Geocoder specific. >> >> Sergey >> >> >> 2009/3/23 Yaron Koren <ya...@gm...> >> >> Yes, this is different - what's being talked about here is a change to the >>> actual wiki text of the page. >>> >>> >>> >>> On Mon, Mar 23, 2009 at 12:35 AM, Dave Loomer <dl...@gm...> wrote: >>> >>>> I've found that whenever I modify a template, the previously-saved >>>> pages that use that template are updated with any corresponding >>>> changes in property values if I run runJobs.php. But I take it this >>>> (e.g. the #place_geocode_here example) is something different? >>>> >>>> >>>> 2009/3/22 Yaron Koren <ya...@gm...>: >>>> > This is quite a thorny problem: trying to do some kind of automated >>>> > insertion within wiki pages - I don't believe there's any >>>> functionality like >>>> > it now. On the other hand, it would be quite a useful feature to have, >>>> since >>>> > that Google Maps geocoding limit is a real problem, and renders the >>>> #geocode >>>> > function nearly useless for large sites that use templates. I've been >>>> > thinking about this problem, and I think I've found a reasonable >>>> solution, >>>> > but first let me go through what I think won't work: >>>> > >>>> > - a parser function within a template - some kind of >>>> "#place_geocode_here" >>>> > function that, wherever it was called from a template, placed the >>>> actual >>>> > coordinate value in the page calling the template. Problems: I'm not >>>> sure >>>> > that this is technically possible, and even if it were, it could only >>>> help >>>> > with pages that were created or resaved after the function was added >>>> to the >>>> > template; it won't do anything for pages previously created. >>>> Similarly, if >>>> > you change that call in the template, the template can't go around >>>> modifying >>>> > all the pages that call it. >>>> > >>>> > - in a form - you could imagine a new field parameter like "geocode on >>>> > fields=", that took the names of other fields (like "geocode on >>>> > fields=street address, city, country"), and placed the geocoded value >>>> in the >>>> > resulting page. Problems: same as before - I don't know if it's >>>> technically >>>> > possible, and it doesn't handle pages created before that geocoding >>>> was >>>> > added. >>>> > >>>> > - directly in a page - as Sergey noted in a separate thread, you could >>>> tell >>>> > users to add a #subst call within pages when they create them. >>>> Problems: not >>>> > doable within a form, too complicated for users in any case. >>>> > >>>> > So that leaves what I think is the best solution: a command-line >>>> script that >>>> > resaves pages, adding a coordinate value to template calls. It might >>>> look >>>> > like: >>>> > >>>> > AddGeocodingToPages.php template-name address-fields coordinates-field >>>> > >>>> > So a sample call might be: >>>> > >>>> > AddGecodingToPages.php Company "Street Address, City, Country" >>>> Coordinates >>>> > >>>> > This script would go through every page that contained a call to the >>>> > "Company" template, get the values for the fields labelled "Street >>>> Address", >>>> > "City" and "Country", combine these values together and call Google's >>>> > geocoding service on that, and if it got back a set of coordinates, >>>> add to >>>> > the template call a new line, reading "|Coordinates=...". If the page >>>> > already contained a "Coordinates=..." line, the script would check the >>>> > page's value against what geocoding returned and update the page if >>>> > necessary. >>>> > >>>> > The script could be made to wait several seconds between lookup calls; >>>> or >>>> > whatever a safe interval is. It could also be set to stop after doing >>>> a set >>>> > number of lookups, like 5,000, to avoid causing problems. You could >>>> also >>>> > then create a "cron job" to run the script, say, once a day, to handle >>>> new >>>> > pages that got added. >>>> > >>>> > I think the most logical place for such a script would be in the >>>> Google >>>> > Geocoder extension - Sergey, any thoughts? :) >>>> > >>>> > -Yaron >>>> > >>>> > >>>> > 2009/3/20 Thomas Fellows <tho...@gm...> >>>> >> >>>> >> I definitely agree -- you also want to make sure you don't break >>>> Google's >>>> >> API policy - which I believe limits Geocoding addresses to X number >>>> (if >>>> >> you're not paying them) before they blacklist you. I was talking >>>> with >>>> >> Yaron, and I believe the best way to do this would be to have the >>>> geocode >>>> >> extension do something similar to a template substitution - where >>>> once you >>>> >> ping google once for the coordinates, the {{#geocode:}} tag goes away >>>> after >>>> >> the first time and gets replcaed with the actual coordinates - >>>> because as >>>> >> mentioned before - the geocoordinates aren't changing! >>>> >> Anyone want to take a stab at this- or know of any extensions >>>> (tag/parser) >>>> >> that replace themselves with text after hitting save? >>>> >> -tom >>>> >> p.s. - i wonder if {{SUBS:#geocode:...}} works (or whatever the >>>> syntax is >>>> >> for template subs) >>>> >> >>>> >> On Fri, Mar 20, 2009 at 5:11 PM, Keith Fligg <Kei...@pn...> >>>> wrote: >>>> >>> >>>> >>> Agreed, it wouldn’t be courteous to request the data from Google >>>> multiple >>>> >>> times for the same location. I guess what I was hoping for was a >>>> means of >>>> >>> acquiring the lat/lng from Google if it was missing, and then >>>> turning it >>>> >>> into a Property of the appropriate type, and then storing the >>>> property with >>>> >>> the original record. Then subsequent attempts to map the record >>>> would use >>>> >>> the (stored) property. >>>> >>> >>>> >>> >>>> >>> On 3/20/09 2:05 PM, "Sergey Chernyshev" < >>>> ser...@gm...> >>>> >>> wrote: >>>> >>> >>>> >>> I would not recommend to do it on the fly simply because you don't >>>> want >>>> >>> to run requests to Google service every time some data in the query >>>> changes >>>> >>> - it's better to just simply augment pages with coordinates in your >>>> original >>>> >>> documents, after all, if address didn't change, coordinates didn't >>>> either, >>>> >>> right? >>>> >>> >>>> >>> Sergey >>>> >>> >>>> >>> >>>> >>> -- >>>> >>> Sergey Chernyshev >>>> >>> http://www.sergeychernyshev.com/ >>>> >>> >>>> >>> >>>> >>> 2009/3/20 Thomas Fellows <tho...@gm...> >>>> >>> >>>> >>> Oops: >>>> >>> >>>> >>> I'm not sure if there is a way to geocode through an ask query >>>> (e.g., >>>> >>> geocode a list of results on the fly). If someone has an idea on >>>> how to do >>>> >>> this, I'd be interested! The way I understand to do it is the first >>>> method >>>> >>> of adding the property. >>>> >>> >>>> >>> Hope this helps a little >>>> >>> >>>> >>> -tom >>>> >>> >>>> >>> On Fri, Mar 20, 2009 at 8:28 AM, Thomas Fellows >>>> >>> <tho...@gm...> wrote: >>>> >>> >>>> >>> hey keith, >>>> >>> >>>> >>> first, things to look at: >>>> >>> >>>> >>> http://www.mediawiki.org/wiki/Extension:Google_Geocoder >>>> >>> >>>> >>> >>>> http://www.mediawiki.org/wiki/Extension:Semantic_Google_Maps#Geocoding_addresses >>>> >>> >>>> >>> There are two ways to do it - if your imported data is displayed >>>> using a >>>> >>> template, you can create the geographic coordinate property by >>>> adding to the >>>> >>> template something like [[Has coordinate::{{{Street Address}}}]] (or >>>> if it's >>>> >>> separated [[Has coordinate::{{{Street Address}}}, {{{City}}}, >>>> {{{State}}}]] >>>> >>> etc. -- wait for everything to refresh and your data should now >>>> have a >>>> >>> property. >>>> >>> >>>> >>> the more "on the fly" way of doing it (from the site above) - >>>> >>> "{{#semantic_google_map:{{#geocode:{{{Street address}}}, {{{City}}}, >>>> >>> {{{State}}}, {{{Country}}}}}}}" >>>> >>> >>>> >>> >>>> >>> I'm not sure if there is a way to geocode q >>>> >>> >>>> >>> >>>> >>> 2009/3/19 Keith Fligg <Kei...@pn...> >>>> >>> >>>> >>> I’ve got several thousand pages that we imported into our MediaWiki >>>> that >>>> >>> each contain a ‘Location’ property of type string. We would like to >>>> be able >>>> >>> to use the Google geocoder to lookup the coordinates of that >>>> property, and >>>> >>> then use those coordinates to display the locations using the >>>> >>> SemanticGoogleMaps extension. All of this within an ask query. >>>> >>> >>>> >>> The issue is that SemanticGoogleMaps is looking for a property of >>>> type >>>> >>> ‘Geographic coordinate’ and we don’t have that information in our >>>> imported >>>> >>> documents. If there were some way to generate that property on the >>>> fly >>>> >>> during the ask query, and feed it into the map, it would save us the >>>> trouble >>>> >>> of having to process, and reimport the data. >>>> >>> >>>> >>> It seems like someone must have butt up against the problem in the >>>> past, >>>> >>> we just can’t find any reference to a solution. Does anyone have >>>> any idea >>>> >>> of how we might be able to get this done? >>>> >>> >>>> >>> Thanks for any help, >>>> >>> >>>> >>> - Keith >>>> >>> >>>> >>> >>>> >>> >>>> ------------------------------------------------------------------------------ >>>> >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) >>>> are >>>> >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly >>>> and >>>> >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based >>>> >>> development >>>> >>> software that enables intelligent coding and step-through debugging. >>>> >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>>> >>> _______________________________________________ >>>> >>> Semediawiki-user mailing list >>>> >>> Sem...@li... >>>> >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>>> >>> >>>> >>> >>>> >>> >>>> >>> >>>> >>> >>>> >>> >>>> ------------------------------------------------------------------------------ >>>> >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) >>>> are >>>> >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly >>>> and >>>> >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based >>>> >>> development >>>> >>> software that enables intelligent coding and step-through debugging. >>>> >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>>> >>> _______________________________________________ >>>> >>> Semediawiki-user mailing list >>>> >>> Sem...@li... >>>> >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>>> >>> >>>> >>> >>>> >>> >>>> >> >>>> >> >>>> >> >>>> >> >>>> ------------------------------------------------------------------------------ >>>> >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) >>>> are >>>> >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly >>>> and >>>> >> easily build your RIAs with Flex Builder, the Eclipse(TM)based >>>> development >>>> >> software that enables intelligent coding and step-through debugging. >>>> >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>>> >> _______________________________________________ >>>> >> Semediawiki-user mailing list >>>> >> Sem...@li... >>>> >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>>> >> >>>> > >>>> > >>>> > >>>> ------------------------------------------------------------------------------ >>>> > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) >>>> are >>>> > powering Web 2.0 with engaging, cross-platform capabilities. Quickly >>>> and >>>> > easily build your RIAs with Flex Builder, the Eclipse(TM)based >>>> development >>>> > software that enables intelligent coding and step-through debugging. >>>> > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>>> > _______________________________________________ >>>> > Semediawiki-user mailing list >>>> > Sem...@li... >>>> > https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>>> > >>>> > >>>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based >>> development >>> software that enables intelligent coding and step-through debugging. >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>> _______________________________________________ >>> Semediawiki-user mailing list >>> Sem...@li... >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>> >>> >> > |
From: Thomas F. <tho...@gm...> - 2009-03-23 17:30:45
|
(response too long, canceling first post) quick off the top of my head - maybe something like this, though this just returns all of the pages in a given category: >From includes/specials/SpecialExport.php function wfExportGetPagesFromCategory( $title ) { global $wgContLang; $name = $title->getDBkey(); $dbr = wfGetDB( DB_SLAVE ); list( $page, $categorylinks ) = $dbr->tableNamesN( 'page', 'categorylinks' ); $sql = "SELECT page_namespace, page_title FROM $page " . "JOIN $categorylinks ON cl_from = page_id " . "WHERE cl_to = " . $dbr->addQuotes( $name ); $pages = array(); $res = $dbr->query( $sql, 'wfExportGetPagesFromCategory' ); while ( $row = $dbr->fetchObject( $res ) ) { $n = $row->page_title; if ($row->page_namespace) { $ns = $wgContLang->getNsText( $row->page_namespace ); $n = $ns . ':' . $n; } $pages[] = $n; } $dbr->freeResult($res); return $pages; } |
From: Yaron K. <ya...@gm...> - 2009-03-23 17:52:24
|
Cool, I think we may have found ourselves a solution. :) It's probably worth adding this code to the documentation pages for Semantic Google Maps and/or Google Geocoder. And of course, first prize to whoever is first able to run the script on real data. -Yaron 2009/3/23 Thomas Fellows <tho...@gm...> > (response too long, canceling first post) > > quick off the top of my head - maybe something like this, though this just > returns all of the pages in a given category: > > From includes/specials/SpecialExport.php > > function wfExportGetPagesFromCategory( $title ) { > global $wgContLang; > > $name = $title->getDBkey(); > > $dbr = wfGetDB( DB_SLAVE ); > > list( $page, $categorylinks ) = $dbr->tableNamesN( 'page', 'categorylinks' > ); > $sql = "SELECT page_namespace, page_title FROM $page " . > "JOIN $categorylinks ON cl_from = page_id " . > "WHERE cl_to = " . $dbr->addQuotes( $name ); > > $pages = array(); > $res = $dbr->query( $sql, 'wfExportGetPagesFromCategory' ); > while ( $row = $dbr->fetchObject( $res ) ) { > $n = $row->page_title; > if ($row->page_namespace) { > $ns = $wgContLang->getNsText( $row->page_namespace ); > $n = $ns . ':' . $n; > } > > $pages[] = $n; > } > $dbr->freeResult($res); > > return $pages; > } > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |
From: Keith F. <Kei...@pn...> - 2009-03-27 21:12:56
|
So, I¹m working on writing a script to make this work on real data. I¹m not using POM, because it doesn¹t sound like it¹s being maintained. Instead I¹m writing a php script to be run from the command line, using the code below as a starting point. The big caveat here is that I¹m not (yet) a MediaWiki hacker, so I¹m at the base of the big learning curve. In fact, this isn¹t turning out to be too big a deal. But I have hit a significant bump, that I would appreciate some help with. I figured out how to add new properties to the pages I¹d like to attach coordinates to. This works, insofar as SMW tables get updated: the new property shows up in the property browser, the value is what I set it to, etc. However, the #ask queries don¹t pick the property up. This leads me to believe that the #ask query uses the page source to find properties. I¹ve drawn this conclusion based on the property text not being in the wiki, just in the SMW database tables. So, I¹m wondering how to get the #ask queries to work. Do I either a) update the wiki text based on the SMW tables (which I¹m pretty sure isn¹t an option) b) update the wiki text from PHP so as to reflect the changes I¹ve made to the SMW data? c) other? If I need to modify the wiki text, can anyone point me to some code that does that? Thanks for all the help. - Keith On 3/23/09 10:52 AM, "Yaron Koren" <ya...@gm...> wrote: > Cool, I think we may have found ourselves a solution. :) It's probably worth > adding this code to the documentation pages for Semantic Google Maps and/or > Google Geocoder. And of course, first prize to whoever is first able to run > the script on real data. > > -Yaron > > > 2009/3/23 Thomas Fellows <tho...@gm...> >> (response too long, canceling first post) >> >> quick off the top of my head - maybe something like this, though this just >> returns all of the pages in a given category: >> >> From includes/specials/SpecialExport.php >> >> function wfExportGetPagesFromCategory( $title ) { >> global $wgContLang; >> >> $name = $title->getDBkey(); >> >> $dbr = wfGetDB( DB_SLAVE ); >> >> list( $page, $categorylinks ) = $dbr->tableNamesN( 'page', 'categorylinks' ); >> $sql = "SELECT page_namespace, page_title FROM $page " . >> "JOIN $categorylinks ON cl_from = page_id " . >> "WHERE cl_to = " . $dbr->addQuotes( $name ); >> >> $pages = array(); >> $res = $dbr->query( $sql, 'wfExportGetPagesFromCategory' ); >> while ( $row = $dbr->fetchObject( $res ) ) { >> $n = $row->page_title; >> if ($row->page_namespace) { >> $ns = $wgContLang->getNsText( $row->page_namespace ); >> $n = $ns . ':' . $n; >> } >> >> $pages[] = $n; >> } >> $dbr->freeResult($res); >> >> return $pages; >> } >> >> ----------------------------------------------------------------------------->> - >> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >> software that enables intelligent coding and step-through debugging. >> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >> _______________________________________________ >> Semediawiki-user mailing list >> Sem...@li... >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> > > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user |
From: Yaron K. <ya...@gm...> - 2009-03-27 21:26:17
|
I'll leave it to Sergey to comment on POM specifically, but you should never modify the SMW tables directly - they'll get overwritten as soon as someone modifies the corresponding page. You should only ever make changes to the wiki pages themselves. I'd use POM, by the way. If you really don't want to, look into Article::doEdit(). -Yaron On Fri, Mar 27, 2009 at 5:12 PM, Keith Fligg <Kei...@pn...> wrote: > So, I’m working on writing a script to make this work on real data. I’m > not using POM, because it doesn’t sound like it’s being maintained. Instead > I’m writing a php script to be run from the command line, using the code > below as a starting point. The big caveat here is that I’m not (yet) a > MediaWiki hacker, so I’m at the base of the big learning curve. > > In fact, this isn’t turning out to be too big a deal. But I have hit a > significant bump, that I would appreciate some help with. I figured out how > to add new properties to the pages I’d like to attach coordinates to. This > works, insofar as SMW tables get updated: the new property shows up in the > property browser, the value is what I set it to, etc. However, the #ask > queries don’t pick the property up. This leads me to believe that the #ask > query uses the page source to find properties. > > I’ve drawn this conclusion based on the property text not being in the > wiki, just in the SMW database tables. So, I’m wondering how to get the > #ask queries to work. Do I either a) update the wiki text based on the SMW > tables (which I’m pretty sure isn’t an option) b) update the wiki text from > PHP so as to reflect the changes I’ve made to the SMW data? c) other? > > If I need to modify the wiki text, can anyone point me to some code that > does that? > > Thanks for all the help. > > - Keith > > > > On 3/23/09 10:52 AM, "Yaron Koren" <ya...@gm...> wrote: > > Cool, I think we may have found ourselves a solution. :) It's probably > worth adding this code to the documentation pages for Semantic Google Maps > and/or Google Geocoder. And of course, first prize to whoever is first able > to run the script on real data. > > -Yaron > > > 2009/3/23 Thomas Fellows <tho...@gm...> > > (response too long, canceling first post) > > quick off the top of my head - maybe something like this, though this just > returns all of the pages in a given category: > > From includes/specials/SpecialExport.php > > function wfExportGetPagesFromCategory( $title ) { > global $wgContLang; > > $name = $title->getDBkey(); > > $dbr = wfGetDB( DB_SLAVE ); > > list( $page, $categorylinks ) = $dbr->tableNamesN( 'page', 'categorylinks' > ); > $sql = "SELECT page_namespace, page_title FROM $page " . > "JOIN $categorylinks ON cl_from = page_id " . > "WHERE cl_to = " . $dbr->addQuotes( $name ); > > $pages = array(); > $res = $dbr->query( $sql, 'wfExportGetPagesFromCategory' ); > while ( $row = $dbr->fetchObject( $res ) ) { > $n = $row->page_title; > if ($row->page_namespace) { > $ns = $wgContLang->getNsText( $row->page_namespace ); > $n = $ns . ':' . $n; > } > > $pages[] = $n; > } > $dbr->freeResult($res); > > return $pages; > } > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > > > ------------------------------ > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > ------------------------------ > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |
From: Keith F. <Kei...@pn...> - 2009-03-27 21:33:31
|
Thanks for the pointer. The other issue with POM is that I wouldn¹t know how to find all of the pages for a category. I also think that I¹ll be finding myself working on additional tasks that will require better knowledge of how to use PHP to get at MW, so this is a pretty good learning experience. One point though. In order to avoid having to run SMW_refreshData, wouldn¹t it make sense to update the SMW tables via smwfGetStore()->updateData in addition to using Article::doEdit to change the wiki text? Thanks again, - Keith On 3/27/09 2:26 PM, "Yaron Koren" <ya...@gm...> wrote: > I'll leave it to Sergey to comment on POM specifically, but you should never > modify the SMW tables directly - they'll get overwritten as soon as someone > modifies the corresponding page. You should only ever make changes to the wiki > pages themselves. > > I'd use POM, by the way. If you really don't want to, look into > Article::doEdit(). > > -Yaron > > On Fri, Mar 27, 2009 at 5:12 PM, Keith Fligg <Kei...@pn...> wrote: >> So, I¹m working on writing a script to make this work on real data. I¹m not >> using POM, because it doesn¹t sound like it¹s being maintained. Instead I¹m >> writing a php script to be run from the command line, using the code below as >> a starting point. The big caveat here is that I¹m not (yet) a MediaWiki >> hacker, so I¹m at the base of the big learning curve. >> >> In fact, this isn¹t turning out to be too big a deal. But I have hit a >> significant bump, that I would appreciate some help with. I figured out how >> to add new properties to the pages I¹d like to attach coordinates to. This >> works, insofar as SMW tables get updated: the new property shows up in the >> property browser, the value is what I set it to, etc. However, the #ask >> queries don¹t pick the property up. This leads me to believe that the #ask >> query uses the page source to find properties. >> >> I¹ve drawn this conclusion based on the property text not being in the wiki, >> just in the SMW database tables. So, I¹m wondering how to get the #ask >> queries to work. Do I either a) update the wiki text based on the SMW tables >> (which I¹m pretty sure isn¹t an option) b) update the wiki text from PHP so >> as to reflect the changes I¹ve made to the SMW data? c) other? >> >> If I need to modify the wiki text, can anyone point me to some code that does >> that? >> >> Thanks for all the help. >> >> - Keith >> >> >> >> On 3/23/09 10:52 AM, "Yaron Koren" <ya...@gm... >> <http://ya...@gm...> > wrote: >> >>> Cool, I think we may have found ourselves a solution. :) It's probably worth >>> adding this code to the documentation pages for Semantic Google Maps and/or >>> Google Geocoder. And of course, first prize to whoever is first able to run >>> the script on real data. >>> >>> -Yaron >>> >>> >>> 2009/3/23 Thomas Fellows <tho...@gm... >>> <http://tho...@gm...> > >>>> (response too long, canceling first post) >>>> >>>> quick off the top of my head - maybe something like this, though this just >>>> returns all of the pages in a given category: >>>> >>>> From includes/specials/SpecialExport.php >>>> >>>> function wfExportGetPagesFromCategory( $title ) { >>>> global $wgContLang; >>>> >>>> $name = $title->getDBkey(); >>>> >>>> $dbr = wfGetDB( DB_SLAVE ); >>>> >>>> list( $page, $categorylinks ) = $dbr->tableNamesN( 'page', 'categorylinks' >>>> ); >>>> $sql = "SELECT page_namespace, page_title FROM $page " . >>>> "JOIN $categorylinks ON cl_from = page_id " . >>>> "WHERE cl_to = " . $dbr->addQuotes( $name ); >>>> >>>> $pages = array(); >>>> $res = $dbr->query( $sql, 'wfExportGetPagesFromCategory' ); >>>> while ( $row = $dbr->fetchObject( $res ) ) { >>>> $n = $row->page_title; >>>> if ($row->page_namespace) { >>>> $ns = $wgContLang->getNsText( $row->page_namespace ); >>>> $n = $ns . ':' . $n; >>>> } >>>> >>>> $pages[] = $n; >>>> } >>>> $dbr->freeResult($res); >>>> >>>> return $pages; >>>> } >>>> >>>> --------------------------------------------------------------------------- >>>> --- >>>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >>>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >>>> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >>>> software that enables intelligent coding and step-through debugging. >>>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>>> _______________________________________________ >>>> Semediawiki-user mailing list >>>> Sem...@li... >>>> <http://Sem...@li...> >>>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >>>> >>> >>> >>> >>> ---------------------------------------------------------------------------- >>> -- >>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are >>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and >>> easily build your RIAs with Flex Builder, the Eclipse(TM)based development >>> software that enables intelligent coding and step-through debugging. >>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com >>> >>> _______________________________________________ >>> Semediawiki-user mailing list >>> Sem...@li... >>> <http://Sem...@li...> >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |
From: Sergey C. <ser...@gm...> - 2009-03-28 03:55:54
|
POM is only for manipulating the page body, that's a hard part (trust me, I'm experienced Perl hacker and my original approach didn't work so I wrote POM). Finding pages by category is easy - changing just one parameter's value in one template considering all the other formatting and stuff is what POM is for and even though it's not being updated frequently with all the ideas I have for it, MediaWiki syntax didn't change either. Actual editing can be done either using POM itself (that minor addition that exposes getter and setter through MW API) or using all different other methods - I actually modified edit.php maintenance script to work with content from STDIN and just push the results of my other data mining scripts through it. You can use POM directly with Article::doEdit for example. Most important part as Yaron mentioned is to just write it as wiki page - it's the only way to make sure all the parser functions and SMW parsing will work properly and it's the easiest way as well as most of the complexity can be left to MW templates and parser functions. Thank you, Sergey -- Sergey Chernyshev http://www.sergeychernyshev.com/ 2009/3/27 Keith Fligg <Kei...@pn...> > Thanks for the pointer. The other issue with POM is that I wouldn’t know > how to find all of the pages for a category. I also think that I’ll be > finding myself working on additional tasks that will require better > knowledge of how to use PHP to get at MW, so this is a pretty good learning > experience. > > One point though. In order to avoid having to run SMW_refreshData, > wouldn’t it make sense to update the SMW tables via > smwfGetStore()->updateData in addition to using Article::doEdit to change > the wiki text? > > Thanks again, > > - Keith > > > On 3/27/09 2:26 PM, "Yaron Koren" <ya...@gm...> wrote: > > I'll leave it to Sergey to comment on POM specifically, but you should > never modify the SMW tables directly - they'll get overwritten as soon as > someone modifies the corresponding page. You should only ever make changes > to the wiki pages themselves. > > I'd use POM, by the way. If you really don't want to, look into > Article::doEdit(). > > -Yaron > > On Fri, Mar 27, 2009 at 5:12 PM, Keith Fligg <Kei...@pn...> wrote: > > So, I’m working on writing a script to make this work on real data. I’m > not using POM, because it doesn’t sound like it’s being maintained. Instead > I’m writing a php script to be run from the command line, using the code > below as a starting point. The big caveat here is that I’m not (yet) a > MediaWiki hacker, so I’m at the base of the big learning curve. > > In fact, this isn’t turning out to be too big a deal. But I have hit a > significant bump, that I would appreciate some help with. I figured out how > to add new properties to the pages I’d like to attach coordinates to. This > works, insofar as SMW tables get updated: the new property shows up in the > property browser, the value is what I set it to, etc. However, the #ask > queries don’t pick the property up. This leads me to believe that the #ask > query uses the page source to find properties. > > I’ve drawn this conclusion based on the property text not being in the > wiki, just in the SMW database tables. So, I’m wondering how to get the > #ask queries to work. Do I either a) update the wiki text based on the SMW > tables (which I’m pretty sure isn’t an option) b) update the wiki text from > PHP so as to reflect the changes I’ve made to the SMW data? c) other? > > If I need to modify the wiki text, can anyone point me to some code that > does that? > > Thanks for all the help. > > - Keith > > > > On 3/23/09 10:52 AM, "Yaron Koren" <ya...@gm... < > http://ya...@gm...> > wrote: > > Cool, I think we may have found ourselves a solution. :) It's probably > worth adding this code to the documentation pages for Semantic Google Maps > and/or Google Geocoder. And of course, first prize to whoever is first able > to run the script on real data. > > -Yaron > > > 2009/3/23 Thomas Fellows <tho...@gm... < > http://tho...@gm...> > > > (response too long, canceling first post) > > quick off the top of my head - maybe something like this, though this just > returns all of the pages in a given category: > > >From includes/specials/SpecialExport.php > > function wfExportGetPagesFromCategory( $title ) { > global $wgContLang; > > $name = $title->getDBkey(); > > $dbr = wfGetDB( DB_SLAVE ); > > list( $page, $categorylinks ) = $dbr->tableNamesN( 'page', 'categorylinks' > ); > $sql = "SELECT page_namespace, page_title FROM $page " . > "JOIN $categorylinks ON cl_from = page_id " . > "WHERE cl_to = " . $dbr->addQuotes( $name ); > > $pages = array(); > $res = $dbr->query( $sql, 'wfExportGetPagesFromCategory' ); > while ( $row = $dbr->fetchObject( $res ) ) { > $n = $row->page_title; > if ($row->page_namespace) { > $ns = $wgContLang->getNsText( $row->page_namespace ); > $n = $ns . ':' . $n; > } > > $pages[] = $n; > } > $dbr->freeResult($res); > > return $pages; > } > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... < > http://Sem...@li...> > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > > > ------------------------------ > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > ------------------------------ > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... < > http://Sem...@li...> > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |