From: Gregorio H. P. <gr...@el...> - 2010-02-10 14:59:14
|
Hi, I'm using SMW and SF in my wiki. All my articles have a "Tag" property for describing the main topics of the article. I want to show a "related articles" section using that "tag" property. I was thinking in using inline queries, but there, I can't do a search based on a property of the article ( I tried something like "{{#ask: [[Tag::{{{tag}}}]] " but of course, it didn't work). Any idea of how I can do this? Thanks, Gregorio. |
From: Joachim B. <ach...@gm...> - 2010-02-10 15:23:15
|
Hi Gregorio, I suppose you collect all tags in one attribute, like separated by commas or something. If so, you can only filter them by using a LIKE query. To do so, make sure you have added the line $smwgQComparators = '<|>|!|~'; to your LocalSettings.php to activate these fuzzy queries. Then you can filter by {{#ask: [[Tag::~*myWantedTag*]] }} Hope this helps, Achim On 10.02.2010 KW6, at 15:32, Gregorio Hernández Piris wrote: > Hi, > > I'm using SMW and SF in my wiki. All my articles have a "Tag" property for > describing the main topics of the article. I want to show a "related > articles" section using that "tag" property. I was thinking in using inline > queries, but there, I can't do a search based on a property of the article ( > I tried something like "{{#ask: [[Tag::{{{tag}}}]] " but of course, it > didn't work). > > Any idea of how I can do this? > > Thanks, > > Gregorio. > ------------------------------------------------------------------------------ > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user |
From: Gregorio H. P. <gr...@el...> - 2010-02-10 16:55:26
|
Hi Achim, thank you for your reply. But, my problem is that "myWantedTag" is dynamic, I want it to be the Tag of the current article, and that's what can't do. That is, I'd like to do something like: {{#ask: [[Tag::~*{{{Tag}}}*]] }} regards, Greg. El 10 de febrero de 2010 16:23, Joachim Bode <ach...@gm...> escribió: > Hi Gregorio, > > I suppose you collect all tags in one attribute, like separated by commas > or something. > If so, you can only filter them by using a LIKE query. To do so, make sure > you have added the line > > $smwgQComparators = '<|>|!|~'; > > to your LocalSettings.php to activate these fuzzy queries. > Then you can filter by > > {{#ask: [[Tag::~*myWantedTag*]] }} > > Hope this helps, > Achim > > > On 10.02.2010 KW6, at 15:32, Gregorio Hernández Piris wrote: > > > Hi, > > > > I'm using SMW and SF in my wiki. All my articles have a "Tag" property > for > > describing the main topics of the article. I want to show a "related > > articles" section using that "tag" property. I was thinking in using > inline > > queries, but there, I can't do a search based on a property of the > article ( > > I tried something like "{{#ask: [[Tag::{{{tag}}}]] " but of course, it > > didn't work). > > > > Any idea of how I can do this? > > > > Thanks, > > > > Gregorio. > > > ------------------------------------------------------------------------------ > > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > > http://p.sf.net/sfu/solaris-dev2dev > > _______________________________________________ > > Semediawiki-user mailing list > > Sem...@li... > > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |
From: Joachim B. <ach...@gm...> - 2010-02-10 16:57:57
|
OK, then try: {{#ask: [[Tag::~*{{PAGENAME}}*]] }} it works on my test page - so if there are still difficulties, let me know. All the best, Achim On 10.02.2010 KW6, at 17:47, Gregorio Hernández Piris wrote: > Hi Achim, > > thank you for your reply. But, my problem is that "myWantedTag" is dynamic, I want it to be the Tag of the current article, and that's what can't do. That is, I'd like to do something like: > > {{#ask: [[Tag::~*{{{Tag}}}*]] }} > > regards, > > Greg. > > El 10 de febrero de 2010 16:23, Joachim Bode <ach...@gm...> escribió: > Hi Gregorio, > > I suppose you collect all tags in one attribute, like separated by commas or something. > If so, you can only filter them by using a LIKE query. To do so, make sure you have added the line > > $smwgQComparators = '<|>|!|~'; > > to your LocalSettings.php to activate these fuzzy queries. > Then you can filter by > > {{#ask: [[Tag::~*myWantedTag*]] }} > > Hope this helps, > Achim > > > On 10.02.2010 KW6, at 15:32, Gregorio Hernández Piris wrote: > > > Hi, > > > > I'm using SMW and SF in my wiki. All my articles have a "Tag" property for > > describing the main topics of the article. I want to show a "related > > articles" section using that "tag" property. I was thinking in using inline > > queries, but there, I can't do a search based on a property of the article ( > > I tried something like "{{#ask: [[Tag::{{{tag}}}]] " but of course, it > > didn't work). > > > > Any idea of how I can do this? > > > > Thanks, > > > > Gregorio. > > ------------------------------------------------------------------------------ > > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > > http://p.sf.net/sfu/solaris-dev2dev > > _______________________________________________ > > Semediawiki-user mailing list > > Sem...@li... > > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > |
From: Gregorio H. P. <gr...@el...> - 2010-02-11 07:42:47
|
Thank you all for your replies. The "pagename" trick could work, but I'm afraid my "Tag" property is a series of values separated by a comma and as someone has already pointed out, that's another problem. Finally, I'll do some PHP/AJAX magic modifying the skin and doing a semantic search via URL. Anyway, I think this could be an interesting thing to add to the SMW project. Regards, Gregorio. El 10 de febrero de 2010 17:57, Joachim Bode <ach...@gm...> escribió: > OK, then try: > > {{#ask: [[Tag::~*{{PAGENAME}}*]] }} > > it works on my test page - so if there are still difficulties, let me know. > > All the best, > Achim > > > > On 10.02.2010 KW6, at 17:47, Gregorio Hernández Piris wrote: > > Hi Achim, > > thank you for your reply. But, my problem is that "myWantedTag" is dynamic, > I want it to be the Tag of the current article, and that's what can't do. > That is, I'd like to do something like: > > {{#ask: [[Tag::~*{{{Tag}}}*]] }} > > regards, > > Greg. > > El 10 de febrero de 2010 16:23, Joachim Bode <ach...@gm...> escribió: > >> Hi Gregorio, >> >> I suppose you collect all tags in one attribute, like separated by commas >> or something. >> If so, you can only filter them by using a LIKE query. To do so, make sure >> you have added the line >> >> $smwgQComparators = '<|>|!|~'; >> >> to your LocalSettings.php to activate these fuzzy queries. >> Then you can filter by >> >> {{#ask: [[Tag::~*myWantedTag*]] }} >> >> Hope this helps, >> Achim >> >> >> On 10.02.2010 KW6, at 15:32, Gregorio Hernández Piris wrote: >> >> > Hi, >> > >> > I'm using SMW and SF in my wiki. All my articles have a "Tag" property >> for >> > describing the main topics of the article. I want to show a "related >> > articles" section using that "tag" property. I was thinking in using >> inline >> > queries, but there, I can't do a search based on a property of the >> article ( >> > I tried something like "{{#ask: [[Tag::{{{tag}}}]] " but of course, it >> > didn't work). >> > >> > Any idea of how I can do this? >> > >> > Thanks, >> > >> > Gregorio. >> > >> ------------------------------------------------------------------------------ >> > SOLARIS 10 is the OS for Data Centers - provides features such as >> DTrace, >> > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW >> > http://p.sf.net/sfu/solaris-dev2dev >> > _______________________________________________ >> > Semediawiki-user mailing list >> > Sem...@li... >> > https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >> > > |
From: Alex M. H. <ont...@on...> - 2010-02-10 16:58:00
|
Gregorio, I have run into this problem as well, but I have not been able to come up with a solution for page-type properties. Are you using Page or String types for your Tags? If you want to dynamically generate the query for string-type tags appearing on the page, the following works on my installation, building on Achim's suggestions (you must enable the "~" comparator, though): {{#ask: [[Tag::~*{{#show: {{subst:PAGENAME}}|?Tag}}*]]}} Here's what I do where there is only one Page-type "Tag" value on the page: {{#ask: [[Tag::{{#show: {{subst:PAGENAME}}|?Tag|link=none}}]]}} However, this will not work if you have more than one "Tag" value. This is because multiple values from "{{#show:" would get returned as a comma-separated list using the syntax above, which would result in {{#ask: [[Tag::Tag1, Tag2, Tag3]]}}, which would not be too helpful for page-type properties. That said, does anyone out there have a solution that might be able to build on the above for page-type properties? (I don't mean to hijack, but this seems very related). Thanks, Alex On Wed, 10 Feb 2010 18:23:03 +0300, Joachim Bode <ach...@gm...> wrote: > Hi Gregorio, > > I suppose you collect all tags in one attribute, like separated by > commas or something. > If so, you can only filter them by using a LIKE query. To do so, make > sure you have added the line > > $smwgQComparators = '<|>|!|~'; > > to your LocalSettings.php to activate these fuzzy queries. > Then you can filter by > > {{#ask: [[Tag::~*myWantedTag*]] }} > > Hope this helps, > Achim > > > On 10.02.2010 KW6, at 15:32, Gregorio Hernández Piris wrote: > >> Hi, >> >> I'm using SMW and SF in my wiki. All my articles have a "Tag" property >> for >> describing the main topics of the article. I want to show a "related >> articles" section using that "tag" property. I was thinking in using >> inline >> queries, but there, I can't do a search based on a property of the >> article ( >> I tried something like "{{#ask: [[Tag::{{{tag}}}]] " but of course, it >> didn't work). >> >> Any idea of how I can do this? >> >> Thanks, >> >> Gregorio. >> ------------------------------------------------------------------------------ >> SOLARIS 10 is the OS for Data Centers - provides features such as >> DTrace, >> Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW >> http://p.sf.net/sfu/solaris-dev2dev >> _______________________________________________ >> Semediawiki-user mailing list >> Sem...@li... >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user > > > ------------------------------------------------------------------------------ > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ |
From: Patrick N. <ma...@pa...> - 2010-02-11 07:50:59
Attachments:
signature.asc
|
Hi Gregorio, On 2010-02-11 15:42, Gregorio Hernández Piris wrote: > The "pagename" trick could work, but I'm afraid my "Tag" property is a > series of values separated by a comma and as someone has already pointed > out, that's another problem. I don't know if this has been proposed, didn't read the whole story: You can use the #arraymap parser function (it comes with Semantic Forms, see its website on how to use it) to store the tags in the Tag property, one at a time. Example: Someone enters the list "Green, Blue", and the template with #arraymap call makes [[Tag::Green]] [[Tag::Blue]] from it. That way queries should work as expected, and no LIKE operator is needed. Patrick. -- Key ID: 0x86E346D4 http://patrick-nagel.net/key.asc Fingerprint: 7745 E1BE FA8B FBAD 76AB 2BFC C981 E686 86E3 46D4 |
From: Alex M. H. <ont...@on...> - 2010-02-12 06:51:43
|
Patrick, Thank you very much for pointing in this direction. The following worked for me: {{#arraymap:{{#ask: [[{{PAGENAME}}]]|?Tag= |link=none|mainlabel=-}}|, |DerivedPagesWithCommonTags|{{#ask: [[Tag::DerivedPagesWithCommonTags]]|?Tag|mainlabel=Pages with tag: '''''DerivedPagesWithCommonTags'''''}}|}} This produces multiple query printouts grouped by Tag in the order in which the Tags appear on the subject page, e.g., Tag C, Tag A, Tag B. I have tried adding "|sort=Tag" to either (or both) queries, but this would not sort the query printout charts on the page. It does produce duplicates where the object pages have more than one tag in common with the subject page, but that is expected, given what #arraymap is doing. Another option, using ArrayExtension (http://www.mediawiki.org/wiki/Extension:ArrayExtension), allows sorting of the query printout charts: {{#arraydefine:DerivedPagesWithCommonTags|{{#ask: [[{{PAGENAME}}]]|?Tag= |link=none|mainlabel=-}} |,|unique}} {{#arraysort:DerivedPagesWithCommonTags|asc}} {{#arrayprint:DerivedPagesWithCommonTags|<br/>|@@@@|{{#ask: [[Tag::@@@@]]|?Tag|mainlabel=Pages with tag '''''@@@@'''''}}}} This sorts the query printouts alphabetically (i.e., separate charts grouped by Tag A, Tag B, Tag C, in that order), but also produces duplicates, if applicable. To help address the duplicates for each option, I added a printout that lists the tag name and clearly labels the main column of the printout with the Tag name. To suppress duplicates, another option might be to create a new property, e.g., "Shares Tag with", blank the output, and restrict the output to the factbox/Browse Properties page: {{#arraymap:{{#ask: [[{{PAGENAME}}]]|?Tag= |link=none|mainlabel=-}}|, |DerivedPagesWithCommonTags|[[Shares Tag with::DerivedPagesWithCommonTags| ]]|}} ....but then ones loses the information about which tags are shared, unless one wanted to make it an n-ary property and get output such as [[Shares Tag with::DerivedPageName;Tag]]. That's not really necessary for my purposes, so I haven't worked out exactly how to do that (I imagine it would involve multiple and/or multidimensional arrays). Gregorio, I'm not sure if this is exactly what you're after, but it sounds like it may be at least close; I hope this helps. Again, Patrick, thanks for the inspiration/direction: Very helpful! Best, Alex -- Alex M. Hendler ontolawgy™ LLC http://ontolawgy.com On Thu, 11 Feb 2010 10:50:32 +0300, Patrick Nagel <ma...@pa...> wrote: > Hi Gregorio, > > On 2010-02-11 15:42, Gregorio Hernández Piris wrote: >> The "pagename" trick could work, but I'm afraid my "Tag" property is a >> series of values separated by a comma and as someone has already pointed >> out, that's another problem. > > I don't know if this has been proposed, didn't read the whole story: You > can use the #arraymap parser function (it comes with Semantic Forms, see > its website on how to use it) to store the tags in the Tag property, one > at a time. Example: Someone enters the list "Green, Blue", and the > template with #arraymap call makes [[Tag::Green]] [[Tag::Blue]] from it. > > That way queries should work as expected, and no LIKE operator is needed. > > Patrick. > |
From: Alex M. H. <ont...@on...> - 2010-02-12 08:57:34
|
Sorry all, I made a mistake in the final code snippet in my previous message. It should be: {{#arraymap:{{#ask: [[{{PAGENAME}}]]|?Tag= |link=none|mainlabel=-}}|, |DerivedCommonTags|{{#arraymap: {{#ask: [[Tag::DerivedCommonTags]]|link=none}}|, |DerivedPagesWithCommonTags|[[Shares Tag with::DerivedPagesWithCommonTags| ]]| }}| }} If anyone comes up with a solution that could track pages with shared tags along with tag names in an n-ary property (or something similar), please share; I think that would be interesting to see. Best, Alex > > -----Original Message----- > From: Alex M. Hendler [mailto:ont...@on...] > Sent: 12 February 2010 06:51 > To: Patrick Nagel; sem...@li... > Subject: Re: [Semediawiki-user] Show related articles, > > Patrick, > > Thank you very much for pointing in this direction. The following worked > for me: > > {{#arraymap:{{#ask: [[{{PAGENAME}}]]|?Tag= |link=none|mainlabel=-}}|, > |DerivedPagesWithCommonTags|{{#ask: > [[Tag::DerivedPagesWithCommonTags]]|?Tag|mainlabel=Pages with tag: > '''''DerivedPagesWithCommonTags'''''}}|}} > > This produces multiple query printouts grouped by Tag in the order in > which the Tags appear on the subject page, e.g., Tag C, Tag A, Tag B. I > have tried adding "|sort=Tag" to either (or both) queries, but this > would not sort the query printout charts on the page. It does produce > duplicates where the object pages have more than one tag in common with > the subject page, but that is expected, given what #arraymap is doing. > > Another option, using ArrayExtension > (http://www.mediawiki.org/wiki/Extension:ArrayExtension), allows sorting > of the query printout charts: > > {{#arraydefine:DerivedPagesWithCommonTags|{{#ask: [[{{PAGENAME}}]]|?Tag= > |link=none|mainlabel=-}} |,|unique}} > {{#arraysort:DerivedPagesWithCommonTags|asc}} > {{#arrayprint:DerivedPagesWithCommonTags|<br/>|@@@@|{{#ask: > [[Tag::@@@@]]|?Tag|mainlabel=Pages with tag '''''@@@@'''''}}}} > > This sorts the query printouts alphabetically (i.e., separate charts > grouped by Tag A, Tag B, Tag C, in that order), but also produces > duplicates, if applicable. > > To help address the duplicates for each option, I added a printout that > lists the tag name and clearly labels the main column of the printout > with the Tag name. > > To suppress duplicates, another option might be to create a new > property, e.g., "Shares Tag with", blank the output, and restrict the > output to the factbox/Browse Properties page: > > {{#arraymap:{{#ask: [[{{PAGENAME}}]]|?Tag= |link=none|mainlabel=-}}|, > |DerivedPagesWithCommonTags|[[Shares Tag > |DerivedPagesWithCommonTags|with::DerivedPagesWithCommonTags| > ]]|}} > > ....but then ones loses the information about which tags are shared, > unless one wanted to make it an n-ary property and get output such as > [[Shares Tag with::DerivedPageName;Tag]]. That's not really necessary > for my purposes, so I haven't worked out exactly how to do that (I > imagine it would involve multiple and/or multidimensional arrays). > > Gregorio, I'm not sure if this is exactly what you're after, but it > sounds like it may be at least close; I hope this helps. > > Again, Patrick, thanks for the inspiration/direction: Very helpful! > > Best, > Alex > -- > Alex M. Hendler > ontolawgy(tm) LLC > http://ontolawgy.com > > > On Thu, 11 Feb 2010 10:50:32 +0300, Patrick Nagel > <ma...@pa...> > wrote: > >> Hi Gregorio, >> >> On 2010-02-11 15:42, Gregorio Hernández Piris wrote: >>> The "pagename" trick could work, but I'm afraid my "Tag" property is >>> a series of values separated by a comma and as someone has already >>> pointed out, that's another problem. >> >> I don't know if this has been proposed, didn't read the whole story: >> You can use the #arraymap parser function (it comes with Semantic >> Forms, see its website on how to use it) to store the tags in the Tag >> property, one at a time. Example: Someone enters the list "Green, >> Blue", and the template with #arraymap call makes [[Tag::Green]] >> [[Tag::Blue]] from it. >> >> That way queries should work as expected, and no LIKE operator is >> needed. >> >> Patrick. >> > > ------------------------------------------------------------------------------ > SOLARIS 10 is the OS for Data Centers - provides features such as > DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 > NOW http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > Semediawiki-user mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-user > _______________________________________________________________________ |