The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

XTM::Virtual - Topic Map management, Virtual (topic induced) maps

SYNOPSIS

  use XTM::Virtual;
  my $tm = new XTM (tie => new XTM::Virtual (expr => '/m-some-map'));

DESCRIPTION

!!!This description has to be improved!!!

This is a tie wrapper for topic induced topic maps. The idea is that there is a global tree of topic maps (maybe distributed over several topic map servers).

Every topic can---in principle---have a complete map as 'refinement'. So, for instance, a topic 't-internet' in a particular map can have a topic map attached dealing with details about the Internet.

In this sense we induce some topic map hierarchy, which can be easily flexed by organising maps via Topic Map algebraic definitions. The hierarchy only helps us to organize the maps physically.

Topic Map Algebra

When loading topic maps (regardless their format), following operations can be performed:

joining

Here two topic maps are joined by identifying topics in each of the maps to be synonymous. The mapping is done by another map.

scoping

Given a particular topic map, the scope filters out only those topics and associations for this very scope.

versioning

As topic maps may exist in different version it is sometimes practical to select a particular version.

???????

The syntax for an topic map expression is as follows:

  expr    -> tm-url                     # primitive
  expr    -> expr '[' expr ']' expr     # join
  expr    -> expr [ 'v' version ]       # versioning
                  [ '@' host    ]       # remote server
                  [ '|' scope   ]       # scoping
  version -> natural [ '.' natural ]
  scope   -> I<SGML topic>-identifier
  host    -> I<some machine name or IP address>
  natural -> I<some number greater equal 0>

The tm-url has the form

 tm://server-name/map-id1/map-id2/....

INTERFACE

Global variables

urlbase this path is used as a basis for all maps loaded from the file system (or via HTTP/FTP). This should point to the bootstrap map.
tmbase this path is used as a basis for all maps loaded from the tm:// name space.

Constructor

The constructor expects a hash with the following fields:

expr denotes a topic map algebraic expression.

Examples:

  # relative to this server
  $vtm = new XTM::Virtual (expr => '/m-test');
  # absolute
  $vtm = new XTM::Virtual (expr => 'tm://se-namod/map-topic1/map-topic2/');
  # directly the server knowledge map
  $vtm = new XTM::Virtual (expr => '/');
  # some other server's knowledge map
  $vtm = new XTM::Virtual (expr => 'tm://se-some-server/');

Methods

sync_in

This method will cause the map to be loaded and/or generated, depending on the complexity of the expression. The XTM::Memory object will be returned.

sync_out
staleness returns the number of seconds the loaded map is old relative to the external source. If the last modification of the source cannot be determined, then the staleness is always 0.

AUTHOR INFORMATION

Copyright 2001, 2002, Robert Barta <rho@telecoma.net>, All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. http://www.perl.com/perl/misc/Artistic.html