Topic maps, trait for a syncing a hierarchical tm repository
use TM; use base qw(TM); use Class::Trait ('TM::MapSphere', 'TM::Synchronizable::MLDBM' => { exclude => [ "sync_in", "sync_out" ] }, 'TM::Synchronizable::MapSphere');
This trait adds \*(C`sync_in\*(C' and \*(C`sync_out\*(C' functionality to a map sphere. The point here is that embedded child maps are also synced out or in.
$ms->sync_in ($path) A whole subtree of the map repository can be sync'ed in, i.e. synchronized with contents in an associated resource. If this method is triggered with a particular path, then the map there will be (a) synced in, (b) queried for sub-maps and (c) these sub-maps will be instantiated. Recursively, these submaps will be sync'ed in, etc. All these sub maps will be mounted under this branch of the tree. When a map is instantiated, its implementation package will be extracted from the parent map using a \*(C`implementation\*(C' characteristic. The resource \s-1URL\s0 will be determined from one of the subject indicators, the base \s-1URI\s0 will be determined from the subject address of the map topic. If any of these are missing, this particular sub-map is ignored. Example: Let us assume that a map has a \*(C`baseuri\*(C' \*(C`http://whatever/\*(C' and a resource \s-1URL\s0 \*(C`http://example.org/here.xtm\*(C'. It is a materialized map using the \s-1XTM\s0 driver. If this map is mounted into a root map under \*(C`/foo/\*(C', then the entry will take the form (using AsTMa= 2.0 as notation): foo isa topicmap ~ http://example.org/here.xtm = http://whatever/ implementation: TM::Materialized::XTM @@@ \s-1TODO:\s0 no path @@@@?
$ms->sync_out ([ $path ], [ $depth ]) This method syncs out not only the root map sphere object (at least if the resource \*(C`mtime\*(C' is earlier that any change on the map sphere). The method also consults the mount tab to find child maps and will sync them out as well. The optional \*(C`path\*(C' parameter controls which subtree should be synced out. It defaults to \*(C`/\*(C'. The optional $depth controls how deep the subtree should be followed downwards. Default is \*(C`MAX_DEPTH\*(C' (see the source).
Robert Barta, <[email protected]>
Copyright (C) 200[67] by Robert Barta
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.