Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
CQL::Parser(3)	      User Contributed Perl Documentation	CQL::Parser(3)

       CQL::Parser - compiles CQL strings into parse trees of Node subtypes.

	   use CQL::Parser;
	   my $parser =	CQL::Parser->new();
	   my $root = $parser->parse( $cql );

       CQL::Parser provides a mechanism	to parse Common	Query Language (CQL)
       statements. The best description	of CQL comes from the CQL homepage at
       the Library of Congress <>

       CQL is a	formal language	for representing queries to information
       retrieval systems such as web indexes, bibliographic catalogs and
       museum collection information. The CQL design objective is that queries
       be human	readable and human writable, and that the language be
       intuitive while maintaining the expressiveness of more complex

       A CQL statement can be as simple	as a single keyword, or	as complicated
       as a set	of compoenents indicating search indexes, relations,
       relational modifiers, proximity clauses and boolean logic. CQL::Parser
       will parse CQL statements and return the	root node for a	tree of	nodes
       which describes the CQL statement.  This	data structure can then	be
       used by a client	application to analyze the statement, and possibly
       turn it into a query for	a local	repository.

       Each CQL	component in the tree inherits from CQL::Node and can be one
       of the following: CQL::AndNode, CQL::NotNode, CQL::OrNode,
       CQL::ProxNode, CQL::TermNode, CQL::PrefixNode. See the documentation
       for those modules for their respective APIs.

       Here are	some examples of CQL statements:

       o   george

       o   dc.creator=george

       o   dc.creator="George Clinton"

       o   clinton and funk

       o   clinton and parliament and funk

       o   (clinton or bootsy) and funk

       o   dc.creator="clinton"	and"1976"

   parse( $query )
       Pass in a CQL query and you'll get back the root	node for the CQL parse
       tree.  If the CQL is invalid an exception will be thrown.

   parseSafe( $query )
       Pass in a CQL query and you'll get back the root	node for the CQL parse
       tree.  If the CQL is invalid, an	error code from	the SRU	Diagnostics
       List will be returned.

       CQL has an XML representation which you can generate from a CQL parse
       tree. Just call the toXCQL() method on the root node you	get back from
       a call to parse().

       As mentioned above, a CQL syntax	error will result in an	exception
       being thrown. So	if you have any	doubts about the CQL that you are
       parsing you should wrap the call	to parse() in an eval block, and check
       $@ afterwards to	make sure everything went ok.

	   eval	{
	       my $node	= $parser->parse( $cql );
	   if (	$@ ) {
	       print "uhoh, exception $@\n";

       If you'd	like to	see blow by blow details while your CQL	is being
       parsed set $CQL::DEBUG equal to 1, and you will get details on STDERR.
       This is useful if the parse tree	is incorrect and you want to locate
       where things are	going wrong. Hopefully this won't happen, but if it
       does please notify the author.

       o   toYourEngineHere() please feel free to add functionality and	send
	   in patches!

       CQL::Parser is essentially a Perl port of Mike Taylor's cql-java
       package	Mike and IndexData were	kind
       enough to allow the author to write this	port, and to make it available
       under the terms of the Artistic License.	Thanks Mike!

       The CQL::Lexer package relies heavily on	Stevan Little's	excellent
       String::Tokenizer. Thanks Stevan!

       CQL::Parser was developed as a component	of the Ockham project, which
       is funded by the	National Science Foundation. See
       for more	information about Ockham.

       o   Ed Summers -	ehs at pobox dot com

       o   Brian Cassidy - bricas at cpan dot org

       o   Wilbert Hengst - W.Hengst at	uva dot	nl

       Copyright 2004-2009 by Ed Summers

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.32.1			  2013-10-02			CQL::Parser(3)


Want to link to this manual page? Use this URL:

home | help