Mailing List Archive

Declaring relationships between articles
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]]

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?



Evan Prodromou <>
Wikitravel -
The free, complete, up-to-date and reliable world-wide travel guide