Hi Lourens,

This issue has not been resolved in the latest version, I have asked 
development to schedule to look into this. In terms of work arounds I am not 
sure how easily this can be done given the issue is only with case sensitive 
matches. Virtuoso does have its own bif:contains function for Free Text search, 
as detailed at:

        
http://docs.openlinksw.com/virtuoso/rdfsparqlrulefulltext.html#rdfsparqlrulefulltext

Which may be of use if you have not seen it already ?

Best Regards
Hugh Williams
Professional Services
OpenLink Software
Web: http://www.openlinksw.com
Support: http://support.openlinksw.com
Forums: http://boards.openlinksw.com/support
Twitter: http://twitter.com/OpenLink

On 15 Dec 2009, at 10:25, Lourens van der Meij wrote:

> 
> The problem with regex "i" not working through JDBC is still giving me 
> problems. In the long run I hope
> we will be able to stop using JDBC, but now we really need the functionality.
> Could it be that the problem has been solved in a recent version?
> I do notice that the problem does not occur when accessing Virtuoso through 
> VSP.
> 
> If the problem has not been solved could you point me to a work-around? I am 
> not fluent in
> the internals of Virtuoso, but I suspect that it should be possible to define 
> a stored procedure
> that does the sparql call and that I could call that procedure through jdbc?
> I seem to remember that it should even be possible to call a user defined 
> stored procedure from within sparql.
> Then, would it be possible to define such a procedure that does the 
> regex(?l,String,"i") without the bug?
> 
> 
> Thanks,
> 
> Lourens
> 
> Hugh Williams wrote:
>> Hi Lourens,
>> 
>> We have been able to recreate this issue in-house with the sample program 
>> you provided and are looking into it.  I shall report back when an update is 
>> available ...
>> 
>> Best Regards
>> Hugh Williams
>> Professional Services
>> OpenLink Software
>> Web: http://www.openlinksw.com
>> Support: http://support.openlinksw.com
>> Forums: http://boards.openlinksw.com/support
>> Twitter: http://twitter.com/OpenLink
>> 
>> On 7 Nov 2009, at 19:11, Lourens van der Meij wrote:
>> 
>>> 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");
>>>     }
>>> }
>>> 
>>> ------------------------------------------------------------------------------
>>>  
>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>>> trial. Simplify your report design, integration and deployment - and focus 
>>> on
>>> what you do best, core application coding. Discover what's new with
>>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>> _______________________________________________
>>> Virtuoso-users mailing list
>>> Virtuoso-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/virtuoso-users
>> 
> 


Reply via email to