From: badon <fas...@gm...> - 2011-07-29 01:37:17
|
I ran into a problem where semantic data in parameters within a nested template do not work. Research into the problem indicates that this is a known limitation of SMW: http://meta.wikimedia.org/wiki/Help:Substitution#Applications "Some MediaWiki extensions have the restriction that if they are used in a template with parameters, they only work if the template is substituted. This applies for example in the case of a template parameter inside an in-page query in Semantic MediaWiki." http://semantic-mediawiki.org/wiki/User:Jeroen_De_Dauw#Forms "Stuff I'd like to be able to do: ... Support for nesting of templates ... the lack of these features is one of the main arguments to not (fully) using SF." And a few other blurbs around the internet... Is there a page that lists them, preferably with suggestions for workarounds? I found these, which are helpful: http://semantic-mediawiki.org/wiki/Roadmap http://semantic-mediawiki.org/doc/todo.html In my own situation of dealing with the nested template limitation, I tried the substitution workaround: http://meta.wikimedia.org/wiki/Help:Substitution But found that it does not work within <includeonly> tags. Are there other workarounds that might do the job for me, other than laboriously maintaining thousands of pages manually, without templates? Whenever I run into a problem like this I think "crap, I'm going to have to figure out how to use bots now", but then I find a workaround that's simpler and more expedient. Ideas? -- View this message in context: http://old.nabble.com/SMW-template-limitations-tp32159430p32159430.html Sent from the Semantic Mediawiki - User mailing list archive at Nabble.com. |
From: Alex M. H. <amh...@on...> - 2011-07-29 07:27:38
|
In my experience, if you're running into a situation where you need to use substitution, then the answer is often "crap, I'm going to have to figure out how to use bots now", but there is a pretty easy way to work around that with the ReplaceText extension (http://www.mediawiki.org/wiki/Extension:Replace_Text), particularly now that it includes regex support. Here's what I typically do for a template that I need to substitute: <includeonly><!--begin Template:SomeName-->template test with {{{Parameters|default values}}}, etc.<!--end Template:SomeName--></includeonly><noinclude>This is template:SomeName. It must be substituted to work properly.</noinclude> In this case, to update the template, you'd search for \<\!\-\-begin Template\:SomeName\-\-\>.*\<\!\-\-end Template\:SomeName \-\-\> and replace with {{subst:SomeName}} and make sure that the "use regular expressions" box is checked (the above is probably backslash overkill, but it doesn't cause any problems). This also assumes there are no line breaks in your template; if there are, you may need substitute the part between the template tags with the appropriate regex in the search box. If you have any parameters you need to pass to the template, do that in the "replace" box. If you need to pass different parameters to different pages and still make mass changes to the template, you may want to look at how you're using the template to see if you can redesign it to be more efficient (from a user/admin perspective at least). I used to have templates that I thought needed to be substituted, but now I have them nested inside each other (e.g., use one template to call a group of other templates) and they dynamically populate the necessary values. With any template that still needs to be substituted, I make sure that it needs to take no parameters and can be automatically populated via queries. I know that this approach is generally frowned upon by some people, but for some types of content it is not only appropriate, but essential. If you're on a system that has lots of concurrent viewers, the system should update itself relatively quickly. If you're on a development system, I would just do a runjobs.php (and if you're on a multi-core system, something like runJobs.php --procs={number of cores +1}. On development systems, I usually have a cron job like that running in the background that polls once a minute to see if the jobs are running, and if not, runs them. 1) Set up a script (something like this): #!/bin/sh #jobrunner.sh if ps -ef | grep -v grep | grep runJobs.php ; then exit 0 else #set procs value to number of processor cores +1 - seems to work for me; experiment to see what works best for you export MW_INSTALL_PATH=/path/to/smw/installation && php /path/to/smw/installation/maintenance/runJobs.php --procs=3 >/dev/null exit 0 fi 2) Put jobrunner.sh into a cron job, e.g., */1 * * * * /path/to/jobrunner.sh If you're running on Windows, I'm not sure of how to do the equivalent, but it can't be that hard. Hope this helps, Alex -- Alex M. Hendler ontolawgy™ LLC - connect . . . the . . . dots™ ----Original Message----- To: sem...@li... Subject: [Semediawiki-user] SMW template limitations Date: Thu, 28 Jul 2011 18:17:47 -0700 (PDT) I ran into a problem where semantic data in parameters within a nested template do not work. Research into the problem indicates that this is a known limitation of SMW: http://meta.wikimedia.org/wiki/Help:Substitution#Applications "Some MediaWiki extensions have the restriction that if they are used in a template with parameters, they only work if the template is substituted. This applies for example in the case of a template parameter inside an in-page query in Semantic MediaWiki." http://semantic-mediawiki.org/wiki/User:Jeroen_De_Dauw#Forms "Stuff I'd like to be able to do: ... Support for nesting of templates ... the lack of these features is one of the main arguments to not (fully) using SF." And a few other blurbs around the internet... Is there a page that lists them, preferably with suggestions for workarounds? I found these, which are helpful: http://semantic-mediawiki.org/wiki/Roadmap http://semantic-mediawiki.org/doc/todo.html In my own situation of dealing with the nested template limitation, I tried the substitution workaround: http://meta.wikimedia.org/wiki/Help:Substitution But found that it does not work within <includeonly> tags. Are there other workarounds that might do the job for me, other than laboriously maintaining thousands of pages manually, without templates? Whenever I run into a problem like this I think "crap, I'm going to have to figure out how to use bots now", but then I find a workaround that's simpler and more expedient. Ideas? |
From: badon <fas...@gm...> - 2011-07-29 19:30:01
|
Wow, thank you for all that detailed information. It's going to take me a while to study it. I really appreciate the supplemental info in-context that'll make it easier. Alex M. Hendler-2 wrote: > > In my experience, if you're running into a situation where you need to > use substitution, then the answer is often "crap, I'm going to have to > figure out how to use bots now", but there is a pretty easy way to work > around that with the ReplaceText extension > (http://www.mediawiki.org/wiki/Extension:Replace_Text), particularly now > that it includes regex support. > > Here's what I typically do for a template that I need to substitute: > > <includeonly><!--begin Template:SomeName-->template test with > {{{Parameters|default values}}}, etc.<!--end > Template:SomeName--></includeonly><noinclude>This is template:SomeName. > It must be substituted to work properly.</noinclude> > > In this case, to update the template, you'd search for > > \<\!\-\-begin Template\:SomeName\-\-\>.*\<\!\-\-end Template\:SomeName > \-\-\> > > and replace with > > {{subst:SomeName}} > > and make sure that the "use regular expressions" box is checked (the > above is probably backslash overkill, but it doesn't cause any > problems). This also assumes there are no line breaks in your template; > if there are, you may need substitute the part between the template tags > with the appropriate regex in the search box. If you have any parameters > you need to pass to the template, do that in the "replace" box. > > If you need to pass different parameters to different pages and still > make mass changes to the template, you may want to look at how you're > using the template to see if you can redesign it to be more efficient > (from a user/admin perspective at least). I used to have templates that > I thought needed to be substituted, but now I have them nested inside > each other (e.g., use one template to call a group of other templates) > and they dynamically populate the necessary values. With any template > that still needs to be substituted, I make sure that it needs to take no > parameters and can be automatically populated via queries. I know that > this approach is generally frowned upon by some people, but for some > types of content it is not only appropriate, but essential. > > If you're on a system that has lots of concurrent viewers, the system > should update itself relatively quickly. If you're on a development > system, I would just do a runjobs.php (and if you're on a multi-core > system, something like runJobs.php --procs={number of cores +1}. On > development systems, I usually have a cron job like that running in the > background that polls once a minute to see if the jobs are running, and > if not, runs them. > > 1) Set up a script (something like this): > > #!/bin/sh > #jobrunner.sh > if ps -ef | grep -v grep | grep runJobs.php ; then > exit 0 > else > #set procs value to number of processor cores +1 - seems to work for me; > experiment to see what works best for you > export MW_INSTALL_PATH=/path/to/smw/installation && php > /path/to/smw/installation/maintenance/runJobs.php --procs=3 >/dev/null > exit 0 > fi > > > 2) Put jobrunner.sh into a cron job, e.g., > > */1 * * * * /path/to/jobrunner.sh > > If you're running on Windows, I'm not sure of how to do the equivalent, > but it can't be that hard. > > Hope this helps, > Alex > > -- > Alex M. Hendler > ontolawgy™ LLC - connect . . . the . . . dots™ > > ----Original Message----- > > > > To: sem...@li... > Subject: [Semediawiki-user] SMW template limitations > Date: Thu, 28 Jul 2011 18:17:47 -0700 (PDT) > > I ran into a problem where semantic data in parameters within a nested > template do not work. Research into the problem indicates that this is a > known limitation of SMW: > > http://meta.wikimedia.org/wiki/Help:Substitution#Applications > > "Some MediaWiki extensions have the restriction that if they are used in a > template with parameters, they only work if the template is substituted. > This applies for example in the case of a template parameter inside an > in-page query in Semantic MediaWiki." > > http://semantic-mediawiki.org/wiki/User:Jeroen_De_Dauw#Forms > > "Stuff I'd like to be able to do: ... Support for nesting of templates ... > the lack of these features is one of the main arguments to not (fully) > using > SF." > > And a few other blurbs around the internet... > > Is there a page that lists them, preferably with suggestions for > workarounds? I found these, which are helpful: > > http://semantic-mediawiki.org/wiki/Roadmap > http://semantic-mediawiki.org/doc/todo.html > > In my own situation of dealing with the nested template limitation, I > tried > the substitution workaround: > > http://meta.wikimedia.org/wiki/Help:Substitution > > But found that it does not work within <includeonly> tags. > > Are there other workarounds that might do the job for me, other than > laboriously maintaining thousands of pages manually, without templates? > Whenever I run into a problem like this I think "crap, I'm going to have > to > figure out how to use bots now", but then I find a workaround that's > simpler > and more expedient. > > Ideas? > > > ------------------------------------------------------------------------------ > Got Input? Slashdot Needs You. > Take our quick survey online. Come on, we don't ask for help often. > Plus, you'll get a chance to win $100 to spend on ThinkGeek. > http://p.sf.net/sfu/slashdot-survey > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > -- View this message in context: http://old.nabble.com/SMW-template-limitations-tp32159430p32161638.html Sent from the Semantic Mediawiki - User mailing list archive at Nabble.com. |
From: badon <fas...@gm...> - 2011-08-17 06:00:13
|
Could you expound on that a little more? An example would be helpful. I'm not sure what you're describing, but it sounds like a more advanced usage of templates where your properties are sort of abstracted away into the templates so you can make mass changes to the properties they contain. Alex M. Hendler-2 wrote: > > ... > > If you need to pass different parameters to different pages and still > make mass changes to the template, you may want to look at how you're > using the template to see if you can redesign it to be more efficient > (from a user/admin perspective at least). I used to have templates that > I thought needed to be substituted, but now I have them nested inside > each other (e.g., use one template to call a group of other templates) > and they dynamically populate the necessary values. With any template > that still needs to be substituted, I make sure that it needs to take no > parameters and can be automatically populated via queries. I know that > this approach is generally frowned upon by some people, but for some > types of content it is not only appropriate, but essential. > > ... > > Hope this helps, > Alex > > -- > Alex M. Hendler > ontolawgy™ LLC - connect . . . the . . . dots™ > > ----Original Message----- > > > > To: sem...@li... > Subject: [Semediawiki-user] SMW template limitations > Date: Thu, 28 Jul 2011 18:17:47 -0700 (PDT) > > I ran into a problem where semantic data in parameters within a nested > template do not work. Research into the problem indicates that this is a > known limitation of SMW: > > http://meta.wikimedia.org/wiki/Help:Substitution#Applications > > "Some MediaWiki extensions have the restriction that if they are used in a > template with parameters, they only work if the template is substituted. > This applies for example in the case of a template parameter inside an > in-page query in Semantic MediaWiki." > > http://semantic-mediawiki.org/wiki/User:Jeroen_De_Dauw#Forms > > "Stuff I'd like to be able to do: ... Support for nesting of templates ... > the lack of these features is one of the main arguments to not (fully) > using > SF." > > And a few other blurbs around the internet... > > Is there a page that lists them, preferably with suggestions for > workarounds? I found these, which are helpful: > > http://semantic-mediawiki.org/wiki/Roadmap > http://semantic-mediawiki.org/doc/todo.html > > In my own situation of dealing with the nested template limitation, I > tried > the substitution workaround: > > http://meta.wikimedia.org/wiki/Help:Substitution > > But found that it does not work within <includeonly> tags. > > Are there other workarounds that might do the job for me, other than > laboriously maintaining thousands of pages manually, without templates? > Whenever I run into a problem like this I think "crap, I'm going to have > to > figure out how to use bots now", but then I find a workaround that's > simpler > and more expedient. > > Ideas? > > > ------------------------------------------------------------------------------ > Got Input? Slashdot Needs You. > Take our quick survey online. Come on, we don't ask for help often. > Plus, you'll get a chance to win $100 to spend on ThinkGeek. > http://p.sf.net/sfu/slashdot-survey > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > -- View this message in context: http://old.nabble.com/SMW-template-limitations-tp32159430p32277212.html Sent from the Semantic Mediawiki - User mailing list archive at Nabble.com. |
From: Alex M. H. <amh...@on...> - 2011-08-19 21:47:46
|
What is it, exactly, that you are trying to do? I am not an SMW developer, so it is relatively difficult for me to address your request in the abstract. If you're talking about passing parameters from one template to another on the same page, that's actually relatively easy to do with SemanticForms - I think I may have even described how to do it last year or the year before on this mailing list. If you're talking about lumping templates together within a single template, where the templates don't share common parameters (except, e.g., the {{PAGENAME}}), that's what I was describing in my previous message. As you requested, there's a more detailed description below. One (extremely simplified) example of what I described might be a template that sets a page's volume, and another that sets its weight. This is a somewhat silly example, but let's use it anyway. You would have one template {{Volume}} and another {{Weight}}. You would them have a third template called {{ShippingDimensions}} which would contain <includeonly>{{Volume}}{{Weight}}</includeonly> Again, this is a somewhat silly example, but there are some reasons for having templates that you can call independently, but that are usually called together (e.g., if you only have one set of data for a certain page). If these are set on a page name's values, e.g., the {{Volume}} template is: <includeonly>{{#expr:{{#show:{{PAGENAME}}|?Length#-| link=none}}*{{#show:{{PAGENAME}}|?Width#-| link=none}}*{{#show:{{PAGENAME}}|?Height#-|link=none}}}}</includeonly> {{Weight}} template is: <includeonly>{{#expr:{{#show:{{PAGENAME}}|?Molecular weight#-| link=none}}*{{#show:{{PAGENAME}}|?Mols#-|link=none}}}}</includeonly> Then, if you, say, want to pull up a catalog of items and their volumes, {{#ask: [[Volume::+]]|?Volume}}, you would get a big mess unless you modify the {{Volume}} template to use {{subst:PAGENAME}} or enclose it (or its invoking template(s)) in <noinclude> tags in every instance. Setting property values based on property values within the same page (I call this a "reflexive query") is generally frowned upon because it complicates determining the provenance of property values. I will reiterate that here: You generally should avoid doing this at all costs, unless you fall into an extremely limited class of use cases where this is the only appropriate solution. You will know you are there when, uh, there is no other appropriate solution. However, if you must do something like that and know exactly why you are doing it in this particular way, here are my recommendations, for what they're worth: 1) Don't make or use templates that rely on substitution. 2) If you do need to use substitution, see if it would work to surround every instance of that template in <noinclude> tags, e.g., if you use lots of transclusions or queries to access the data; in this case, <noinclude>{{ShippingDimensions}}</noinclude> 3) If that won't work, and your template requires substitution, surround its content with <!--descriptive tags--> so that template instances can be easily found and replaced if you need to change the template; in this case, both of the ShippingDimensions sub templates would need to be modified to used {{subst:PAGENAME}}, and you would need to call {{subst:ShippingDimensions}} for the template to work. Again, very limited use cases, generally NOT a recommended approach. I hope this helps, Alex -- Alex M. Hendler ontolawgy™ LLC - connect . . . the . . . dots™ ----Original Message----- From: badon <fas...@gm...> To: sem...@li... Subject: Re: [Semediawiki-user] SMW template limitations Date: Tue, 16 Aug 2011 23:00:07 -0700 (PDT) Could you expound on that a little more? An example would be helpful. I'm not sure what you're describing, but it sounds like a more advanced usage of templates where your properties are sort of abstracted away into the templates so you can make mass changes to the properties they contain. Alex M. Hendler-2 wrote: > > ... > > If you need to pass different parameters to different pages and still > make mass changes to the template, you may want to look at how you're > using the template to see if you can redesign it to be more efficient > (from a user/admin perspective at least). I used to have templates that > I thought needed to be substituted, but now I have them nested inside > each other (e.g., use one template to call a group of other templates) > and they dynamically populate the necessary values. With any template > that still needs to be substituted, I make sure that it needs to take no > parameters and can be automatically populated via queries. I know that > this approach is generally frowned upon by some people, but for some > types of content it is not only appropriate, but essential. > > ... > > Hope this helps, > Alex > > -- > Alex M. Hendler > ontolawgy™ LLC - connect . . . the . . . dots™ > > ----Original Message----- > > > > To: sem...@li... > Subject: [Semediawiki-user] SMW template limitations > Date: Thu, 28 Jul 2011 18:17:47 -0700 (PDT) > > I ran into a problem where semantic data in parameters within a nested > template do not work. Research into the problem indicates that this is a > known limitation of SMW: > > http://meta.wikimedia.org/wiki/Help:Substitution#Applications > > "Some MediaWiki extensions have the restriction that if they are used in a > template with parameters, they only work if the template is substituted. > This applies for example in the case of a template parameter inside an > in-page query in Semantic MediaWiki." > > http://semantic-mediawiki.org/wiki/User:Jeroen_De_Dauw#Forms > > "Stuff I'd like to be able to do: ... Support for nesting of templates ... > the lack of these features is one of the main arguments to not (fully) > using > SF." > > And a few other blurbs around the internet... > > Is there a page that lists them, preferably with suggestions for > workarounds? I found these, which are helpful: > > http://semantic-mediawiki.org/wiki/Roadmap > http://semantic-mediawiki.org/doc/todo.html > > In my own situation of dealing with the nested template limitation, I > tried > the substitution workaround: > > http://meta.wikimedia.org/wiki/Help:Substitution > > But found that it does not work within <includeonly> tags. > > Are there other workarounds that might do the job for me, other than > laboriously maintaining thousands of pages manually, without templates? > Whenever I run into a problem like this I think "crap, I'm going to have > to > figure out how to use bots now", but then I find a workaround that's > simpler > and more expedient. > > Ideas? > > > ------------------------------------------------------------------------------ > Got Input? Slashdot Needs You. > Take our quick survey online. Come on, we don't ask for help often. > Plus, you'll get a chance to win $100 to spend on ThinkGeek. > http://p.sf.net/sfu/slashdot-survey > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > -- View this message in context: http://old.nabble.com/SMW-template-limitations-tp32159430p32277212.html Sent from the Semantic Mediawiki - User mailing list archive at Nabble.com. ------------------------------------------------------------------------------ Get a FREE DOWNLOAD! and learn more about uberSVN rich system, user administration capabilities and model configuration. Take the hassle out of deploying and managing Subversion and the tools developers use with it. http://p.sf.net/sfu/wandisco-d2d-2 _______________________________________________ Semediawiki-user mailing list Sem...@li... https://lists.sourceforge.net/lists/listinfo/semediawiki-user |