Previous Topic

Next Topic

Perl

The following are two sample Perl programs that allow you to issue iTQLTM commands. The first uses Inline Java, the second uses SOAP Lite.

For the first example, ensure you have the following installed:

Ensure that the Inline::Java test suite operates correctly and that KowariTM is running.

Note - In the program below, replace tucanadirectory, ApacheLog4Jdirectory and mysite.com (highlighted in bold), with the appropriate settings for your local environment.

use CGI;
use Inline (
Java => <<'END',

// Java 2 standard packages
import java.sql.*;

// Kowari packages
import org.kowari.itql.ItqlInterpreterBean;
import org.kowari.query.Answer;

// Logging
import org.apache.log4j.*;

/**
* iTQL Perl Bean. <p>
*
* This class provides a simple interface for the execution of iTQL queries
* via Perl using Inline Java 4.0
* </p>
*
* @created 2004-March-01
*
* @author <a href="http://staff.PIsoftware.com/tate/">Tate Jones</a>
*
* @version $Revision: 1.5 $
*
* @modified $Date: 2004/12/22 05:01:58 $ by $Author: newmana $
*
* @copyright &copy;2001 <a href="http://www.pisoftware.com/">Tucana Technologies, Inc.</a>
*
* @licence <a href="http://www.mozilla.org/MPL/MPL-1.1.html">Mozilla Public License v1.1</a>
*/

public class iTQLPerlBean {

/** iTQL Bean used to query Kowari */
private ItqlInterpreterBean interpreter;

/** Answer object to hold the result of an iTQL query */
Answer answer = null;

/**
* Creates a iTQL interpreter bean for queries.
*
*/

public iTQLPerlBean() {

// Initialise logging
BasicConfigurator.configure();

// Set logging level
Logger.getRootLogger().
setLevel( Level.WARN );

// Create the iTQL Bean to use for queries
interpreter = new ItqlInterpreterBean();

}


/**
* Executes an iTQL query.
*
* @param query String containing the iTQL query
* @return the Answer containing the result of the query.
*/

public void execute(String query) {

try {

// close any previous answer
this.closeAnswer();

// Do the query
answer = interpreter.executeQuery(query);

// move to the first row
if ( answer != null ) {
answer.beforeFirst();
}

}
catch (Exception e) {

System.err.println("iTQLInterpreterBean Error : \n");
e.printStackTrace(System.err);
}

}

/**
* Return an answer row as a Perl Array.
*
* @param answer Answer
* @return String arrary for conversion to a perl array
**/

public String[] getRow() {

String columns[] = null;

try {
if ( answer != null && answer.next() ) {

// initialise the number of columns
int numberOfColumns = answer.getNumberOfVariables();
columns = new String[numberOfColumns];

// populate the array with the column values
for ( int column=0; column < numberOfColumns; column++ ) {
columns[column] = answer.getObject(column).toString();
}
}
}
catch (Exception e) {

System.err.println("iTQLInterpreterBean fetchRow error : \n");
e.printStackTrace(System.err);
}

return columns;

}

/**
* Close the answer to reclaim resources.
*
*/

public void closeAnswer() {

try {

// close the answer
if ( answer != null ) {
answer.close();
}

}
catch (Exception e) {

System.err.println("iTQLInterpreterBean Error : \n");
e.printStackTrace(System.err);
}

}


}

END
DIRECTORY => '/tmp',
CLASSPATH =>
'/tucanadirectory/driver-2.0.jar:/ApacheLog4Jdirectory/log4j-1.2.8.jar',
) ;

# Create a iTQL session bean for executing queries

my $bean = new iTQLPerlBean();

# Execute the query via the bean

$bean->execute('select $s $p $o from <rmi://mysite.com/server1#> where $s $p $o ;');

# Print out the results until empty

while ( my $cols = $bean->getRow() ) {
print($cols->[0] . " ");
print($cols->[1] . " ");
print($cols->[2] . "\n");
}

# Close answer resources

$bean->closeAnswer();

As stated previously, this second example uses SOAP Lite.

#!usr/bin/perl
# -*- perl-indent-level: 2 -*-
#
# SoapModule.pm
#
# $Id: 746.htm,v 1.5 2004/12/22 05:01:58 newmana Exp $
#

use 5.006;
use warnings;
use SOAP::Lite;
1;

my $serverEnd =
"http://mysite.com:8080/webservices/services/ItqlBeanService";

my $iTQLcommand = "select \$subject \$predicate \$object from
<rmi://mysite.com/server1#example> where \$subject \$predicate \$object ;";

print soapProcess($serverEnd, $iTQLcommand);

sub soapProcess {
my ($serverSoapEndpoint, $iTQLcommand) = @_;
my $resultString = SOAP::Lite
-> uri($serverSoapEndpoint)
-> proxy($serverSoapEndpoint)
-> executeQueryToString($iTQLcommand)
-> result;
return $resultString;
}

See Also

Integration Tutorials

HTTP Resolver and MP3 Content Handler Tutorial

Jena

JavaServer Pages Tag Library

JRDF Tutorial

Latest News

Kowari 1.1.0 Pre-release 1 Released

Kowari 1.0.5 Released

Kowari 1.0.4.1 Released

Kowari 1.0.4 Released

DAWG Evaluates iTQL

Kowari article in XML.com

Kowari mentioned on XML.com

Kowari 1.0.3 Released

Kowari Lite Introduced

Kowari 1.0.2 Released

Kowari 1.0.1 Released

View all news items


Open Source logo Tucana Technologies Logo SourceForge.net Logo

© 2001-2004 Tucana Technologies, Inc. Some rights reserved.