The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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