Net::Z3950::PQF::Node - Abstract class for nodes in a PQF parse tree
$node = new Net::Z3950::PQF::TermNode('unix'); $node->isa("Net::Z3950::PQF::Node") or die "oops";
This module implements the types for the nodes that make up a PQF parse tree. Each such concrete type is a subclass of the abstract base class Net::Z3950::Node, and has a type whose name is of the form Net::Z3950::PQF::somethingNode.
Net::Z3950::Node
Net::Z3950::PQF::
The following node types are defined:
TermNode
Represents an actual query term such as brian, "brian" or "Brian W. Kernighan".
brian
"brian"
"Brian W. Kernighan"
The term is accompanied by zero or more attributes, each of which is a triple represented by a reference to a three-element array. Each such array consists of an attribute set identifier which may be either an OID or a short descriptive string, an integer type, and a value which may be either an integer or a string.
RsetNode
Represents a result-set node, a reference to the name of a prior result set. The result-set name is accompanied by zero or more attributes as above.
AndNode
Represents an AND node with two sub-nodes.
OrNode
Represents an OR node with two sub-nodes.
NotNode
Represents a NOT node with two sub-nodes. In the Z39.50 Type-1 query, and hence in PQF, NOT is a binary AND-NOT operator rather than than a unary negation operator.
ProxNode
Represents a proximity node with two subnodes and five parameters:
exclusion: a boolean indicating whether the condition indicated by the other parameters should be inverted.
distance: an integer indicating the number of units that may separate the fragments identified by the subnodes.
ordered: a boolean indicating whether the elements indicated by the subnodes are constrained to be in the same order as the subnodes themselves.
relation: indicates the relation required on the specified distance in order for the condition to be satisfied.
unit: a short string indicating the units of proximity (word, sentence, etc.)
word
sentence
Except where noted, the methods described below are defined for all of the concrete node types.
$term1 = new Net::Z3950::PQF::TermNode('brian', [ "bib-1", 1, 1003 ]); $term2 = new Net::Z3950::PQF::TermNode('unix', [ "bib-1", 1, 4 ]); $and = new Net::Z3950::PQF::AndNode($term1, $term2);
Creates a new node object of the appropriate type. It is not possible to instantiate the abstract node type, Net::Z3950::PQF::Node, only its concrete subclasses.
Net::Z3950::PQF::Node
The parameters required are different for different node types:
The first parameter is the actual term, and the remainder are attributes, each represented by a triple of [ attribute-set, type, value ].
The two parameters are nodes representing the subtrees.
The seven parameters are, in order: the two nodes representing the subtrees, and the five parameters exclusion, distance, ordered, relation and unit.
$node->render(0);
Renders the contents of the tree rooted at the specified node, indented to a level indicated by the parameter. This output is in a human-readable form that is useful for debugging but probably not much else.
$node->toSimpleServer();
Transforms the contents of the tree rooted at the specified node, returning a correpsonding tree of the Perl structures produced by the Net::Z3950::SimpleServer module and passed as the {RPN} argument to search handlers. This emulation is useful for testing code that expects to receive queries in that format.
This module is part of the Net::Z3950::PQF distribution. The copyright, authorship and licence are all as for the distribution.
To install Net::Z3950::PQF, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::Z3950::PQF
CPAN shell
perl -MCPAN -e shell install Net::Z3950::PQF
For more information on module installation, please visit the detailed CPAN module installation guide.