From: S P. <in...@sk...> - 2007-09-03 00:47:45
|
Peter Simpsons wrote: > ================== > Background information: > ================== > > If there are PAGE A, B, C and D. They have one common "relationship", > which is "child of". > For example, > Page D: [[Child of: Page C]] > Page C: [[Child of: Page B]] > Page B: [[Child of: Page A]] > Page A: [[Child of: ]] (You need double-colon :: in the annotations.) > PS: assuming the user only assigns one parent to one page. > > When the users are viewing Page D, I would to show the following > information: > > Page A> PageB> PageC> Page D Do you know about MediaWiki's special handling of subpages, pages with "/" in the title? See http://www.mediawiki.org/wiki/Subpages. If you enable this feature and create a page named "Page A/Page B/Page C/Page D", it will display a little < Page A | Page B | Page C breadcrumb under its title. I think there are ways in MediaWiki to display alternate page headings and/or hide the actual page title. SMW cannot query for such "meta properties" of MediaWiki pages, so if you still wanted a [[Child of:]] relation you'd have to add it and keep it in sync with the page title. You could develop a utility script to do this. > ================== > My Question: > ================== > Is there such extension already? There are extensions that try to do this for categories. I think http://www.mediawiki.org/wiki/Extension:CategoryBreadcrumb does this. http://www.mediawiki.org/wiki/Extension:CategoryTree displays the whole tree, maybe it can be configured to just show parents. But I don't think either will help you unless you're willing to make your pages into categories. With current SMW, what you're asking for is a repeating query, in pseudo-language it's something like: Get the object of this page's "PropertyX", and continue on to ask for the object of that page's "PropertyX". Repeat until some depth limit. with the added wrinkle that you want to display the results in reverse order. You definitely can't express this with current semantic search (see http://ontoworld.org/wiki/Help:Semantic_search). If you're willing to be explicit, you should be able to issue a query for each hierarchy level using SMW's nested query feature However, I found it didn't work on ontoworld.org's pre-release SMW version. See my attempts at http://ontoworld.org/wiki/Drew_Barrymore The first level is easy, you want to show the current page's Child of relations. <ask>[[{{PAGENAME}}]] [[Child of::*]]</ask> which displays Page C. The next level should be to ask for the object of the "Child of" relation for the set of pages from the previous query. You might hope that a nested query will do that: <ask format="table"><q>[[{{PAGENAME}}]] [[Child of::*]]</q>[[Child of::*]]</ask> but it doesn't work. I'm not sure if it should work: I think the nested query is still selecting Page D, even though it's been configured to display a property that appears as "Page C". Maybe I'm missing something. Using a nested query to get the *objects* of a query works fine. So if you annotate with the inverse "Parent of" property, thus e.g. Page C has [[Parent of::Page D]], then you can issue queries like: <ask>[[parent of::<q>[[parent of::<q>[[{{PAGENAME}}]]</q>]] </q>]] </ask> > If not, where is the proper location or > point I should try to make this work? Are you asking where in code? Dive in to SMW_InlineQueries.php. Try to figure out a syntax for "iterate this query on its results" at the same time as you develop the query code. Maybe SQL extensions and SPARQL variants have good ideas. > Any suggestion? -- =S Page |