Biblio-Thesaurus
view release on metacpan or search on metacpan
lib/Biblio/Thesaurus.pm view on Meta::CPAN
$output = $obj->downtr(\%handler);
$output = $obj->downtr(\%handler,'term', ... );
$obj->appendThesaurus("iso-file");
$obj->appendThesaurus($tobj);
$obj->tc('term', 'relation1', 'relation2');
$obj->depth_first('term', 2, "NT", "UF")
$latex = $obj->toTex( ...)
$xml = $obj->toXml( ...)
=head1 ABSTRACT
This module provides transparent methods to maintain Thesaurus files.
The module uses a subset from ISO 2788 which defines some standard
features to be found on thesaurus files. The module also supports
multilingual thesaurus and some extensions to the ISOs standard.
=head1 DESCRIPTION
A Thesaurus is a classification structure. We can see it as a graph
where nodes are terms and the vertices are relations between terms.
This module provides transparent methods to maintain Thesaurus files.
The module uses a subset from ISO 2788 which defines some standard
features to be found on thesaurus files. This ISO includes a set of
relations that can be seen as standard but, this program can use user
defined ones. So, it can be used on ISO or not ISO thesaurus files.
=head1 File Structure
Thesaurus used with this module are standard ASCII documents. This
file can contain processing instructions, comments or term
definitions. The instructions area is used to define new relations and
mathematical properties between them.
We can see the file with this structure:
______________
| |
| HEADER | --> Can contain, only, processing instructions,
|______________| comment or empty lines.
| |
| Def Term 1 | --> Each term definition should be separated
| | from each other with an empty line.
| Def Term 2 |
| |
| ..... |
| |
| Def Term n |
|______________|
Comments can appear on any line. Meanwhile, the comment character
(B<#>) should be the first character on the line (with no spaces
before). Comments line span to the end of the line (until the first
carriage return).
Processing instructions lines, like comments, should start with the
percent sign (B<%>). We describe these instructions later on this
document.
Terms definitions can't contain any empty line because they are used
to separate definitions from each other. On the first line of term
definition record should appear the defined term. Next lines defines
relations with other terms. The first characters should be an
abbreviation of the relation (on upper case) and spaces. Then, should
appear a comma separated list of terms.
There can be more than one line with the same relation. Thesaurus module will
concatenate the lists. If you want to continue a list on the next line you
can repeat the relation term of leave some spaces between the start of the line
and the terms list.
Here is an example:
Animal
NT cat, dog, cow
fish, ant
NT camel
BT Life being
cat
BT Animal
SN domestic animal to be kicked when
anything bad occurs.
There can be defined a special term (C<_top_>). It should be
used when you want a top tree for thesaurus navigation. So,
we normally define the C<_top_> term with the more interesting
terms to be navigated.
The B<ISO> subset used are:
=over 4
=item B<TT> - Top Term
The broadest term we can define about the current term.
=item B<NT> - Narrower Term
Terms more specific than current term.
=item B<BT> - Broader Term
More generic terms than current term.
=item B<USE> - Synonym
Another chances when finding a Synonym.
=item B<UF> - Quasi-Synonym
Terms that are no synonyms of current term but can be used,
sometimes with that meaning.
=item B<RT> - Related Term
Related term that can't be inserted on any other category.
=item B<SN> - Scope Note
Text. Note of context of the current term. Use for definitions or
comments about the scope you are using that term.
=back
=head2 Processing Instructions
Processing instructions, as said before, are written on a line starting
with the percent sign. Current commands are:
=over 4
=item B<top>
When presenting a thesaurus, we need a term, to know where to start.
Normally, we want the thesaurus to have some kind of top level, where
to start navigating. This command specifies that term, the term that
should be used when no term is specified.
Example:
%top Contents
Contents
NT Biography ...
RT ...
=item B<enc>oding
This command defines the encoding used in the thesaurus file.
Example:
%enc utf8
=item B<inv>erse
This command defines the mathematic inverse of the relation. That
is, if you define C<inverse A B> and you know that C<foo> is
related by C<A> with C<bar>, then, C<bar> is related by C<B>
with C<foo>.
Example:
%inv BT NT
%inverse UF USE
=item B<desc>ription
This command defines a description for some relation class. These
descriptions are used when outputting thesaurus on HTML.
Example:
%desc SN Note of Scope
%description IOF Instance of
If you are constructing a multilingual thesaurus, you will want to translate
the relation class description. To do this, you should use the C<description>
command with the language in from of it:
%desc[PT] SN Nota de Contexto
%description[PT] IOF Instancia de
=item B<ext>ernals
This defines classes that does not relate terms but, instead, relate a term
with some text (a scope note, an url, etc.). This can be used like this:
( run in 1.306 second using v1.01-cache-2.11-cpan-ff9377addf4 )