MeatballWiki | RecentChanges | Random Page | Indices | Categories

WikiVirtualData means to look at a wiki as another form of holding data (like a database) and to provide commands to extract and manipulate them (like SQL).

While this may look as an extremely inefficient way to handle data (which is true), it is in fact a kind of optimization, that accepts a performance loss in time and space for increased problem solving capacity. It seems to provide the flexibility and the potential to solve a certain class of hard problems that resists the typical database people problem solving strategies.


The idea of is not entirely new:

But even if we take all the existing features into account, this is only a small fraction of what can be done.

The Basic Virtual Data Pattern

To put this to work, we need a basic pattern to separate text and data. The simplest way is provided by the wiki bullet list markup. So: a line similar to:

   * variable : ....

or as regular expression:

    /^[*]+ \s* ($AllowedWordCharacters+) \s* [:=] \s* (.*) $/

may be considered data. We call it virtual data because it is not clear at the time of writing that such a line is really meant as data or may be used as data. This will only show when some intelligent mechanism can be used to transform this information into something useful.

Reinterpretation of wiki content

So what do in fact is to reinterpret the content of a wiki. There are a many ways to do so and we may do as we think appropriate for a problem.

Let's assume that we have homepages in a wiki that carry the name of their members, contain CategoryHomePage and bulleted mailto information.

We may now interpret this as

Another example is a convention on EmacsWiki. We tell all users to write on the HomePage "I use Emacs." or "I use XEmacs." Then we can list all [Emacs users] using a simple search.


Comparison with classical databases

Disadvantages (compared to classical database):

Advantages (compared to classical database):

Fascinating: For the UniversityWiki, I am looking at ways to store various types of course meta data in the wiki. I am currently using

  {variablename: data}

for short information and


as container for longer texts, like descriptions. The latter has the possibility to include WikiMarkup? in the text. It troubles me, that I am currently using the

as end-of-paragraph token, which is neither intuitive nor obvious. To provide feedback about the true extent of the paragraphs, I am currently rendering it with a border, to show how much text is included. -- DavidSchmitt

If I understand you correctly, you might save a lot of time by downloading one of the free XML databases and just using that as your backend. As far as networked database theory goes, it's all about XML databases. Don't forget to look into XQL. -- SunirShah

So, I just put up a [proposal] to add name-value pairs to MediaWiki articles. The format would be:


I'm particularly interested in this for making part-whole links in WikiTravel. Having text in the WikiTravel:Greenwich_Village article that says that Greenwich Village is a district of Manhattan which is a borough of New York City which happens to be in New York State which is in the Mid-Atlantic region of the United States of America in North America is a bit much. It'd be nicer to just say [[borough=Manhattan]] and let some kind of OutOfLineLinks? --perhaps some kind of breadcrumbing-- do the rest of the heavy-lifting would be easier. Also, a printed version is more readable this way, too. --EvanProdromou

Can't you just link to Manhattan from Greenwich Village, from Manhattan, link to New York City, New York City to New York State, and so on? If you want to force hierarchical ontology then use directories and folders. Now, directories and folders are hard to use, so make the directories and folders editable in text, such as multiply-nested SubPages. Of course, we hate SubPages because the namespace becomes hierarchical for no good reason. Besides, [[Greenwich Village]] should always link to Greenwich Village in any situation. But [[London]] might link to London, Ontario or London, England.

So, maybe something like FacetWiki would help which uses the current context or more precisely specified context when necessary. So, if you are talking about bus routes to London on Manchester, England, it will automatically assume London, England. But if you are talking about flights to London from Toronto, you will have to write [[London, England]]. This may get confusing as you can also write [[London, UK]], but then of course England is in UK and there is only one London in the UK, so the algorithm can unambiguously resolve the namespace. This is a simple tree search algorithm, well known.

Syntax would be simple:

  Place: England

  Description goes here.

  Place: United Kingdom

  Description goes here.

  Alias: United Kingdom

  United Kingdom
  Place: British Isles

  British Isles
  Place: Western Europe

Of course, resolving multiple parents, like western and northern hemispheres is why we love multiple parents. -- SunirShah

See also: WikiFractality and WikiContextuality (WikiVirtualData is needed to handle both).

See also DatabaseWikiFeature (a more restricted, tablular database feature idea)



MeatballWiki | RecentChanges | Random Page | Indices | Categories
Edit text of this page | View other revisions