From: Bob M. <unc...@gm...> - 2010-03-01 17:27:53
|
While we are on the subject of ontologies, I have a naive question: Say I have some pages set up with a simple chain of "is a" properties (yes I know categories work well for "is a", but there are ontologies with a mix of relationship types, so I'm assuming SMW properties would be used for these). Cheese sandwich is a Sandwich Sandwich is a Picnic food Picnic food is a Food. Lasagne is a Food. I know that I can't do something like {{#ask:[[is a::Food]]}} to get everything that is, by an arbitrary number of steps, a food. So I just started playing around with recursive templates and #show. It doesn't answer the "is a food" question, but it's a step in that direction (I can at least ask if Cheese sandwich is a food or not, using #arraysearch). Usage = Parents of [[Cheese sandwich]] are: {{parents|this=Cheese sandwich|property=Is a}} Template:Parents = <includeonly>{{#arraymap: {{#show:{{{this}}}|?{{{property}}}|link=none }} |, |x |x, {{parents|this=x|property={{{property}}} }} |, }} </includeonly> Outputs: Parents of Cheese sandwich are: Sandwich, Template loop detected: Template:Parents MediaWiki isn't letting me do recursion, which seems a bit unfair - I'm pretty sure I have an adequate termination condition in my template (when #show returns nothing, arraymap will not iterate). I can't seem to find any tricks or MW configuration parameters to allow recursion. Can anyone point me in the right direction? (I realise I'm probably barking up the wrong tree.) many thanks, Bob. -- http://darwintunes.org - a test-tube for cultural evolution http://evolectronica.com - survival of the funkiest http://compare-stuff.com - confused? you will be! http://twitter.com/darwintunes http://twitter.com/bobmaccallum |
From: Bob M. <unc...@gm...> - 2010-03-05 13:52:52
|
Looking at this the other way around, I also get "Template loop detected" Template:Children <includeonly> {{#if: {{{1|}}} | {{#arraymaptemplate:{{#ask: [[is a::{{{1}}}]]|link=none}}|children}} }} </includeonly> (I don't think the #if: is strictly necessary) called by {{children|food}} Why can't MW and SMW treat me like an adult and let me do recursion if I want to? On Mon, Mar 1, 2010 at 5:27 PM, Bob MacCallum <unc...@gm...> wrote: > While we are on the subject of ontologies, I have a naive question: > > Say I have some pages set up with a simple chain of "is a" properties > (yes I know categories work well for "is a", but there are ontologies > with a mix of relationship types, so I'm assuming SMW properties would > be used for these). > > Cheese sandwich is a Sandwich > Sandwich is a Picnic food > Picnic food is a Food. > Lasagne is a Food. > > I know that I can't do something like {{#ask:[[is a::Food]]}} to get > everything that is, by an arbitrary number of steps, a food. So I > just started playing around with recursive templates and #show. It > doesn't answer the "is a food" question, but it's a step in that > direction (I can at least ask if Cheese sandwich is a food or not, > using #arraysearch). > > Usage = Parents of [[Cheese sandwich]] are: {{parents|this=Cheese > sandwich|property=Is a}} > Template:Parents = <includeonly>{{#arraymap: > {{#show:{{{this}}}|?{{{property}}}|link=none }} > |, > |x > |x, {{parents|this=x|property={{{property}}} }} > |, > }} > </includeonly> > > Outputs: Parents of Cheese sandwich are: Sandwich, Template loop > detected: Template:Parents > > MediaWiki isn't letting me do recursion, which seems a bit unfair - > I'm pretty sure I have an adequate termination condition in my > template (when #show returns nothing, arraymap will not iterate). I > can't seem to find any tricks or MW configuration parameters to allow > recursion. > > Can anyone point me in the right direction? (I realise I'm probably > barking up the wrong tree.) > > many thanks, > Bob. > > > > -- > http://darwintunes.org - a test-tube for cultural evolution > http://evolectronica.com - survival of the funkiest > http://compare-stuff.com - confused? you will be! > http://twitter.com/darwintunes > http://twitter.com/bobmaccallum > -- http://darwintunes.org - a test-tube for cultural evolution http://evolectronica.com - survival of the funkiest http://compare-stuff.com - confused? you will be! http://twitter.com/darwintunes http://twitter.com/bobmaccallum |