# -*- cperl -*-
=head1 NAME
Biblio::Thesaurus internals
=head1 ABSTRACT
This POD documents the internals of the thesaurus object.
=head1 DESCRIPTION
The object itself is a reference to an hash table. We will call
properties to each key. This way, the C<name> property is accessible
using C<$obj->{name}>.
Follows a section for each property accessible in the object.
=head2 version
The C<version> property is the Biblio::Thesaurus version for the
module which created the object. This property value is the same of
the current module version unless the object was created using the
C<thesaurusRetrieve> constructor.
=head2 baselang
This property holds the name of the default language (relation name)
for the thesaurus. If it is not defined, then this property returns an
interrogation mark (C<?>).
=head2 name
When showing the thesaurus without a search term, the module shows the
top for the thesaurus. This special term is stored in this
attribute. Unless it is defined, the default top term is C<_top_>.
=head2 inverses
This property is a reference to an hash table. Keys are relation
identifiers, and values are the respective inverse. Note that B<it is
required> that each key is too a value, and vice-versa. This means
than when defining C<A> is inverse of C<B> it should be added to the
hash:
( 'A' => 'B', 'B' => 'A' )
=head2 externals
To define external relations (relations not to terms) it should be
added to the C<externals> property one more entry. This property is a
reference to an hash table where keys are the external relation
identifiers and values are ignored (use the natural 1 value).
=head2 languages
As in the C<externals> property, this one stores identifiers for
language pseudo-relations. This property is a reference to an hash
table where keys are the language identifiers and values are ignored
(use the natural 1 value).
=head2 descriptions
This property holds a reference to an hash table which maps relation
identifiers to relation descriptions. On multi-language thesaurus,
descriptions in the base language are defined normally:
$obj->{descriptions}{RT} = "related term";
Descriptions for different languages use a relation identifier, a
space and a language identifier as in:
$obj->{descriptions}{'RT PT'} = "termo relacionado";
=head2 defined
This property holds a reference to a big hash table. It maps
normalized terms on their non normalized version (how they appear in
the ISO file). On multi-language thesaurus, it maps non-base language
terms to the normalized base language terms.
=head2 thesaurus
This is not really the name of the property. For each language
identifier the object contains a property with that name that holds
the thesaurus in that specific language as it follows:
=cut