Hi,
I am having the following problem:
Using the latest 5.0.12 version I do:
sparql insert into graph <gr> { <http://id> <http://www.w3.org/2004/02/skos/core#prefLabel> 'test eng1'@nl .}
sparql PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?value from <gr>
WHERE {<http://id> skos:prefLabel ?value. FILTER regex(str(?value),"test","i")}

through the jdbc4 driver from java and I get no results when expecting them.

The query without the "i" argument does give the correct result.

I get the correct result with the "i" option when testing through isql and the 8890/sparql connection.

I add the java code illustrating this problem:

On my installation the first query gives 1 result.
The second query gives 0 results.

Could you tell me what is wrong?

Thanks,

Lourens

==============TestRegex.java========================
   import java.sql.*;
   import virtuoso.jdbc4.*;

   public class TestRegex {
       public static void main(String argv[]) {
           try {
String urlDB = "jdbc:virtuoso://localhost:1111/charset=UTF-8";
               Class.forName("virtuoso.jdbc4.Driver");
Connection conn = DriverManager.getConnection(urlDB,"dba","dba");

               Statement st = conn.createStatement();
               st.execute("sparql clear graph <gr>");
st.execute("sparql insert into graph <gr> { <http://id> <http://www.w3.org/2004/02/skos/core#prefLabel> 'test eng1'@nl .}"); System.out.println("##### exec query regex without i###############"); String query1 = "sparql PREFIX skos: <http://www.w3.org/2004/02/skos/core#> \nSELECT ?value from <gr> \nWHERE {<http://id> skos:prefLabel ?value. FILTER regex(str(?value),\"test\")}";
               System.out.println("Running query:\n"+query1);
               execQuery(st,query1);
System.out.println("##### exec query regex with i###################"); String query2 = "sparql PREFIX skos: <http://www.w3.org/2004/02/skos/core#> \nSELECT ?value from <gr> \nWHERE {<http://id> skos:prefLabel ?value. FILTER regex(str(?value),\"test\",\"i\")}";
               System.out.println("Running query:\n"+query2);
               execQuery(st,query2);
               conn.close();
           } catch (Exception e) {
               System.out.println(e);
System.out.println("===========================================================");
               e.printStackTrace();
           }
       }


public static void execQuery(Statement st, String query) throws SQLException
     {
         ResultSet rs;
         ResultSetMetaData rsmd;

         rs = st.executeQuery(query);
         rsmd = rs.getMetaData();
         if (rsmd == null) System.out.println("getMetaData() == NULL");
         int results = 0;
         while(rs.next()) {
             Object o;

             System.out.println(" ============= < ROW > ============ ");
             for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                 results++;
                 String s = rs.getString(i);
                 o = rs.getObject(i);
                 if (rs.wasNull())
                     System.out.println(i+" ==> NULL");
                 else
                 {
                     if (o instanceof VirtuosoExtendedString)
                     {
VirtuosoExtendedString vs = (VirtuosoExtendedString)o; System.out.print("VirtuosoExtendedString: [iri="+vs.iriType+"]");
                     }
                     else if (o instanceof VirtuosoRdfBox)
                     {
                         VirtuosoRdfBox rb = (VirtuosoRdfBox)o;
System.out.print("VirtuosoRdfBox:[rdf="+rb+"; type="+rb.getType()+";lang="+rb.getLang()+"]");
                     }
                     else
                     {
                         System.out.print("      |");
                         System.out.print(""+o.getClass()+"|");
                     }
                     System.out.println(" ==> ["+ o + "]");
                 }
             }
         }
         System.out.println("got "+results + " results");
     }
}

Reply via email to