NAME

Lingua::Thesaurus::Term - parent class for thesaurus terms

SYNOPSIS

my $term = $thesaurus->fetch_term($term_string);

# methods for specific relations
my $scope_note = $term->SN;
my @synonyms   = $term->UF;

# exploring several relations at once
foreach my $pair ($term->related(qw/NT RT/)) {
  my ($rel_type, $item) = @$pair;
  printf "  %s(%s) = %s\n", $rel_type->description, $rel_type->rel_id, $item;
}

# transitive search
foreach my $quadruple ($term->transitively_related(qw/NT/)) {
  my ($rel_type, $related_term, $through_term, $level) = @$quadruple;
  printf "  %s($level): %s (through %s)\n", 
     $rel_type->rel_id,
     $level,
     $related_term->string,
     $through_term->string;
}

DESCRIPTION

Objects of this class encapsulate terms in a thesaurus. They possess methods for navigating through relations, reaching other terms or external data.

METHODS

new

my $term = Lingua::Thesaurus::Term->new(
  storage => $storage, # an object playing role Lingua::Thesaurus::Storage
  id      => $id,      # unique id for this term
  string  => $string,  # the actual term string
);

Creates a new term object; not likely to be called from client code, because such objects are created automatically from the thesaurus through "search_terms" in Lingua::Thesaurus and "fetch_term" in Lingua::Thesaurus methods.

my @pairs = $term->related(@relation_ids);

Returns a list of items related to the current term, through one or several @relation_ids. Each returned item is a pair, where the first element is an instance of Lingua::Thesaurus::RelType, and the second element is either a plain string (when the relation type is "external"), or another term (when the relation type is "internal").

NT, BT, etc.

my @narrower_terms = $term->NT;
my $broader_term   = $term->BT;
...

Specific navigation methods, such as NT, BT, etc., depend on the relation types declared in the thesaurus; once those relations are known, a subclass of Lingua::Thesaurus::Term is automatically created, with the appropriate additional methods.

Internally these methods are implemented of course by calling the "related" method described above; but instead or returning a list of pairs, they just return related items (since the relation type is explicitly requested in the method call, it would be useless to return it again as a result). The result is either a list or a single related item, depending on the calling context.

my @quadruples = $term->transitively_related(@relation_ids);

Returns a list of items directly or indirectly related to the current term, through one or several @relation_ids. Each returned item is a quadruple, where the first two elements are as in the ""related" method, and the two remaining elements are

  • the last intermediate term through wich this relation was reached

  • the level of transitive steps