Hi all,

we managed to try this snapshot :
ftp://download.openlinksw.com/support/vos/virtuoso-opensource-20090701.tar.gz

We have some issues with the REGEX function in SPARQL context. Here is
a example:

-----------------------------------

import java.sql.DriverManager;

import virtuoso.jena.driver.VirtGraph;
import virtuoso.jena.driver.VirtuosoQueryExecutionFactory;

import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.ResultSet;

public class Main2 {

    public static void main(String[] args) throws Exception {
        testVirtGraph("foobar", "oo");
        testVirtGraph("foobar", "ooo");
        testVirtGraph("foobar", ".oo");
        testJDBC("foobar", "oo");
        testJDBC("foobar", "ooo");
        testJDBC("foobar", ".oo");
    }

    public static void testVirtGraph(String value, String regex) {
        try {
            String query = String.format("SELECT DISTINCT * WHERE { ?s
 ?p  ?o FILTER regex('%s', '%s') }", value, regex);
            System.out.println(query);
            VirtGraph graph = new VirtGraph(
                    "jdbc:virtuoso://localhost:1111", "dba", "dba");
            QueryExecution qe =
VirtuosoQueryExecutionFactory.create(query, graph);
            ResultSet rs = qe.execSelect();
            System.out.println("testVirtGraph: " + rs.next());
        } catch (Exception e) {
            e.printStackTrace(System.out);
        }
        System.out.flush();
    }

    public static void testJDBC(String value, String regex) {
        String query = String.format("select DB.DBA.RDF_REGEX('%s',
'%s')", value, regex);
        System.out.println(query);
        try {
            java.sql.Connection conn = DriverManager.getConnection(
                    "jdbc:virtuoso://localhost:1111", "dba", "dba");
            java.sql.ResultSet result =
conn.createStatement().executeQuery(query);
            result.next();
            System.out.println("testJDBC: " + result.getString(1));
        } catch (Exception e) {
            e.printStackTrace(System.out);
        }
        System.out.flush();
    }

}

-----------------------------------

Here is what is printed:

-----------------------------------

SELECT DISTINCT * WHERE { ?s  ?p  ?o FILTER regex('foobar', 'oo') }
testVirtGraph: ( ?p =
<http://www.openlinksw.com/schemas/virtrdf#qmfShortOfLongTmpl> ) ( ?s
= <http://www.openlinksw.com/virtrdf-data-formats#sql-varchar-uri-fn>
) ( ?o = <  ^{custom-verbatim-1}^_INVERSE (__id2in (^{tree}^))> ) ->
[Root]
SELECT DISTINCT * WHERE { ?s  ?p  ?o FILTER regex('foobar', 'ooo') }
java.util.NoSuchElementException: class
com.hp.hpl.jena.sparql.engine.ResultSetStream.next
        at 
com.hp.hpl.jena.sparql.engine.ResultSetStream.nextSolution(ResultSetStream.java:88)
        at 
com.hp.hpl.jena.sparql.engine.ResultSetStream.next(ResultSetStream.java:98)
        at fr.bnf.spar.init.Main2.testVirtGraph(Main2.java:30)
        at fr.bnf.spar.init.Main2.main(Main2.java:15)
SELECT DISTINCT * WHERE { ?s  ?p  ?o FILTER regex('foobar', '.oo') }
java.util.NoSuchElementException: class
com.hp.hpl.jena.sparql.engine.ResultSetStream.next
        at 
com.hp.hpl.jena.sparql.engine.ResultSetStream.nextSolution(ResultSetStream.java:88)
        at 
com.hp.hpl.jena.sparql.engine.ResultSetStream.next(ResultSetStream.java:98)
        at fr.bnf.spar.init.Main2.testVirtGraph(Main2.java:30)
        at fr.bnf.spar.init.Main2.main(Main2.java:16)
select DB.DBA.RDF_REGEX('foobar', 'oo')
testJDBC: 1
select DB.DBA.RDF_REGEX('foobar', 'ooo')
testJDBC: 0
select DB.DBA.RDF_REGEX('foobar', '.oo')
testJDBC: 1

-----------------------------------

Regards,

Alexandre.

Reply via email to