So, this is yet more noodling wishlist stuff I've been thinking about for MediaWiki which I wanted to throw up for discussion.
Here's my problem. Let's say I'm reading a Wikitravel article about Venice because I intend to go there. I want to print out the article or download it to my PDA. Now, a trip to Venice is going to require more than just the Venice city guide. I should also know about the Italian language, the money used in Italy, visa requirements, and perhaps about the region around Venice.
It would be possible to include all that information on the same page, but since there are hundreds of cities in Italy, each needing the same info, it would get unwieldy pretty quickly. For Wikitravel, we keep country-wide info in the country page, phrasebooks in another page, and so on. So, it would be nice if, when I choose to print the [[Venice]] article, the Wikitravel software would suggest that I also print out [[Italy]] and [[Veneto]] (the region Venice is in) and [[Italian phrasebook]], which I could optionally do.
The question is then: how would the software know that these articles are related at all? It could try to follow the links in the article, but those might point to very loosely-related articles (say, there might be some text pointing out that Venice has canals much like [[Amsterdam]]). It also gets redundant saying that if you're in an Italian city, you're in [[Italy]] and you should check out our [[Italian phrasebook]] and by the way [[Italy]] is part of [[Europe]] and...
There are other options, though. Metadata systems often declare relationships between individual items. For example, the <LINK> tag in HTML specifies sibling and parent page relationships. Dublin Core has a "Relation" specifier that can specify "Is Part Of" and "References" relationships, among others.
We have a system for tagging related articles in MediaWiki already -- interlanguage links. What I propose is that this system get expanded to include metadata links to other articles in the same MediaWiki system. For example, I could declare that [[Venice]] is-part-of [[Veneto]], which in turn is-part-of [[Italy]]. I could also point out that [[Italy]] is-related-to the [[Italian phrasebook]].
Now, my automatic suggestion tool only needs to navigate these relationships instead of all the visible links in the page. The related articles could also appear on the Web rendering in the same way interlanguage links do -- so that I don't have to interrupt the prose in the article to give "See also" style links.
I haven't developed this idea out fully, so I don't have a really good syntax suggestion. I think the best I can come up with is something like the interlanguage links, such as:
* [[meta:is-part-of:Veneto]] (for the Venice page) * [[meta:has-part:Venice]] (for the Veneto page) * [[meta:is-part-of:Italy]] (for the Veneto page) * [[meta:related:Italian phrasebook]] (for the Italy page)
These would be kind of abstract, but usable on any MediaWiki system. For example, it'd also work for showing that [[History of Canada]] is somehow a part of the article on [[Canada]]. We could probably just borrow the applicable Dublin Core names (minus stuff about versioning and replacing, which don't seem that applicable for MediaWiki articles).
It would also be nice to have article relationships specific to the MediaWiki installation, like, for Wikitravel:
* [[meta:phrasebook:Italian phrasebook]] * [[meta:country:Italy]] * [[meta:region:Veneto]]
...where each installation could configure how to render the metatags. It might even be possible to fit the interwiki pages into this more general scheme.
Anyways, this is something I'd like to get into doing for MediaWiki, since it's kind of important for us on Wikitravel. Any ideas, comments, precedents, suggestions?
Thanks,
~ESP